Charakterystyka nowoczesnych aplikacji internetowych
Napiwek
Ta zawartość jest fragmentem książki eBook, architekta nowoczesnych aplikacji internetowych z platformą ASP.NET Core i platformą Azure, dostępnym na platformie .NET Docs lub jako bezpłatny plik PDF do pobrania, który można odczytać w trybie offline.
"... z odpowiednim designem funkcje są tanie. Takie podejście jest żmudne, ale nadal się powiedzie".
- Dennis Ritchie
Nowoczesne aplikacje internetowe mają wyższe oczekiwania użytkowników i większe wymagania niż kiedykolwiek wcześniej. Oczekuje się, że dzisiejsze aplikacje internetowe będą dostępne 24/7 z dowolnego miejsca na świecie i można ich używać z praktycznie dowolnego urządzenia lub rozmiaru ekranu. Aplikacje internetowe muszą być bezpieczne, elastyczne i skalowalne, aby sprostać wzrostom zapotrzebowania. Coraz częściej złożone scenariusze powinny być obsługiwane przez rozbudowane środowiska użytkownika oparte na kliencie przy użyciu języka JavaScript i wydajne komunikowanie się za pośrednictwem internetowych interfejsów API.
ASP.NET Core jest zoptymalizowany pod kątem nowoczesnych aplikacji internetowych i scenariuszy hostingu w chmurze. Jego modularna konstrukcja umożliwia aplikacjom zależeć tylko od tych funkcji, które rzeczywiście używają, zwiększając bezpieczeństwo aplikacji i wydajność, jednocześnie zmniejszając wymagania dotyczące zasobów hostingu.
Aplikacja referencyjna: eShopOnWeb
Te wskazówki obejmują aplikację referencyjną eShopOnWeb, która demonstruje niektóre zasady i zalecenia. Aplikacja jest prostym sklepem internetowym, który obsługuje przeglądanie w katalogu koszul, kubków do kawy i innych elementów marketingowych. Aplikacja referencyjna jest celowo prosta, aby ułatwić zrozumienie.
Rysunek 2–1. eShopOnWeb
Aplikacja referencyjna
- eShopOnWeb
https://github.com/dotnet/eShopOnWeb
Hostowane w chmurze i skalowalne
ASP.NET Core jest zoptymalizowana pod kątem chmury (chmura publiczna, chmura prywatna, dowolna chmura), ponieważ jest to mała ilość pamięci i wysoka przepływność. Mniejszy ślad aplikacji ASP.NET Core oznacza, że można hostować więcej z nich na tym samym sprzęcie i płacić za mniej zasobów podczas korzystania z usług hostingu w chmurze z płatnością zgodnie z rzeczywistym użyciem. Wyższa przepływność oznacza, że można obsługiwać większej liczby klientów z aplikacji, biorąc pod uwagę ten sam sprzęt, co dodatkowo zmniejsza konieczność inwestowania w serwery i infrastrukturę hostingu.
Wiele platform.
ASP.NET Core to międzyplatformowa platforma i może działać w systemach Linux, macOS i Windows. Ta funkcja otwiera wiele nowych opcji tworzenia i wdrażania aplikacji utworzonych przy użyciu platformy ASP.NET Core. Kontenery platformy Docker — zarówno systemy Linux, jak i Windows — mogą hostować aplikacje ASP.NET Core, co pozwala im korzystać z zalet kontenerów i mikrousług.
Modułowe i luźno połączone
Pakiety NuGet są obywatelami pierwszej klasy na platformie .NET Core, a aplikacje ASP.NET Core składają się z wielu bibliotek za pośrednictwem narzędzia NuGet. Ten stopień szczegółowości funkcjonalności pomaga zapewnić, że aplikacje zależą tylko od wymaganych przez nie funkcji i wdrażają je, zmniejszając ich rozmiar i obszar powierzchni luk w zabezpieczeniach.
ASP.NET Core obsługuje również w pełni wstrzykiwanie zależności zarówno wewnętrznie, jak i na poziomie aplikacji. Interfejsy mogą mieć wiele implementacji, które można zamienić zgodnie z potrzebami. Wstrzykiwanie zależności umożliwia aplikacjom luźne parowanie do tych interfejsów, a nie określonych implementacji, co ułatwia ich rozszerzanie, konserwację i testowanie.
Łatwe testowanie przy użyciu testów automatycznych
aplikacje ASP.NET Core obsługują testowanie jednostkowe, a ich luźne sprzęganie i obsługa iniekcji zależności ułatwia zamianę problemów dotyczących infrastruktury z fałszywymi implementacjami do celów testowych. ASP.NET Core jest również dostarczany z serwerem TestServer, który może służyć do hostowania aplikacji w pamięci. Testy funkcjonalne mogą następnie wysyłać żądania do tego serwera w pamięci, wykonując pełny stos aplikacji (w tym oprogramowanie pośredniczące, routing, powiązanie modelu, filtry itp.) i odbierać odpowiedź, przez ułamek czasu, jaki zajęłoby hostowanie aplikacji na rzeczywistym serwerze i wykonywanie żądań za pośrednictwem warstwy sieciowej. Te testy są szczególnie łatwe do pisania i cenne dla interfejsów API, które są coraz ważniejsze w nowoczesnych aplikacjach internetowych.
Obsługiwane zachowania tradycyjne i SPA
Tradycyjne aplikacje internetowe miały niewielkie zachowanie po stronie klienta, ale zamiast tego polegały na serwerze dla wszystkich nawigacji, zapytań i aktualizacji aplikacji może być konieczne. Każda nowa operacja wykonywana przez użytkownika zostanie przetłumaczona na nowe żądanie internetowe, a wynik to ponowne załadowanie pełnej strony w przeglądarce użytkownika końcowego. Klasyczne struktury Model-View-Controller (MVC) zwykle są zgodne z tym podejściem, z każdym nowym żądaniem odpowiadającym innej akcji kontrolera, która z kolei będzie działać z modelem i zwracać widok. Niektóre poszczególne operacje na danej stronie mogą zostać rozszerzone o funkcje AJAX (Asynchroniczne javaScript i XML), ale ogólna architektura aplikacji używała wielu różnych widoków MVC i punktów końcowych adresu URL. Ponadto ASP.NET Core MVC obsługuje również strony Razor— prostszy sposób organizowania stron w stylu MVC.
Natomiast aplikacje jednostronicowe (SPA) obejmują bardzo mało dynamicznie generowanych obciążeń stron po stronie serwera (jeśli istnieją). Wiele umów SPA jest inicjowanych w statycznym pliku HTML, który ładuje niezbędne biblioteki JavaScript do uruchamiania i uruchamiania aplikacji. Te aplikacje zapewniają duże wykorzystanie internetowych interfejsów API dla swoich potrzeb dotyczących danych i mogą zapewnić znacznie bogatsze środowiska użytkownika. BlazorWebAssembly Zapewnia metodę tworzenia umów SPA przy użyciu kodu platformy .NET, który następnie jest uruchamiany w przeglądarce klienta.
Wiele aplikacji internetowych obejmuje kombinację tradycyjnego zachowania aplikacji internetowej (zazwyczaj dla zawartości) i spA (na potrzeby interakcyjności). platforma ASP.NET Core obsługuje zarówno interfejsy MVC (widoki lub oparte na stronach), jak i internetowe interfejsy API w tej samej aplikacji, korzystając z tego samego zestawu narzędzi i bazowych bibliotek platformy.
Proste programowanie i wdrażanie
aplikacje ASP.NET Core można pisać przy użyciu prostych edytorów tekstu i interfejsów wiersza polecenia lub w pełni funkcjonalnych środowisk programistycznych, takich jak Visual Studio. Aplikacje monolityczne są zwykle wdrażane w jednym punkcie końcowym. Wdrożenia można łatwo zautomatyzować w ramach potoku ciągłej integracji i ciągłego dostarczania (CD). Oprócz tradycyjnych narzędzi ciągłej integracji/ciągłego wdrażania platforma Microsoft Azure ma zintegrowaną obsługę repozytoriów git i może automatycznie wdrażać aktualizacje w miarę ich tworzenia w określonej gałęzi lub tagu git. Usługa Azure DevOps udostępnia w pełni funkcjonalny potok kompilacji i wdrażania ciągłej integracji/ciągłego wdrażania, a funkcja GitHub Actions udostępnia inną opcję dla projektów hostowanych w tym miejscu.
Tradycyjne ASP.NET i formularze internetowe
Oprócz ASP.NET Core tradycyjne ASP.NET 4.x nadal są niezawodną i niezawodną platformą do tworzenia aplikacji internetowych. ASP.NET obsługuje modele programowania interfejsu MVC i internetowego interfejsu API, a także formularze web forms, które doskonale nadają się do rozbudowanego tworzenia aplikacji opartych na stronach i oferuje bogaty ekosystem składników innych firm. Platforma Microsoft Azure ma doskonałą wieloletnią obsługę aplikacji ASP.NET 4.x, a wielu deweloperów zna tę platformę.
Blazor
Blazor Jest dołączony do ASP.NET Core 3.0 i nowszych. Udostępnia on nowy mechanizm tworzenia zaawansowanych interaktywnych aplikacji klienckich internetowych przy użyciu platformy Razor, C# i ASP.NET Core. Oferuje on inne rozwiązanie do rozważenia podczas tworzenia nowoczesnych aplikacji internetowych. Istnieją dwie wersje Blazor , które należy wziąć pod uwagę: po stronie serwera i po stronie klienta.
Po stronie Blazor serwera wydano w 2019 r. z ASP.NET Core 3.0. Jak wskazuje jego nazwa, działa na serwerze, renderowanie zmian w dokumencie klienta z powrotem do przeglądarki za pośrednictwem sieci. Strona Blazor serwera zapewnia zaawansowane środowisko klienta bez konieczności obsługi języka JavaScript po stronie klienta i bez konieczności ładowania oddzielnych stron dla każdej interakcji ze stroną klienta. Zmiany załadowanej strony są wymagane z serwera i przetwarzane przez serwer, a następnie wysyłane z powrotem do klienta przy użyciu usługi SignalR.
Po stronie Blazorklienta , wydany w 2020 r., eliminuje konieczność renderowania zmian na serwerze. Zamiast tego używa go do uruchamiania kodu platformy WebAssembly .NET w kliencie. Klient nadal może wykonywać wywołania interfejsu API do serwera w razie potrzeby w celu żądania danych, ale wszystkie zachowania po stronie klienta są uruchamiane w kliencie za pośrednictwem programu WebAssembly, który jest już obsługiwany przez wszystkie główne przeglądarki i jest tylko biblioteką Języka JavaScript.
Odwołania — nowoczesne aplikacje internetowe
- Wprowadzenie do ASP.NET Core
https://learn.microsoft.com/aspnet/core/- Testowanie w programie ASP.NET Core
https://learn.microsoft.com/aspnet/core/testing/- Blazor -Rozpocząć
https://blazor.net/docs/get-started.html