Bewährte Entwicklungsmethoden für WebView2-Apps

Jedes Entwicklungsteam befolgt beim Erstellen seiner Anwendung unterschiedliche Methoden. Beim Erstellen von WebView2-Produktions-Apps wird empfohlen, diese Empfehlungen und bewährten Methoden zu befolgen.

Im Allgemeinen wird die Verwendung der Evergreen WebView2 Runtime empfohlen. Die Laufzeitverteilung mit fester Version wird nur für Apps empfohlen, für die strenge Kompatibilitätsanforderungen gelten. Die Evergreen-Runtime wird automatisch auf dem Client aktualisiert, sodass die neuesten Features und Sicherheitspatches für Ihre WebView2-App verfügbar sind. Die Evergreen-Runtime benötigt auch weniger Speicherplatz auf dem Datenträger als die Runtime mit fester Version.

Wenn Sie die Evergreen-Runtime verwenden, testen Sie vor dem Ausführen Ihrer WebView2-App, ob die Evergreen WebView2 Runtime auf dem Client installiert ist. Weitere Informationen finden Sie unter Bereitstellen der Evergreen WebView2 Runtime.

Regelmäßiges Ausführen von Kompatibilitätstests bei Verwendung der Evergreen Runtime

Wenn Sie evergreen WebView2 Runtime verwenden, wird die Runtime automatisch aktualisiert, sodass Sie regelmäßig Kompatibilitätstests ausführen müssen. Um sicherzustellen, dass Ihre WebView2-App weiterhin wie erwartet funktioniert, testen Sie Ihre Webinhalte im WebView2-Steuerelement mit Microsoft Edge Insider-Kanälen (Vorschauversion) (Beta, Dev oder Canary).

Dieser Leitfaden ähnelt der Anleitung, die wir Webentwicklern geben. Weitere Informationen finden Sie unter Testen Ihrer App auf Vorwärtskompatibilität.

Testen, ob neuere APIs von der installierten WebView2-Runtime unterstützt werden

Zum Ausführen einer WebView2-App, die mit einer bestimmten Version des Webview2 SDK entwickelt wurde, muss auf dem Client eine kompatible Version der WebView2-Runtime installiert sein. Da APIs ständig zu WebView2 hinzugefügt werden, werden auch neue Versionen der Runtime veröffentlicht, um die neuen APIs zu unterstützen. Verwenden Sie die Featureerkennung, um sicherzustellen, dass die neueren APIs, die von Ihrer WebView2-App verwendet werden, von der WebView2-Runtime unterstützt werden, die auf dem Client installiert ist.

Wenn Sie evergreen WebView2 Runtime verwenden, gibt es einige Szenarien, in denen die Runtime auf einem Client nicht automatisch auf die neueste Version aktualisiert wurde. Wenn ein Client beispielsweise keinen Internetzugriff hat, wird die Runtime nicht automatisch aktualisiert.

Darüber hinaus halten einige Gruppenrichtlinien die Aktualisierung der Runtime an. Wenn Sie ein Update an Ihre WebView2-App pushen, funktioniert die App möglicherweise nicht, wenn sie versucht, neuere APIs aufzurufen, die in der installierten Runtime des Clients nicht verfügbar sind.

Um diese Situation zu beheben, testen Sie, bevor Ihr Code eine kürzlich hinzugefügte WebView2-API aufruft, ob diese API in der installierten Runtime des Clients verfügbar ist. Dieser Test für neuere Funktionen ähnelt anderen bewährten Methoden für die Webentwicklung, die unterstützte Features erkennen, bevor neue Web-APIs verwendet werden. Verwenden Sie einen der folgenden Optionen, um die API-Verfügbarkeit in der installierten Runtime zu testen:

  • QueryInterface in C/C++.
  • Ein try/catch -Block in .NET oder WinUI.

Informationen zum Testen, ob die installierte Runtime kürzlich hinzugefügte APIs unterstützt, finden Sie unter Featureerkennung.

Aktualisieren der Fixed Version Runtime

Wenn Sie die Feste Version WebView2 Runtime verwenden, stellen Sie sicher, dass Sie die WebView2-Runtime regelmäßig aktualisieren, die mit Ihrer App gepackt ist, um Sicherheitsrisiken zu reduzieren. Wenn Sie Inhalte von Drittanbietern in Webview2-Apps verwenden, sollten Sie die Inhalte immer als nicht vertrauenswürdig betrachten. Weitere Informationen finden Sie unter Verteilungsmodus für feste Versionen.

Verwalten neuer Versionen der Evergreen Runtime

Wenn eine neue Version der Evergreen WebView2 Runtime auf den Client heruntergeladen wird, verwenden alle ausgeführten WebView2-Apps weiterhin die vorherige Version der Runtime, bis der Browserprozess freigegeben wird. Dieses Verhalten ermöglicht die kontinuierliche Ausführung von Apps und verhindert, dass die vorherige Runtime gelöscht wird. Um die neue Version der Runtime zu verwenden, müssen Sie entweder alle Verweise auf die vorherigen WebView2-Umgebungsobjekte freigeben oder Die App neu starten. Wenn Ihre App das nächste Mal eine neue WebView2-Umgebung erstellt, verwendet die App die neue Version der Runtime.

Wenn eine neue Version der Runtime verfügbar ist, kann Ihre App automatisch Maßnahmen ergreifen, z. B. den Benutzer benachrichtigen, die App neu zu starten. Um zu erkennen, dass eine neue Version der Runtime verfügbar ist, können Sie das Ereignis add_NewBrowserVersionAvailable (Win32) oder CoreWebView2Environment.NewBrowserVersionAvailable (.NET) in Ihrem Code verwenden. Wenn Ihr Code den Neustart der App verarbeitet, sollten Sie den Benutzerzustand speichern, bevor die WebView2-App beendet wird.

Verwalten der Lebensdauer des Benutzerdatenordners

WebView2-Apps erstellen einen Benutzerdatenordner zum Speichern von Daten wie Cookies, Anmeldeinformationen und Berechtigungen. Nach dem Erstellen des Ordners ist Ihre App für die Verwaltung der Lebensdauer des Benutzerdatenordners verantwortlich. Ihre App muss beispielsweise eine Bereinigung durchführen, wenn die App deinstalliert wird. Weitere Informationen finden Sie unter Verwalten von Benutzerdatenordnern.

Behandeln von Laufzeitprozessfehlern

Ihre WebView2-App sollte auf das ProcessFailed Ereignis lauschen und es behandeln, damit die App nach Fehlern von Laufzeitprozessen, die den WebView2-App-Prozess unterstützen, wiederhergestellt werden kann.

WebView2-Apps werden von einer Sammlung von Laufzeitprozessen unterstützt, die zusammen mit dem App-Prozess ausgeführt werden. Diese unterstützenden Laufzeitprozesse können aus verschiedenen Gründen fehlschlagen, z. B. wenn der Arbeitsspeicher nicht ausreicht oder vom Benutzer beendet wird. Wenn ein unterstützender Laufzeitprozess fehlschlägt, benachrichtigt WebView2 die App durch Auslösen des ProcessFailed-Ereignisses.

Ereignishandler für das Umgebungsobjekt

Wenn einer der Ereignishandler Ihrer App für das Umgebungsobjekt einen Verweis auf das Umgebungsobjekt enthält und die App einfach den Verweis auf die Umgebung und die Ereignishandler freigibt, ohne die Ereignishandler zu entfernen, gibt es möglicherweise einen Zirkelverweis zwischen dem Umgebungsobjekt und Handlerobjekten, wodurch Arbeitsspeicher verloren geht.

Um einen solchen Speicherverlust zu verhindern:

  • Entfernen Sie für jeden hinzugefügten Ereignishandler den Ereignishandler, bevor Sie das Umgebungsobjekt freigeben.

  • Vermeiden Sie es, einen Verweis auf das Umgebungsobjekt in einem Ereignishandler zu speichern. Stattdessen kann der Ereignishandler über das Argument des Rückrufs "event completed" auf das sender Umgebungsobjekt zugreifen.

  • Wenn die App einen Verweis auf ein WebView2-Objekt enthalten soll, verwenden Sie nach Möglichkeit einen schwachen Verweis.

Befolgen Sie für jede WebView2-App unsere Empfehlungen unter Entwickeln sicherer WebView2-Apps.