Blazor-Interaktivität

Blazor ermöglicht es, ein Portal in einem von drei Interaktivitätsmodi auszusenden – Server, WebAssembly oder Auto. Der Modus wählt, wie interaktive Komponenten laufen (über eine SignalR-Verbindung auf dem Server, als kompilierte .NET im Browser oder beides) und entscheidet, was in deinem Projektlayout generiert wird. Power Portals Pro läuft unter allen dreien Systemen korrekt; Die Unterschiede liegen in der Bereitstellungsform und Projektverdrahtung, nicht in den Framework-Funktionen.

Die drei Modi

Server

Interaktive Komponenten werden auf dem Server ausgeführt. Jeder verbundene Benutzer hält eine offene SignalR-Verbindung zurück zum Host, und jedes UI-Ereignis wird zum Server rundgekehrt.

Kompromisse:

WebAssembly

Interaktive Komponenten laufen im Browser als kompilierter .NET-Code. Der Job des Servers schrumpft auf die Bereitstellung statischer Dateien und der HTTP-API-Endpunkte des Frameworks unter /api/auth/* und /api/*.

Kompromisse:

Auto

Die erste Farbe kommt vom Server (sodass der Nutzer Inhalte sofort sieht) und die Laufzeit wechselt transparent zu WebAssembly, sobald das Client-Bundle den Download abgeschlossen hat. Auto = zuerst Server, danach WebAssembly, auf denselben Routen.

Kompromisse:

Tipp

Diese Dokumentationsseite läuft im Auto-Modus. Öffne beim ersten Laden den Netzwerk-Tab der Browser-Entwicklungstools, und du siehst, dass zuerst das servergerenderte HTML ankommt, dann der WASM-Bundle-Stream in über ein oder zwei Sekunden – danach hören die Navigationen auf, den Server für HTML zu bedienen.

Welchen soll man wählen

Grobe Faustregeln, wenn es keine spezifische Einschränkung gibt, die eine Entscheidung erzwingt:

Spickzettel

Was sich zwischen den drei Modi ändert, Datei für Datei? Nutzen Sie dies als Referenz, wenn Sie ein generiertes Projekt mit einer der Vorlagen vergleichen oder eine Diskrepanz nach einem manuellen Wechsel verfolgen.

Projektlayout

Alle drei Modi erzeugen ein Server-Host-Projekt UND ein Schwesterprojekt .Client . Was sich unterscheidet, ist das .ClientSDK und ob es tatsächlich in ein WebAssembly-Bundle kompiliert wurde.

.csproj Unterschiede

Das SDK des .Client Projekts ändert sich, und die WebAssembly-spezifischen Framework-Pakete erscheinen nur, wenn der Host tatsächlich WASM ausführt:

Zusätzliche Paketreferenzen, wenn WebAssembly oder Auto aktiv ist:

Server Program.cs — Service Registration

AddRazorComponents() wählt die passenden Visual-Mode-Komponentenpaare basierend darauf, welche Builder-Methoden verkettet sind:

Server Program.cs — Endpunkt-Mapping

MapRazorComponents<App>() verkettet die passenden Endpunkte im Rendermodus:

App.razor — Pro-Route-Render-Policy

Der PageRenderMode Getter entscheidet App.razor , welchen Renderer jede Route verwendet. Server-Hosts geben Server überall zurück; WebAssembly- und Auto-Hosts müssen die /Account/* Routen explizit pinnen, sodass das ausschließlich WASM-basierte IAuthService System aufgelöst wird:

Warum /Account/* angepinnt ist

Die erste Lackierung von Auto läuft unter dem Server-Renderer, aber die Kontoseiten IAuthService sind nur im DI-Graphen des WASM-Clients registriert. Ohne den expliziten Pin an InteractiveWebAssemblyRenderMode(prerender: false), kann ein Autohost beim Cold-Session-Prerendering nicht auflösen [Inject] IAuthService . prerender: false Überspringt den serverseitigen Prerender-Schritt komplett, sodass die Seite nur einmal rendert, nämlich in der WASM-Laufzeit.

. Client/Program.cs – Nur bei Interaktion

Server-only-Hosts haben .Client/Program.cs überhaupt keine (es .Client handelt sich um eine Razor-Klassenbibliothek). WebAssembly- und Auto-Hosts enthalten diese Datei, die die WASM-Laufzeit einrichtet, die HttpClient mit Cookie-Zugangsdaten weiterleitet, die WASM-Client-Dienste von Power Portals Pro registriert und beim Start die Crosscutting-Lokalisierung vorabruft:

Identitäts- / Kontoseiten

Power Portals Pro liefert zwei parallele Sets von Account-Seiten – eine für jeden Render-Kontext. Welche Menge in deinem Projekt ist, hängt vom Modus des Hosts ab:

Nächste Schritte

Wenn Sie bereits ein Projekt in einem Modus haben und in einen anderen konvertieren möchten, sehen Sie sich die Switch Blazor Interactivity-Seite für die Datei-für-Datei-Änderungen an.