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.

Architect Modern Web Applications with ASP.NET Core and Azure eBook cover thumbnail.

"... 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.

eShopOnWeb

Rysunek 2–1. eShopOnWeb

Aplikacja referencyjna

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