70-536: Creating Application Domains

Poniższy artykuł pochodzi z serii Przygotowań do egzaminu 70-536.

Application domain jest mechanizmem podobnym do procesu w systemie operacyjnym. Wykorzystywana jest do rozdzielenia uruchomionych aplikacji jedna od drugiej, tak, aby nie wpływały na siebie wzajemnie. Zastosowanie tej techniki pozwala wywoływać zewnętrzne obiekty assemblies zapewniając wydajność i warstwę bezpieczeństwa. W każdej chwili można zamknąć domenę aplikacji i zwolnić zajmowane zasoby. Dodatkowo można ograniczyć przywileje tak uruchomionej aplikacji, minimalizując ryzyko tego, że wykrycie podatności na ataki w zewnętrznej assembly zagrozi naszej aplikacji.

Podstawowy przykład

Aby pokazać zasadę działania utwórzmy nową solucję w Visual Studio, do której dodajmy dwa projekty. Pierwszy projekt typu Console Application i nazwie ReadFile. Będzie on wyświetlał zawartość jednego z plików systemowych.

Dodajemy dyrektywę ładującą bibliotekę:

   1: using System.IO;

 

Kod do wstawienia w metodzie Main:

   1: Console.WriteLine("ReadFile ==");
   2: using (StreamReader reader = new StreamReader(@"C:\Windows\win.ini"))
   3: {
   4:     Console.WriteLine(reader.ReadToEnd());
   5: }
   6: Console.WriteLine("== ReadFile");

Drugi projekt – AppDomainDemo, tworzymy także jako aplikację konsolową. Następnie dodajemy w nim referencję do poprzedniego projektu (opcja Add Reference…).

Kod do wpisania w metodzie Main:

   1: // Wypisz przyjazną nazwę naszej assembly
   2: Console.WriteLine("Host domain: " + AppDomain.CurrentDomain.FriendlyName);
   3:  
   4: // 1. Utwórz domenę
   5: AppDomain d = AppDomain.CreateDomain("NewDomain");       
   6: Console.WriteLine("Child domain: " + d.FriendlyName);
   7:  
   8: // 2. Załadowanie i uruchomienie obiektów assemblies
   9: d.ExecuteAssemblyByName("ReadFile");
  10:  
  11: // 3. Zamknij domenę aplikacji
  12: AppDomain.Unload(d);
  13:  
  14: Console.ReadKey();

 

  1. Tworzymy domenę aplikacji poprzez wywołanie jednej z wersji metody (przeciążanie metody) AppDomain.CreateDomain – w tej wersji podajemy jedynie nazwę nowej domeny,
  2. Wywołujemy metodę ExecuteAssemblyByName – uruchamiamy kod po nazwie, jeśli chcielibyśmy wykonać go wskazując ścieżkę należałoby wykorzystać metodę ExecuteAssembly,
  3. Statyczna metoda AppDomain.Unload pozwala nam odładować domenę i wszystkie znajdujące się w niej assemblies. Możemy to zrobić w każdej chwili.

image 

W tym wpisie przedstawione zostały jedynie podstawy pracy z domenami. W lekcji nr 2 temat ten zostanie przedstawiony bardziej szczegółowo.

 

Odnośniki

Kolejny artykuł z serii to 70-536:Configuring Application Domains

Tagi: , ,

Pingbacks and trackbacks (2)+

Add comment




  Country flag
biuquote
  • Comment
  • Preview
Loading


Eastgroup.pl na facebooku