Programiranje

Delo z aplikacijskim blokom Unity

Podobno kot Castle Windsor in StructureMap je Unity Application Block tudi vsebnik IoC (Inverzija nadzora). Microsoftov blok aplikacije Unity je lahek razširljiv vsebnik za vbrizgavanje odvisnosti. Zagotavlja podporo za vbrizgavanje konstruktorja, vbrizgavanje lastnosti in tudi vbrizgavanje klicev metode. Mimogrede, blok aplikacije Unity je bil uveden kot del knjižnice Enterprise.

Če niste seznanjeni s tem, kaj sploh je vbrizgavanje in inverzija nadzora, tukaj je hitra razlaga. Injekcija odvisnosti je uresničitev načela IoC. Inverzija nadzora in vbrizgavanje odvisnosti sta načina, ki omogočata razbijanje odvisnosti med komponentami v vaši aplikaciji. Načelo vbrizgavanja odvisnosti določa, da moduli na visoki ravni v aplikaciji ne smejo biti odvisni od modulov na nizki ravni; prej bi moralo biti oboje odvisno od abstrakcij.

Unity Application Block oblikovanje ciljev

Blok aplikacije Unity je vsebnik za vbrizgavanje odvisnosti (DI). Upoštevajte, da blok aplikacije Unity nima nobene odvisnosti od konfiguracijskega sistema Enterprise Library. Zato ga lahko uporabite kot samostojni vsebnik za vbrizgavanje odvisnosti, ne da bi bila knjižnica Enterprise nameščena v vašem sistemu. Cilji oblikovanja aplikacijskega bloka Unity vključujejo naslednje:

  1. Spodbujanje modularne zasnove z ločevanjem
  2. Zagotavlja hitro, raztegljivo posodo za vbrizgavanje odvisnosti od majhne teže
  3. Zagotovite podporo za razširljivost s pomočjo razširitev
  4. Zagotovite podporo za vbrizgavanje, ki ga poganjajo atributi
  5. Zagotovite podporo za intuitiven API za povezavo z vsebnikom za vbrizgavanje odvisnosti in delo z njim

Kako začeti

V tem poglavju bomo raziskali, kako lahko začnemo uporabljati blok aplikacije Unity v naših aplikacijah. Prvi korak mora biti namestitev Unity Application Block v vaš sistem. To knjižnico je najlažje namestiti prek programa NuGet. Za namene te ilustracije bomo tukaj uporabili projekt aplikacije konzole. Če želite zgraditi prvo aplikacijo z uporabo Unity Application Block, sledite tem korakom:

  1. Odprite Visual Studio IDE
  2. Ustvarite projekt konzole in ga shranite z imenom
  3. Z desno miškino tipko kliknite projekt v oknu raziskovalca rešitev
  4. Izberite "Upravljanje paketov NuGet ..."
  5. Namestite Unity NuGet Package Manager

To je vse, kar bi morali storiti, da bi začeli uporabljati Unity. Zdaj ste pripravljeni za uporabo Unity Application Block v svojem projektu.

Ustvarjanje in reševanje odvisnosti od objektov s pomočjo vsebnika Unity

S vsebnikom Unity lahko enostavno razrešite odvisnosti od določenega predmeta, kot je prikazano v delčku kode, ki sledi.

IUnityContainer vsebnik = nov UnityContainer ();

container.RegisterType ();

container.RegisterType ();

Ko s predmetom Unity registrirate vrsto predmeta, lahko določite življenjsko dobo. Če ne navedete nobenega, se uporabi privzeta življenjska doba. Upravitelj življenjske dobe nadzoruje življenjsko dobo registriranega predmeta. Vrste upraviteljev življenjske dobe, ki jih podpira blok aplikacije Unity, vključujejo: TransientLifetimeManager, ContainerControllLifetimeManager, HierarchicalLifetimeManager, PerThreadLifetimeManager in ExternallyControllLifetimeManager.

Razmislite o naslednjem vmesniku, imenovanem ILogger.

javni vmesnik ILogger

   {

niz GetLogTypeName ();

   }

Vmesnik ILogger vsebuje izjavo ene metode z imenom GetLogTypeName (). Razredi FileLoger, DatabaseLogger in EventLogger (podani spodaj) izvajajo vmesnik ILogger.

javni razred FileLogger: ILogger

   {

javni niz GetLogTypeName ()

       {

vrni "Dnevnik datotek";

       }

   }

javni razred DatabaseLogger: ILogger

   {

javni niz GetLogTypeName ()

       {

vrni "Logger baze podatkov";

       }

   }

javni razred EventLogger: ILogger

   {

javni niz GetLogTypeName ()

       {

vrni "Log Logger";

       }

   }

Naslednji seznam kod prikazuje, kako lahko z UnityContainer rešite odvisnosti.

statična praznina Main (string [] args)

{

IUnityContainer vsebnik = nov UnityContainer ();

container.RegisterType ();

ILogger iLogger = container.Resolve ();

niz logType = iLogger.GetLogTypeName ();

Console.WriteLine (logType);

Console.Read ();

}

Upoštevajte, da je "Vsebnik" v bloku aplikacije Unity objekt, ki ga lahko uporabite za ustvarjanje in vbrizgavanje odvisnosti. Tipe ali preslikave tipov lahko registrirate v vsebniku Unity z metodo RegisterType. Metoda Resolve () se uporablja za vrnitev konkretnega primerka vrste, ki je registrirana za generični tip, omenjen s pomočjo T. V zgornjem primeru kode bo metoda Resolve () vrnila primerek razreda FileLogger.

Alternativni pristop za določitev integracije Unity je s konfiguracijo. Ob predpostavki, da ste v konfiguraciji Unity podali vsebnik z imenom Container, naslednji delček kode ponazarja, kako lahko v svoji kodi pokličete metodo LoadConfiguration na primerku vsebnika.

string containerName = "Vsebnik";

IUnityContainer vsebnik = nov UnityContainer (). LoadConfiguration (containerName);