Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

butoff avatar butoff 33 Точки

Инстанциране на нов клас в същия клас. Кога и защо?

От упражнението за създаване на Web Sever 

Някой може ли да разясни, защо се ползва този начин на записване. Авторът така го е записал и Кенов така го записа.

Създава се инстанция и тогава се вика нейния метод Run(), вместо да се извика директно от Main.

public class Launcher : IRunnable
    {
        public static void Main()
        {
            new Launcher().Run();
        }

        public void Run()
        {
            var mainApplication = new GameStoreApp();
            mainApplication.InitializeDatabase();

            var appRouteConfig = new AppRouteConfig();
            mainApplication.Configure(appRouteConfig);

            var webServer = new WebServer(1337, appRouteConfig);

            webServer.Run();
        }
    }

И друг въпрос - защо се слага интерфейс на стартиращия клас (този клас с Main метода)?

Изглежда излишно.

1
C# Web Development Basics
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

ако не е irunnable https://aspnetboilerplate.com/api-docs/html/T_Abp_Threading_IRunnable.htm няма да можеш да контролираш ето това, а останалото е  от design patterns и extensibility ако ти се наложи да смениш нещо като стартираш апп-а ще го смениш само в метода. а и реално нещата които са в метода нямат място в main,ако някои реши да пипа там и изтрие нещо или го промени ще стане страшно. main-a ти е просто мястото а достъп.

2
butoff avatar butoff 33 Точки

За интерфейса  добре, да речем, че е добра практика зад всеки клас да има интерфейс.

 Въпреки, че пръв път виждам Program (Startup, Launcher) да наследява интерфейс.

Каква е причината да не ползваме следния запис?

public class Launcher
    {        
        public static void Main()
        {
            Run();
        }

        public static void Run()
        {
            IApplication app = new MainApplication();

            IAppRouteConfig routeConfig = new AppRouteConfig();
            app.Start(routeConfig);

            WebServer webServer = new WebServer(1337, routeConfig);
            webServer.Run();
        }
    }

 

 

0
Sanity avatar Sanity Trainer 194 Точки

Идеята на Web Server-а и Framework-а, които ще построяваме през курса, са да мимикрират държавния Framework на технологията (ASP.NET).

В ASP.NET Core, принципно се използва статичен Builder Method, който се извиква в Main метода, връщайки Host обект, който се Run-ва. https://docs.microsoft.com/en-us/aspnet/core/fundamentals/startup?view=aspnetcore-2.0

Не е въпрос на Pattern а до максимално приближение до това как трябва да изглежда на края. Ако искате можете да го рефакторирате. Въпроса е, че най-вероятно няма да сте консистентни със Server-а който се създава по време на лекциите. Принципно няма проблем за такива структурни промени, стига да не повлиаят на поведението на Server-а.

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.