Podstawy ASP.NET Core – część 1
Podstawy aplikacji ASP.NET Core – Main
Klasa Program.cs w aplikacji webowej w ASP.NET Core wygląda mniej więcej tak:
1 2 3 4 5 6 7 8 9 10 11 |
public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run(); } |
jak widzimy przy wykorzystaniu WebHostBuilder-a tworzymy aplikację, która to hostuje naszą aplikację web-ową. W .NET Core nie mam innego wyjścia.
Teraz po krótce przejdę przez poszczególne linie
- linia 4 – wybiera Kestrel-a jako nasz serwer.
- linia 5 – ustawia ścieżkę dla głównego folderu zawierającego kontent aplikacji jak na przykład pliki statyczne.
- linia 6 – przeprowadza konfigurację oraz integrację z serwerem IIS.
- linia 7 – wskazuje jaka klasa ma zostać załadowana jako Startup.
- linia 8 – buduje naszego hosta, a linia 10 uruchamia go.
Kestrel – server
Kestrel to niewielki lekki cross-platformowy server http. Choć można go wykorzystać do pracy bezpośrednio z dostępem z zewnątrz, nie jest to jednak zalecane. Ze względów bezpieczeństwa zalecanym rozwiązaniem jest wykorzystanie serwera http takiego jak IIS czy Apache, jako server reverse proxy. Kestrel jako produkt stosunkowo dość młody nie jest jeszcze w pełni zabezpieczony przed atakami. Więcej o Kestrel-u możemy przeczytać tutaj.
Jako alternatywę dla Kestrel-a możemy wykorzystać WebListener-a. Jednak wiąże się z tym ograniczenie wykorzystania tylko i wyłącznie Windowsa jako systemu, na którym aplikacja zostanie uruchomiona. WebListener w przeciwieństwie do Kestrel-a nie posiada integracji z IIS-em i musi być uruchamiany bezpośrednio. Jest on dobrą alternatywą, jeśli nie chcemy lub nie możemy zainstalować IIS-a na docelowym systemie bazowym. O WebListener-e możemy poczytać tutaj.
Integracja z IIS-em
Miało być multi-platformowo a tutaj o IIS-ie, czyli windowsowym serwerze http. To chyba nie tak miało być. I nie do końca tak jest, integracja z IIS-em tylko ułatwia pracę z tym serwerem. Bez tego byli byśmy w stanie zrobić to samo konfigurując IIS-a manualnie. Wykorzystanie integracji powoduje załadowanie do IIS-a ASP.NET Core Modul (ANCM), który to odpowiedzialny jest za takie rzeczy jak uruchomienie aplikacji przy pierwszym zapytaniu. Umożliwia on również restart aplikacji po crash-u. ANCM podpina się pod pipeline IIS-owy i przekierowuje zapytanie do Kestrel-a, jest to jedyny serwer, który umożliwia taką integrację. Więcej o ASP.NET Core Module możemy przeczytać tutaj.
CDN
W 2 odsłonie przedstawię czym jest klasa startupowa oraz kilka nie wykorzystanych wcześniej metod związanych z WebHostBuilder-em.