Programiranje

Delo z domenami aplikacij v .Net

Aplikacijska domena je lahek postopek in deluje kot logična meja, ki zagotavlja izolacijsko mejo za kodo, varnost aplikacije, zanesljivost in različice.

Meje procesov se že dolgo uporabljajo za izolacijo aplikacij, ki se izvajajo v istem sistemu. Upoštevajte, da je postopek tekoči primerek programa. Ta izolacija pomaga, da se aplikacije nahajajo v pomnilniku in se izvajajo v različnih mejah procesa. Torej lahko dve niti v isti aplikacijski domeni komunicirata med seboj, dve niti, ki pripadata dvema različnima domenama aplikacije, pa ne.

Nit je najmanjša enota izvrševanja v procesu. V enem procesu lahko prebivate več domen aplikacij in znotraj domene aplikacije več niti. Domena aplikacije (običajno imenovana AppDomains) je logična izolacijska enota, ki omogoča izvajanje več aplikacij v istem postopku, hkrati pa zagotavlja, da zrušitev določene domene aplikacije ne vpliva na delovanje druge domene aplikacije.

Zakaj potrebujemo aplikacijske domene?

Izvajalno okolje skupnega jezika zagotavlja, da koda, ki se izvaja znotraj ene aplikacije, ne more dostopati do kode ali virov druge aplikacije, ki se izvaja v okviru upravljanega okolja. Kako se to doseže? Upravljana koda ali koda, ki se izvaja v upravljanem okolju, mora preiti postopek preverjanja. To preverjanje se izvede CLR (običajni jezik izvajanja), da se zagotovi varnost tipa. Domene aplikacij CLR-ju pomagajo zagotoviti zahtevano stopnjo izolacije, tako da se lahko več aplikacij izvaja v okviru enega samega procesa, ne da bi se povečala zmogljivost, da bi se povečala razširljivost.

MSDN pravi: "Aplikacijske domene zagotavljajo varnejšo in vsestransko uporabno enoto obdelave, ki jo lahko izvajalno okolje skupnega jezika uporablja za izolacijo med aplikacijami. V enem procesu lahko zaženete več aplikacijskih domen z enako stopnjo izolacije, ki bi obstajala v ločenih procesov, vendar brez dodatnih stroškov za medklicne klice ali preklapljanje med procesi. "

Programsko ustvarjanje aplikacijskih domen

Preden programsko ustvarimo novo domeno aplikacije, raziščimo, kako lahko s pomočjo C # pridobimo metapodatke trenutne domene aplikacije in izvedbo sklopa. Naslednji delček kode ponazarja, kako lahko prikažete domeno aplikacije in imena sklopov trenutno izvajanega sklopa.

z uporabo sistema;

z uporabo System.Threading;

z uporabo System.Reflection;

imenski prostor ApplicationDomains

{

razredni program

    {

statična praznina Main (string [] args)

        {

Console.WriteLine (Thread.GetDomain (). FriendlyName);

Console.WriteLine (Assembly.GetEntryAssembly (). Polno ime);

Console.ReadLine ();

        }

    }

}

Podobno lahko pridobite podatke o metapodatkih gostiteljske in podrejene domene z uporabo statičnih članov razreda AppDomain.

z uporabo sistema;

imenski prostor ApplicationDomains

{

razredni program

    {

statična praznina Main (string [] args)

        {

AppDomain childApplicationDomain = AppDomain.CreateDomain ("ApplicationDomain");

Console.WriteLine ("Ime domene gostitelja je:" + AppDomain.CurrentDomain.FriendlyName);

Console.WriteLine ("ID domene gostitelja je:" + AppDomain.CurrentDomain.Id.ToString ());

Console.WriteLine ("Ime podrejene domene je:" + childApplicationDomain.FriendlyName);

Console.WriteLine ("ID podrejene domene je:" + childApplicationDomain.Id.ToString ());

Console.ReadKey ();

        }

    }

}

Novo domeno aplikacije lahko ustvarite z eno od preobremenjenih metod CreateDomain razreda System.AppDomain. Upoštevajte, da so vse te metode statične, zato jih lahko prikličete brez potrebe po instanciranju razreda AppDomain. Tu je seznam preobremenjenih metod CreateDomain razreda System.AppDomain.

javni statični AppDomain CreateDomain (String appDomainName)

javni statični AppDomain CreateDomain (String appDomainName, Evidence securityInformation)

javni statični AppDomain CreateDomain (String appDomainName,

Dokazi o varnostiInformation, AppDomainSetup appDomainSetupInformation)

javni statični AppDomain CreateDomain (ime niza,

Dokazi securityInformation, String appBasePath, String appRelativeSearchPath,

bool shadowCopyFiles)

Domena aplikacije lahko ustvarite s katero koli od teh preobremenjenih metod CreateDomain - tej domeni lahko preprosto prenesete ime domene aplikacije, ki jo želite ustvariti kot parameter. Če želite, lahko kot dodaten parameter posredujete tudi varnostne politike. Metoda ExecuteAssembly se uporablja za nalaganje in izvajanje sklopa v domeni aplikacije.

Naslednji seznam kod prikazuje, kako lahko ustvarite novo domeno aplikacije in nato naložite in izvedete sklop znotraj novo ustvarjene domene aplikacije.

z uporabo sistema;

imenski prostor ApplicationDomains

{

razredni program

    {

statična praznina Main (string [] args)

        {

AppDomain applicationDomain = System.AppDomain.CreateDomain ("AppDomain");

applicationDomain.ExecuteAssembly (@ "D: \ Projects \ TestCode.exe");

Console.WriteLine ("Pritisnite katero koli tipko za razkladanje domene aplikacije ...");

Console.ReadKey ();

System.AppDomain.Unload (applicationDomain);

        }

    }

}

Ko se zgornji program zažene, se ustvari nova domena aplikacije z imenom "AppDomain" in nato sestavek (z imenom "TestCode.exe") se naloži v domeno aplikacije in izvede. Ustvarjena domena aplikacije se bo razložila, ko pritisnete tipko.

$config[zx-auto] not found$config[zx-overlay] not found