Ohjelmointi

Työskentely .Net-sovelluksen verkkotunnusten kanssa

Sovellusalue on kevyt prosessi ja toimii loogisena rajana, joka tarjoaa eristysrajan koodille, sovelluksen turvallisuudelle, luotettavuudelle ja versiolle.

Prosessirajat ovat olleet käytössä pitkään samassa järjestelmässä toimivien sovellusten eristämiseen. Huomaa, että prosessi on ohjelman käynnissä oleva esiintymä. Tämä eristäminen auttaa saamaan sovellukset asumaan muistiin ja suorittamaan prosessin eri rajoilla. Joten kaksi ketjua samassa sovellusalueessa voi kommunikoida keskenään, mutta kaksi ketjua, jotka kuuluvat kahteen eri sovellusalueeseen, eivät.

Lanka on prosessin pienin toteutusyksikkö. Sinulla voi olla useita sovelluksen toimialueita, jotka sijaitsevat yhdessä prosessissa, ja useampia säikeitä sovelluksen toimialueella. Sovelluksen toimialue (kutsutaan yleisesti AppDomainsiksi) on looginen eristysyksikkö, jonka avulla voit suorittaa useita sovelluksia samassa prosessissa samalla, kun varmistetaan, että tietyn sovellusalueen kaatuminen ei vaikuta toisen sovellusalueen toimintaan.

Miksi tarvitsemme sovellustunnuksia?

Yhteisen kielen ajonaikainen ympäristö varmistaa, että yhden sovelluksen sisällä käytettävä koodi ei voi käyttää toisen hallitun ympäristön yhteydessä käynnissä olevan sovelluksen koodia tai resursseja. Kuinka tämä saavutetaan? Hallinnoidun tai hallitun ympäristön sisällä suoritettavan koodin on läpäistävä vahvistusprosessi. Tämä varmennus tehdään CLR: llä (yhteisen kielen ajonaika) tyyppiturvallisuuden varmistamiseksi. Sovellusalueet auttavat CLR: ää tarjoamaan vaaditun eristystason, jotta useat sovellukset voivat suorittaa yhden prosessin yhteydessä, ilman paljon suorituskykyä skaalautuvuuden lisäämiseksi.

MSDN: n mukaan: "Sovellusalueet tarjoavat turvallisemman ja monipuolisemman prosessointiyksikön, jota tavallisen kielen ajonaika voi käyttää eristyksen aikaansaamiseen sovellusten välillä. Voit suorittaa useita sovellusalueita yhdessä prosessissa samalla eristystasolla kuin erillisissä sovelluksissa. prosesseja, mutta aiheuttamatta ylimääräisiä lisäkustannuksia prosessien välisten puheluiden soittamisesta tai siirtymisestä prosessien välillä. "

Sovellustunnusten luominen ohjelmallisesti

Ennen kuin luomme uuden sovellusalueen ohjelmallisesti, tutkitaan, miten voimme hakea nykyisen sovellusalueen metatiedot ja suorittaa kokoonpanon C #: lla. Seuraava koodinpätkä kuvaa, kuinka voit näyttää parhaillaan suoritettavan kokoonpanon sovellusalueen ja kokoonpanonimet.

käyttämällä järjestelmää;

käyttämällä System.Threading;

käyttäen System.Reflection;

nimitila ApplicationDomains

{

luokan ohjelma

    {

staattinen void Main (merkkijono [] args)

        {

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

Console.WriteLine (Assembly.GetEntryAssembly (). FullName);

Console.ReadLine ();

        }

    }

}

Vastaavasti voit hakea isännän ja alatason verkkotunnusten metatiedot käyttämällä AppDomain-luokan staattisia jäseniä.

käyttämällä järjestelmää;

nimitila ApplicationDomains

{

luokan ohjelma

    {

staattinen void Main (merkkijono [] args)

        {

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

Console.WriteLine ("Isäntätunnuksen nimi on:" + AppDomain.CurrentDomain.FriendlyName);

Console.WriteLine ("Isäntätunnuksen tunnus on:" + AppDomain.CurrentDomain.Id.ToString ());

Console.WriteLine ("Lapsen verkkotunnus on:" + childApplicationDomain.FriendlyName);

Console.WriteLine ("Lapsen toimialueen tunnus on:" + childApplicationDomain.Id.ToString ());

Console.ReadKey ();

        }

    }

}

Voit luoda uuden sovellusalueen käyttämällä jotakin System.AppDomain-luokan ylikuormitettua CreateDomain-menetelmää. Huomaa, että kaikki nämä menetelmät ovat staattisia, joten voit käyttää niitä, jotta AppDomain-luokkaa ei tarvitse instantisoida. Tässä on luettelo System.AppDomain-luokan ylikuormitetuista CreateDomain-menetelmistä.

julkinen staattinen AppDomain CreateDomain (merkkijono appDomainName)

julkinen staattinen AppDomain CreateDomain (merkkijono appDomainName, Evidence securityInformation)

julkinen staattinen AppDomain CreateDomain (String appDomainName,

Todisteet securityInformation, AppDomainSetup appDomainSetupInformation)

julkinen staattinen AppDomain CreateDomain (merkkijonon nimi,

Evidence securityInformation, String appBasePath, String appRelativeSearchPath,

bool-varjoCopyFiles)

Voit luoda sovellusverkkotunnuksen millä tahansa näistä ylikuormitetuista CreateDomain-menetelmistä - voit vain välittää parametrille tämän sovelluksen toimialueen nimen parametrina. Voit myös siirtää suojauskäytännöt, jos haluat ylimääräisenä parametrina. ExecuteAssembly-menetelmää käytetään kokoonpanon lataamiseen ja suorittamiseen sovellusalueella.

Seuraava koodiluettelo näyttää, kuinka voit luoda uuden sovellusalueen ja ladata sitten kokoonpanon vasta luotun sovellusalueen sisällä.

käyttämällä järjestelmää;

nimitila ApplicationDomains

{

luokan ohjelma

    {

staattinen void Main (merkkijono [] args)

        {

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

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

Console.WriteLine ("Voit purkaa sovelluksen toimialueen painamalla mitä tahansa näppäintä ...");

Console.ReadKey ();

System.AppDomain.Unload (applicationDomain);

        }

    }

}

Kun yllä oleva ohjelma on suoritettu, luodaan uusi sovellusverkkotunnus nimeltä "AppDomain" ja sitten kokoonpano (nimeltä "TestCode.exe") ladataan sovellusalueelle ja suoritetaan. Luotu sovellusalue puretaan, kun näppäintä painetaan.

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