Anwendungsbereich - Application domain

Eine Anwendungsdomäne ist ein Mechanismus (ähnlich einem Prozess in einem Betriebssystem ), der in der Common Language Infrastructure (CLI) verwendet wird, um ausgeführte Softwareanwendungen voneinander zu isolieren , damit sie sich nicht gegenseitig beeinflussen. Jede Anwendungsdomäne verfügt über einen eigenen virtuellen Adressraum , die Tive die Ressourcen für die Anwendungsdomäne , die mit Adressraum .

Das Erstellen mehrerer Anwendungsdomänen im selben Prozess ist in .NET Core und .NET 5+ nicht möglich.

Eigenschaften

Eine CLI-Anwendungsdomäne ist in einem Betriebssystemprozess enthalten. Ein Prozess kann viele Anwendungsdomänen enthalten. Anwendungsdomänen haben ähnliche Isolationseigenschaften wie Betriebssystemprozesse:

  • Innerhalb einer Anwendungsdomäne können mehrere Threads vorhanden sein.
  • Eine Anwendung innerhalb einer Domäne kann gestoppt werden, ohne den Status einer anderen Domäne im selben Prozess zu beeinflussen.
  • Ein Fehler oder eine Ausnahme in einer Domäne wirkt sich nicht auf eine Anwendung in einer anderen Domäne aus oder stürzt den gesamten Prozess ab, der die Domänen hostet.
  • Konfigurationsinformationen sind Teil des Bereichs einer Domäne und nicht Teil des Prozesses.
  • Jeder Domäne können unterschiedliche Sicherheitszugriffsebenen zugewiesen werden.
  • Code in einer Domäne kann nicht direkt auf Code in einer anderen Domäne zugreifen.

In diesem Sinne ist eine CLI wie ein Mini-Betriebssystem. Es wird ein einzelner Prozess ausgeführt, der eine Reihe von Unterprozessen oder Anwendungsdomänen enthält.

Der Vorteil von Anwendungsdomänen besteht darin, dass für die Ausführung mehrerer Anwendungsdomänen möglicherweise weniger Ressourcen erforderlich sind, z. B. Speicher, als für die Ausführung mehrerer Betriebssystemprozesse. Die Kommunikation zwischen Domänen erfordert weiterhin Marshalling, sodass der Overhead der Verwendung mehrerer Prozesse näher kommen kann als der Kommunikation innerhalb einer einzelnen Domäne.

Domänenübergreifende Kommunikation

Eine direkte Kommunikation kann nicht über Anwendungsdomänen hinweg erreicht werden. Anwendungsdomänen können jedoch weiterhin miteinander kommunizieren, indem sie Objekte über das Marshalling nach Wert (ungebundene Objekte) und das Marshalling durch Referenz über einen Proxy (an Anwendungsdomänen gebundene Objekte) übergeben. Es gibt einen dritten Objekttyp, ein kontextgebundenes Objekt, das domänenübergreifend und auch im Kontext seiner eigenen Anwendungsdomäne referenziert werden kann. Aufgrund der überprüfbaren Typensicherheit von verwaltetem Code kann eine CLI eine Fehlerisolierung zwischen Domänen zu wesentlich geringeren Kosten bereitstellen als ein Betriebssystemprozess. Die für die Isolation verwendete statische Typüberprüfung erfordert nicht dieselben Prozessschalter oder Hardware-Ringübergänge, die ein Betriebssystemprozess erfordert.

Verwalteter Code

Anwendungsdomänen sind ein rein verwaltetes Codekonzept . Jeder enthaltene native / nicht verwaltete Code (z. B. C ++) kennt sie weitgehend nicht. Statische Variablen scheinen domänenübergreifend gemeinsam genutzt zu werden, Rückrufe können problematisch sein und Speicherbeschädigungsfehler in einer Domäne können andere Domänen beschädigen.

Verweise