Erweiterungskonzepte und -architektur

In diesem Artikel werden Konzepte zum Erstellen einer Microsoft Edge-Erweiterung vorgestellt. Folgen Sie den Anweisungen, um zu verstehen, wie Browser mit mehreren Registerkarten funktionieren.

Eine Microsoft Edge-Erweiterung ist eine kleine App, für die Benutzer sich entscheiden können, die Features von Microsoft Edge hinzufügt oder ändert, um eine spezielle Erfahrung oder Funktion bereitzustellen, die für eine Zielgruppe wichtig ist. Eine Einführung finden Sie unter Übersicht über Microsoft Edge-Erweiterungen.

Grundlegendes zur Funktionsweise von Browsern

Die folgende Liste enthält hilfreiche Informationen, die Sie vor dem Erstellen Ihrer Erweiterung verstehen sollten.

Browserregisterkarten sind isolierte Threads

Jede Browserregisterkarte ist von jeder anderen Registerkarte isoliert. Jede Registerkarte wird in einem separaten Thread ausgeführt, der von anderen Browserregisterkarten und Threads isoliert ist.

Ein Thread pro Browserregisterkarte

Jede Registerkarte verarbeitet eine GET-Anforderung.

Jede Registerkarte verarbeitet eine GET-Anforderung. Jede Registerkarte verwendet eine URL, um einen einzelnen Datenstrom abzurufen, bei dem es sich normalerweise um ein HTML-Dokument handelt. Dieser einzelne Stream oder diese Seite enthält Anweisungen wie JavaScript-Includetags, Bildverweise, CSS-Verweise und vieles mehr. Alle Ressourcen werden auf diese eine Registerkartenseite heruntergeladen, und dann wird die Seite auf der Registerkarte gerendert.

Kommunikation zwischen jeder Registerkarte und einem Remoteserver

Die Kommunikation erfolgt zwischen jeder Registerkarte und einem Remoteserver. Jede Registerkarte wird in einer isolierten Umgebung ausgeführt. Jede Registerkarte ist weiterhin mit dem Internet verbunden, ist jedoch von anderen Registerkarten isoliert. Eine Registerkarte kann JavaScript ausführen, um mit einem Server zu kommunizieren. Der Server ist der Ursprungsserver für die erste GET-Anforderung, die in die URL-Leiste der Registerkarte eingegeben wurde.

Kommunikationsmodell

Das Erweiterungsmodell verwendet ein anderes Kommunikationsmodell. Ähnlich wie bei einer Registerkartenseite wird eine Erweiterung in einem einzelnen Thread ausgeführt, der von anderen Registerkartenseitenthreads isoliert ist. Eine Registerkarte sendet einzelne GET-Anforderungen an Remoteserver und rendert dann die Seite. Eine Erweiterung funktioniert jedoch ähnlich wie ein Remoteserver. Durch die Installation einer Erweiterung in einem Browser wird ein eigenständiger Webserver im Browser erstellt. Die Erweiterung ist von allen Registerkartenseiten isoliert.

Erweiterungen verwenden ein anderes Kommunikationsmodell

Erweiterungsarchitektur

Die folgende Liste enthält hilfreiche Informationen im Zusammenhang mit der Architektur einer Erweiterung.

Erweiterungswebserverbundle

Eine Erweiterung ist ein Bündel von Webressourcen. Die Webressourcen ähneln anderen Ressourcen, die Sie (der Webentwickler) auf Webservern veröffentlichen. Beim Erstellen einer Erweiterung bündeln Sie die Webressourcen in einer ZIP-Datei.

Die ZIP-Datei enthält HTML-, CSS-, JavaScript- und Bilddateien. Eine weitere Datei ist im Stammverzeichnis der ZIP-Datei erforderlich. Die andere Datei ist die Manifestdatei mit dem Namen manifest.json. Die Manifestdatei ist die Blaupause Ihrer Erweiterung und enthält die Version Ihrer Erweiterung, den Titel, die berechtigungen, die für die Ausführung der Erweiterung erforderlich sind usw.

Starten des Erweiterungsservers

Webserver enthalten Ihr Webpaket. Ein Browser navigiert zu urLs auf dem Server und lädt die Datei herunter, um sie im Browser zu rendern. Ein Browser navigiert mithilfe von Zertifikaten, Konfigurationsdateien usw. Wenn eine index.html Datei angegeben wird, wird die Datei an einem speziellen Speicherort auf dem Webserver gespeichert.

Wenn Sie eine Erweiterung verwenden, wird die Registerkartenseite Ihres Browsers mithilfe der Erweiterungslaufzeit zum Webpaket Ihrer Erweiterung angezeigt. Die Erweiterungslaufzeit stellt die Dateien aus der URL extension://{some-long-unique-identifier}/index.htmlbereit, wobei {some-long-unique-identifier} ein eindeutiger Bezeichner ist, der der Erweiterung während der Installation zugewiesen ist. Jede Erweiterung verwendet einen anderen eindeutigen Bezeichner. Jeder Bezeichner verweist auf das Webpaket, das in Ihrem Browser installiert ist.

Kommunikation mit Registerkarten und Browsersymbolleiste

Eine Erweiterung kann mit Registerkarten und der Browsersymbolleiste kommunizieren. Eine Erweiterung kann mit der Symbolleiste Ihres Browsers interagieren. Jede Erweiterung verwaltet ausgeführte Registerkartenseiten in separaten Threads, und die DOM-Bearbeitung auf jeder Registerkartenseite ist isoliert. Eine Erweiterung verwendet die Erweiterungs-API, um zwischen den Erweiterungs- und Registerkartenseiten zu kommunizieren. Die Erweiterungs-API bietet zusätzliche Funktionen, die Benachrichtigungsverwaltung, Speicherverwaltung usw. umfassen.

Genau wie Webserver wartet eine Erweiterung auf Benachrichtigungen, wenn der Browser geöffnet ist. Eine Erweiterungs- und Registerkartenseite werden in voneinander isolierten Threads ausgeführt. Damit eine Erweiterung mit jeder Registerkartenseite funktioniert, verwenden Sie die Erweiterungs-API, und legen Sie die Berechtigungen in der Manifestdatei fest.

Anmeldeberechtigungen zum Zeitpunkt der Installation

Eine Erweiterung stellt zum Zeitpunkt der Installation Anmeldeberechtigungen bereit. Sie geben die Erweiterungsberechtigungen in der Datei an manifest.json . Wenn ein Benutzer eine Erweiterung installiert, werden Informationen zu den Berechtigungen angezeigt, die für die Erweiterung erforderlich sind. Basierend auf dem erforderlichen Berechtigungstyp kann die Erweiterung Informationen aus dem Browser extrahieren und verwenden.

Nächste Schritte

Informationen zu den ersten Schritten mit Ihrer Erweiterung finden Sie unter Tutorial zum Erstellen einer Erweiterung, Teil 1.