Domena aplikacji - Application domain

Domena aplikacji to mechanizm (podobny do procesu w systemie operacyjnym ), stosowane w Common Language Infrastructure (CLI), aby odizolować wykonywane aplikacje od siebie tak, że nie wpływają one na siebie. Każda domena aplikacji ma własną wirtualną przestrzeń adresową, która określa zakres zasobów domeny aplikacji korzystającej z tej przestrzeni adresowej .

Tworzenie wielu domen aplikacji w tym samym procesie nie jest możliwe w .NET Core i .NET 5+.

Nieruchomości

Domena aplikacji CLI jest zawarta w procesie systemu operacyjnego. Proces może zawierać wiele domen aplikacji. Domeny aplikacji mają właściwości izolacji podobne do procesów systemu operacyjnego:

  • W jednej domenie aplikacji może istnieć wiele wątków .
  • Aplikację w domenie można zatrzymać bez wpływu na stan innej domeny w tym samym procesie.
  • Błąd lub wyjątek w jednej domenie nie wpływa na aplikację w innej domenie ani nie powoduje awarii całego procesu obsługującego domeny.
  • Informacje konfiguracyjne są częścią zakresu domeny, a nie zakresu procesu.
  • Każdej domenie można przypisać różne poziomy dostępu do zabezpieczeń.
  • Kod w jednej domenie nie może bezpośrednio uzyskać dostępu do kodu w innej.

W tym sensie CLI jest jak mini system operacyjny. Uruchamia pojedynczy proces, który zawiera wiele podprocesów lub domen aplikacji.

Zaletą domen aplikacji jest to, że uruchamianie wielu domen aplikacji może wymagać mniej zasobów, takich jak pamięć, niż uruchamianie wielu procesów systemu operacyjnego. Komunikacja między domenami nadal wymaga kierowania, więc narzuty mogą być bliższe wykorzystaniu wielu procesów niż komunikacji w ramach jednej domeny.

Komunikacja między domenami

Bezpośredniej komunikacji nie można osiągnąć między domenami aplikacji. Jednak domeny aplikacji mogą nadal komunikować się ze sobą, przekazując obiekty przez kierowanie według wartości (obiekty niezwiązane), kierowanie przez odwołanie przez serwer proxy (obiekty powiązane z domeną aplikacji). Istnieje trzeci typ obiektu nazywany obiektem powiązanym z kontekstem, który może być uporządkowany przez odniesienie w różnych domenach, a także w kontekście własnej domeny aplikacji. Ze względu na weryfikowalne bezpieczeństwo typu kodu zarządzanego interfejs wiersza polecenia może zapewnić izolację błędów między domenami przy znacznie niższych kosztach niż proces systemu operacyjnego. Weryfikacja typu statycznego używana do izolacji nie wymaga tych samych przełączników procesów ani przełączeń pierścieni sprzętowych, jakich wymaga proces systemu operacyjnego.

Kod zarządzany

Domeny aplikacji to koncepcja czysto zarządzanego kodu . Żaden zawarty kod natywny / niezarządzany (np. C ++) jest w dużej mierze nieświadomy ich istnienia. Wydaje się, że zmienne statyczne są współużytkowane w różnych domenach, wywołania zwrotne mogą być problematyczne, a wszelkie błędy powodujące uszkodzenie pamięci w jednej domenie mogą uszkodzić inne domeny.

Bibliografia