Udostępnij za pośrednictwem


Blazor modele hostingu aplikacji

Napiwek

Ta zawartość jest fragmentem książki eBook Blazor dla deweloperów formularzy internetowych platformy ASP NET dla platformy Azure, dostępnym na platformie .NET Docs lub jako bezpłatny plik PDF do pobrania, który można odczytać w trybie offline.

Blazor-for-ASP-NET-Web-Forms-Developers eBook cover thumbnail.

Blazor aplikacje mogą być hostowane na jeden z następujących sposobów:

  • Po stronie klienta w przeglądarce w systemie WebAssembly.
  • Po stronie serwera w aplikacji ASP.NET Core.

BlazorWebAssembly Aplikacje

BlazorWebAssembly aplikacje są wykonywane bezpośrednio w przeglądarce w środowisku uruchomieniowym .NET opartym WebAssemblyna platformie .NET. BlazorWebAssembly aplikacje działają w podobny sposób do platform JavaScript frontonu, takich jak Angular lub React. Jednak zamiast pisać język JavaScript, piszesz język C#. Środowisko uruchomieniowe platformy .NET jest pobierane z aplikacją wraz z zestawem aplikacji i wszelkimi wymaganymi zależnościami. Nie są wymagane żadne wtyczki ani rozszerzenia przeglądarki.

Pobrane zestawy są normalnymi zestawami platformy .NET, tak jak w każdej innej aplikacji .NET. Ponieważ środowisko uruchomieniowe obsługuje platformę .NET Standard, możesz używać istniejących bibliotek platformy .NET Standard z aplikacją BlazorWebAssembly . Jednak te zestawy będą nadal wykonywane w piaskownicy zabezpieczeń przeglądarki. Niektóre funkcje mogą zgłaszać błąd PlatformNotSupportedException, taki jak próba uzyskania dostępu do systemu plików lub otwarcie dowolnych połączeń sieciowych.

Po załadowaniu aplikacji środowisko uruchomieniowe platformy .NET jest uruchamiane i wskazywane na zestaw aplikacji. Logika uruchamiania aplikacji jest uruchamiana, a składniki główne są renderowane. Blazor oblicza aktualizacje interfejsu użytkownika na podstawie renderowanych danych wyjściowych ze składników. Aktualizacje MODELU DOM są następnie stosowane.

Blazor WebAssembly

BlazorWebAssembly aplikacje działają wyłącznie po stronie klienta. Takie aplikacje można wdrażać w statycznych rozwiązaniach hostingu witryn, takich jak GitHub Pages lub Hosting statycznej witryny internetowej platformy Azure. Platforma .NET nie jest w ogóle wymagana na serwerze. Bezpośrednie łączenie z częściami aplikacji zwykle wymaga rozwiązania routingu na serwerze. Rozwiązanie routingu przekierowuje żądania do katalogu głównego aplikacji. Na przykład to przekierowanie można obsłużyć przy użyciu reguł ponownego zapisywania adresów URL w usługach IIS.

Aby uzyskać wszystkie korzyści wynikające z tworzenia Blazor aplikacji internetowych platformy .NET w pełnym stosie, hostuj aplikację BlazorWebAssembly przy użyciu platformy ASP.NET Core. Korzystając z platformy .NET zarówno na kliencie, jak i serwerze, można łatwo udostępniać kod i kompilować aplikację przy użyciu jednego spójnego zestawu języków, struktur i narzędzi. Blazor Udostępnia wygodne szablony do konfigurowania rozwiązania, które zawiera zarówno aplikację BlazorWebAssembly , jak i projekt hosta platformy ASP.NET Core. Po utworzeniu rozwiązania skompilowane pliki statyczne z Blazor aplikacji są hostowane przez aplikację ASP.NET Core z już skonfigurowanym routingiem rezerwowym.

Blazor Aplikacje serwera

Przypomnij sobie z dyskusji na temat Blazor architektury , że Blazor składniki renderują dane wyjściowe do pośredniej abstrakcji o nazwie RenderTree. Następnie Blazor struktura porównuje wyrenderowane strukturę z elementami, które zostały wcześniej renderowane. Różnice są stosowane do modelu DOM. Blazor składniki są oddzielone od sposobu stosowania renderowanych danych wyjściowych. W związku z tym same składniki nie muszą działać w tym samym procesie co proces aktualizowania interfejsu użytkownika. W rzeczywistości nie muszą nawet działać na tej samej maszynie.

W Blazor obszarze Aplikacje serwera składniki są uruchamiane na serwerze zamiast po stronie klienta w przeglądarce. Zdarzenia interfejsu użytkownika, które występują w przeglądarce, są wysyłane do serwera za pośrednictwem połączenia w czasie rzeczywistym. Zdarzenia są wysyłane do odpowiednich wystąpień składników. Składniki są renderowane, a obliczona różnica interfejsu użytkownika jest serializowana i wysyłana do przeglądarki, w której jest stosowana do modelu DOM.

Blazor Server

Blazor Model hostingu serwera może wydawać się znany, jeśli użyto ASP.NET AJAX i kontrolkiUpdatePanel. Kontrolka UpdatePanel obsługuje stosowanie częściowych aktualizacji strony w odpowiedzi na wyzwalanie zdarzeń na stronie. Po wyzwoleniu żąda UpdatePanel częściowej aktualizacji, a następnie stosuje ją bez konieczności odświeżania strony. Stan interfejsu użytkownika jest zarządzany przy użyciu polecenia ViewState. Blazor Aplikacje serwera są nieco inne niż aplikacja wymaga aktywnego połączenia z klientem. Ponadto cały stan interfejsu użytkownika jest utrzymywany na serwerze. Oprócz tych różnic dwa modele są koncepcyjnie podobne.

Jak wybrać odpowiedni Blazor model hostingu

Zgodnie z opisem w dokumentacji modelu hostingu Blazor różne Blazor modele hostingu mają różne kompromisy.

Model hostingu BlazorWebAssembly ma następujące korzyści:

  • Nie ma zależności po stronie serwera platformy .NET. Aplikacja działa w pełni po pobraniu do klienta.
  • Zasoby i możliwości klienta są w pełni używane.
  • Praca jest odciążona z serwera do klienta.
  • Do hostowania aplikacji nie jest wymagany serwer internetowy ASP.NET Core. Scenariusze wdrażania bezserwerowego są możliwe (na przykład obsługa aplikacji z sieci CDN).

Wady modelu hostingu BlazorWebAssembly to:

  • Możliwości przeglądarki ograniczają aplikację.
  • Wymagany jest sprzęt klienta i oprogramowanie (na przykład WebAssembly obsługa).
  • Rozmiar pobierania jest większy, a ładowanie aplikacji trwa dłużej.
  • Obsługa środowiska uruchomieniowego i narzędzi platformy .NET jest mniej dojrzała. Istnieją na przykład ograniczenia dotyczące obsługi i debugowania platformy .NET Standard .

Z drugiej strony model hostingu Blazor serwera oferuje następujące korzyści:

  • Rozmiar pobierania jest znacznie mniejszy niż aplikacja po stronie klienta, a aplikacja ładuje się znacznie szybciej.
  • Aplikacja w pełni wykorzystuje możliwości serwera, w tym korzystanie z dowolnych interfejsów API zgodnych z platformą .NET.
  • Platforma .NET na serwerze służy do uruchamiania aplikacji, więc istniejące narzędzia platformy .NET, takie jak debugowanie, działają zgodnie z oczekiwaniami.
  • Klienci cienki są obsługiwani. Na przykład aplikacje po stronie serwera działają z przeglądarkami, które nie obsługują WebAssembly urządzeń z ograniczonymi zasobami.
  • Baza kodu .NET/C# aplikacji, w tym kod składnika aplikacji, nie jest obsługiwana dla klientów.

Wady modelu hostingu Blazor serwera to:

  • Większe opóźnienie interfejsu użytkownika. Każda interakcja użytkownika obejmuje przeskok sieciowy.
  • Obsługa trybu offline nie jest dostępna. Jeśli połączenie klienta zakończy się niepowodzeniem, aplikacja przestanie działać.
  • Skalowalność jest trudna dla aplikacji z wieloma użytkownikami. Serwer musi zarządzać wieloma połączeniami klienta i obsługiwać stan klienta.
  • Do obsługi aplikacji jest wymagany serwer ASP.NET Core. Scenariusze wdrażania bezserwerowego nie są możliwe. Na przykład nie można obsłużyć aplikacji z sieci CDN.

Poprzednia lista kompromisów może być zastraszająca, ale model hostingu można zmienić później. Niezależnie od wybranego modelu hostingu Blazor model składników jest taki sam. Zasadniczo te same składniki mogą być używane z jednym z modeli hostingu. Kod aplikacji nie zmienia się; jednak dobrym rozwiązaniem jest wprowadzenie abstrakcji, dzięki czemu składniki pozostają niezależne od modelu. Abstrakcje umożliwiają aplikacji łatwiejsze wdrażanie innego modelu hostingu.

Wdrażanie aplikacji

ASP.NET aplikacje Web Forms są zwykle hostowane w usługach IIS na maszynie lub klastrze systemu Windows Server. Blazor aplikacje mogą również wykonywać następujące czynności:

  • Być hostowane w usługach IIS jako pliki statyczne lub jako aplikacja ASP.NET Core.
  • Wykorzystanie elastyczności ASP.NET Core do hostowania na różnych platformach i w infrastrukturze serwerów. Możesz na przykład hostować aplikację Blazor przy użyciu serwera Nginx lub Apache w systemie Linux. Aby uzyskać więcej informacji na temat publikowania i wdrażania Blazor aplikacji, zobacz dokumentację Blazordotyczącą hostingu i wdrażania .

W następnej sekcji przyjrzymy się, jak są konfigurowane projekty dla BlazorWebAssembly aplikacji i Blazor serwerów.