Volba mezi tradičními webovými aplikacemi a jednostrákovými aplikacemi (SPA)

Tip

Tento obsah je výňatek z eBooku, architekta moderních webových aplikací s ASP.NET Core a Azure, který je k dispozici na webu .NET Docs nebo jako bezplatný soubor PDF ke stažení, který si můžete přečíst offline.

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

"Atwoodův zákon: Každá aplikace, která může být napsána v JavaScriptu, bude nakonec napsána v JavaScriptu."
- Jeff Atwood

Dnes existují dva obecné přístupy k vytváření webových aplikací: tradiční webové aplikace, které provádějí většinu aplikační logiky na serveru, a jednostrákové aplikace (SPA), které provádějí většinu logiky uživatelského rozhraní ve webovém prohlížeči, komunikují s webovým serverem primárně pomocí webových rozhraní API. Hybridní přístup je také možný, nejjednodušší je hostovat jednu nebo více bohatých dílčích aplikací podobných SPA v rámci větší tradiční webové aplikace.

Použití tradičních webových aplikací v případech:

  • Požadavky na straně klienta vaší aplikace jsou jednoduché nebo dokonce jen pro čtení.

  • Vaše aplikace musí fungovat v prohlížečích bez podpory JavaScriptu.

  • Vaše aplikace je veřejně přístupná a přináší výhody zjišťování a referenčních seznamů vyhledávacího webu.

Spa použijte, když:

  • Vaše aplikace musí zpřístupnit bohaté uživatelské rozhraní s mnoha funkcemi.

  • Váš tým je obeznámen s JavaScriptem, TypeScriptem nebo BlazorWebAssembly vývojem.

  • Vaše aplikace už musí zveřejnit rozhraní API pro jiné (interní nebo veřejné) klienty.

Kromě toho architektury SPA vyžadují větší znalosti architektury a zabezpečení. Dochází k větší četnosti změn kvůli častým aktualizacím a novým klientským architekturám než tradičním webovým aplikacím. Konfigurace automatizovaných procesů sestavení a nasazení a využití možností nasazení, jako jsou kontejnery, může být u aplikací SPA obtížnější než u tradičních webových aplikací.

Vylepšení uživatelského prostředí, které umožňuje přístup SPA, musí být vyhodnocena proti těmto aspektům.

Blazor

ASP.NET Core obsahuje model pro vytváření bohatých, interaktivních a kompozovatelných uživatelských rozhraní označovaných jako Blazor. Blazor Na straně serveru můžou vývojáři vytvářet uživatelské rozhraní s C# a Razorem na serveru a aby se uživatelské rozhraní interaktivně připojilo k prohlížeči v reálném čase pomocí trvalého připojení SignalR. BlazorWebAssembly zavádí další možnost pro Blazor aplikace, což jim umožňuje spouštět v prohlížeči pomocí WebAssembly. Vzhledem k tomu, že je to skutečný kód .NET spuštěný na WebAssembly, můžete znovu použít kód a knihovny ze serverových částí aplikace.

Blazor poskytuje novou, třetí možnost zvážit při vyhodnocování, zda se má sestavit čistě serverově vykreslená webová aplikace nebo SPA. Pomocí , Blazorbez nutnosti významného vývoje JavaScriptu, můžete vytvářet bohaté chování na straně klienta podobné spa. Blazor aplikace můžou volat rozhraní API k vyžádání dat nebo provádění operací na straně serveru. V případě potřeby můžou spolupracovat s JavaScriptem, aby mohli využívat javascriptové knihovny a architektury.

Zvažte vytvoření webové aplikace s následujícími možnostmi Blazor :

  • Vaše aplikace musí zveřejnit bohaté uživatelské rozhraní.

  • Váš tým je pohodlnější s vývojem pro .NET než s vývojem v JavaScriptu nebo TypeScriptu.

Pokud máte existující aplikaci webových formulářů, kterou zvažujete migraci na .NET Core nebo nejnovější .NET, můžete si projít bezplatnou elektronickou knihu, aby vývojáři webových formulářů zjistili, Blazor jestli je vhodné ji migrovat na Blazor.

Další informace naleznete v Blazortématu Začínáme s Blazor.

Kdy zvolit tradiční webové aplikace

Následující část obsahuje podrobnější vysvětlení dříve uvedených důvodů pro výběr tradičních webových aplikací.

Vaše aplikace má jednoduché, pravděpodobně jen pro čtení, požadavky na straně klienta

Mnoho webových aplikací primárně využívá jen pro čtení většinu uživatelů. Aplikace jen pro čtení (nebo většinou pro čtení) jsou mnohem jednodušší než aplikace, které udržují a manipulují s velkým objemem stavu. Například vyhledávací web se může skládat z jednoho vstupního bodu s textovým polem a druhou stránkou pro zobrazení výsledků hledání. Anonymní uživatelé můžou snadno vytvářet požadavky a logika na straně klienta je málo potřebná. Podobně se veřejná aplikace systému správy obsahu nebo blogu nebo systému správy obsahu obvykle skládá hlavně z obsahu s malým chováním na straně klienta. Takové aplikace jsou snadno vytvořené jako tradiční serverové webové aplikace, které provádějí logiku na webovém serveru a vykreslují HTML, které se mají zobrazit v prohlížeči. Skutečnost, že každá jedinečná stránka webu má svou vlastní adresu URL, kterou můžou vytvořit záložky a indexovat vyhledávací weby (ve výchozím nastavení bez nutnosti přidávat tuto funkci jako samostatnou funkci aplikace), je v takových scénářích také jasnou výhodou.

Vaše aplikace musí fungovat v prohlížečích bez podpory JavaScriptu.

Webové aplikace, které potřebují fungovat v prohlížečích s omezenou podporou nebo bez podpory JavaScriptu, by měly být napsané pomocí tradičních pracovních postupů webové aplikace (nebo se alespoň můžou vrátit k takovému chování). SPO vyžadují javascript na straně klienta, aby fungovaly; pokud není k dispozici, nejsou vhodné služby SPA.

Váš tým nezná techniky vývoje JavaScriptu nebo TypeScriptu.

Pokud váš tým nezná JavaScript nebo TypeScript, ale je obeznámen s vývojem webových aplikací na straně serveru, bude pravděpodobně schopen dodávat tradiční webovou aplikaci rychleji než SPA. Pokud není cílem programovat služby SPA nebo se vyžaduje uživatelské prostředí poskytované spa, tradiční webové aplikace jsou pro týmy, které už jsou obeznámené s jejich vytvářením, produktivnější volbou.

Kdy zvolit služby SPA

V následující části najdete podrobnější vysvětlení, kdy zvolit styl jednostrákové aplikace pro vývoj pro webovou aplikaci.

Vaše aplikace musí zveřejnit bohaté uživatelské rozhraní s mnoha funkcemi.

SPO můžou podporovat bohaté funkce na straně klienta, které nevyžadují opětovné načtení stránky, protože uživatelé provádějí akce nebo přechází mezi oblastmi aplikace. Služby SPA můžou načítat rychleji, načítat data na pozadí a jednotlivé akce uživatelů reagují rychleji, protože opakované načítání celé stránky je vzácné. SpA můžou podporovat přírůstkové aktualizace, ukládat částečně dokončené formuláře nebo dokumenty, aniž by uživatel musel kliknout na tlačítko pro odeslání formuláře. SpA můžou podporovat bohaté chování na straně klienta, například přetažení myší, mnohem snadněji než tradiční aplikace. Aktualizace modelu na straně klienta, které se nakonec synchronizují zpět na server po opětovném navázání připojení, je možné navrhnout tak, aby běžely v odpojeném režimu. Zvolte aplikaci ve stylu SPA, pokud požadavky vaší aplikace obsahují bohaté funkce, které překračují rámec typické nabídky formulářů HTML.

Správci služeb (SPA) často potřebují implementovat funkce integrované do tradičních webových aplikací, jako je zobrazení smysluplné adresy URL na panelu Adresa, které odráží aktuální operaci (a umožní uživatelům vytvořit záložku nebo přímý odkaz na tuto adresu URL, aby se k ní mohli vrátit). Správci služeb by také měli uživatelům umožnit používat tlačítka zpět a vpřed prohlížeče s výsledky, které je nepřekvapí.

Váš tým je obeznámen s vývojem JavaScriptu nebo TypeScriptu.

Psaní spA vyžaduje znalost JavaScriptu a/nebo TypeScriptu a technik programování na straně klienta a knihoven. Váš tým by měl být příslušný při psaní moderního JavaScriptu pomocí architektury SPA, jako je Angular.

Reference – architektury SPA

Vaše aplikace už musí zveřejnit rozhraní API pro jiné (interní nebo veřejné) klienty.

Pokud již podporujete webové rozhraní API pro použití jinými klienty, může vyžadovat menší úsilí při vytvoření implementace SPA, která využívá tato rozhraní API, a ne reprodukovat logiku ve formuláři na straně serveru. Služby SPA využívají rozsáhlá webová rozhraní API k dotazování a aktualizaci dat při interakci uživatelů s aplikací.

Kdy zvolit Blazor

V následující části najdete podrobnější vysvětlení, kdy zvolit Blazor webovou aplikaci.

Vaše aplikace musí zveřejnit bohaté uživatelské rozhraní.

Stejně jako javascriptové služby SPO Blazor můžou aplikace podporovat bohaté chování klientů bez opětovného načítání stránky. Tyto aplikace reagují na uživatele a načítají jenom data (nebo HTML) potřebná k reakci na danou interakci uživatele. Správně navržené aplikace na straně serveru je možné nakonfigurovat tak, aby běžely jako aplikace na straně BlazorBlazor klienta s minimálními změnami, jakmile je tato funkce podporovaná.

Váš tým je pohodlnější s vývojem pro .NET než s vývojem v JavaScriptu nebo TypeScriptu.

Mnoho vývojářů je produktivnější s .NET a Razorem než s jazyky na straně klienta, jako je JavaScript nebo TypeScript. Vzhledem k tomu, že serverová strana aplikace je již vyvinuta s .NET, pomocí zajištění Blazor , že každý vývojář .NET v týmu dokáže pochopit a potenciálně vytvořit chování front-endu aplikace.

Tabulka rozhodnutí

Následující tabulka rozhodnutí shrnuje některé základní faktory, které je potřeba vzít v úvahu při výběru mezi tradiční webovou aplikací, SPA nebo Blazor aplikací.

Koeficient Tradiční webová aplikace Jednostránková aplikace Blazor App
Znalost požadovaného týmu v JavaScriptu nebo TypeScriptu Minimální Povinní účastníci Minimální
Podpora prohlížečů bez skriptování Podporuje se Nepodporuje se Podporuje se
Minimální chování aplikace na straně klienta Dobře vhodné Zbytečná Životaschopné
Bohaté a složité požadavky uživatelského rozhraní Omezené Dobře vhodné Dobře vhodné

Ostatní úvahy

Tradiční webové aplikace mají tendenci být jednodušší a mají lepší kritéria optimalizace vyhledávacího webu (SEO) než aplikace SPA. Roboti vyhledávacího webu můžou snadno využívat obsah z tradičních aplikací, zatímco podpora indexování spA nemusí být omezená nebo chybí. Pokud vaše aplikace využívá veřejné zjišťování vyhledávacími weby, často je to důležité.

Kromě toho, pokud jste nestavili nástroj pro správu obsahu spa, může vyžadovat, aby vývojáři provedli změny. Tradiční webové aplikace jsou často pro jiné vývojáře jednodušší dělat změny, protože většina obsahu je jednoduše HTML a nemusí vyžadovat proces sestavení pro zobrazení náhledu nebo dokonce nasazení. Pokud je pravděpodobné, že nebudou muset vývojáři ve vaší organizaci udržovat obsah aplikace, může být lepší volbou tradiční webová aplikace.

Služba SPA svítí, když má aplikace složité interaktivní formuláře nebo jiné funkce interakce uživatelů. U složitých aplikací, které vyžadují použití ověřování, a proto nejsou přístupné pavouci veřejného vyhledávacího webu, jsou služba SPA skvělou v mnoha případech.