Programmēšana

Darbs ar lietojumprogrammas Unity bloku

Līdzīgi kā Castle Windsor un StructureMap, arī Unity Application Block ir IoC (Inversion of Control) konteiners. Microsoft Unity lietojumprogrammu bloks ir viegls, paplašināms atkarības iesmidzināšanas konteiners. Tas nodrošina atbalstu konstruktora injekcijai, īpašuma injekcijai un arī metodes izsaukuma injekcijai. Starp citu, Vienības lietojumprogrammu bloks tika ieviests kā daļa no Uzņēmumu bibliotēkas.

Ja jums nav zināms, kas ir atkarības iesmidzināšana un vadības inversija, šeit ir īss paskaidrojums. Atkarības injicēšana ir IoC principa realizācija. Gan vadības inversija, gan atkarības ievadīšana ir veidi, kas ļauj pārtraukt atkarības starp lietojumprogrammas komponentiem. Atkarības injicēšanas princips nosaka, ka lietojumprogrammas augsta līmeņa moduļiem nevajadzētu būt atkarīgiem no zema līmeņa moduļiem; drīzāk abiem jābūt atkarīgiem no abstrakcijām.

Unity Application Block dizaina mērķi

Lietotnes Unity bloks ir atkarības injekcijas (DI) konteiners. Ņemiet vērā, ka lietojumprogrammu bloks Unity nav atkarīgs no Enterprise Library konfigurācijas sistēmas. Tādējādi jūs varat to izmantot kā atsevišķu atkarības injekcijas konteineru, kas neļauj jūsu sistēmā instalēt Uzņēmumu bibliotēku. Lietotnes bloka Unity dizaina mērķi ir šādi:

  1. Moduļu konstrukcijas veicināšana, atsaistot
  2. Nodrošinot ātru, paplašināmu un vieglu injekcijas trauku, kas atkarīgs no svara
  3. Sniedziet atbalstu paplašināmībai, izmantojot paplašinājumus
  4. Nodrošiniet atbalstu ar atribūtu virzītām injekcijām
  5. Nodrošiniet atbalstu intuitīvai API, lai izveidotu savienojumu un strādātu ar atkarības iesmidzināšanas konteineru

Darba sākšana

Šajā sadaļā mēs izpētīsim, kā mēs varam sākt izmantot Vienības lietojumprogrammu bloku mūsu lietojumprogrammās. Pirmajam solim vajadzētu būt instalēt Unity Application Block jūsu sistēmā. Vieglākais veids, kā instalēt šo bibliotēku, ir NuGet. Šīs ilustrācijas vajadzībām mēs šeit izmantosim konsoles lietojumprogrammas projektu. Lai izveidotu pirmo lietojumprogrammu, izmantojot Unity lietojumprogrammu bloku, rīkojieties šādi:

  1. Atveriet Visual Studio IDE
  2. Izveidojiet konsoles projektu un saglabājiet to ar nosaukumu
  3. Solution Explorer logā ar peles labo pogu noklikšķiniet uz projekta
  4. Atlasiet "Pārvaldīt NuGet paketes ..."
  5. Instalējiet Unity NuGet pakešu pārvaldnieku

Tas ir viss, kas jums jādara, lai izveidotu pamatu, lai sāktu lietot Unity. Tagad esat gatavs izmantot Unity Application Block savā projektā.

Objekta atkarību izveide un atrisināšana, izmantojot Unity konteineru

Varat izmantot konteineru Unity, lai viegli atrisinātu atkarības no konkrēta objekta, kā parādīts sekojošajā koda fragmentā.

IUnityContainer konteiners = jauns UnityContainer ();

container.RegisterType ();

container.RegisterType ();

Reģistrējot objekta tipu konteinerā Unity, varat norādīt tā kalpošanas laiku. Ja nenorādīsit nevienu, tiek izmantots noklusējuma kalpošanas laiks. Mūža pārvaldnieks kontrolē reģistrētā objekta kalpošanas laiku. Mūža pārvaldnieku veidi, kurus atbalsta Unity lietojumprogrammu bloks, ir šādi: TransientLifetimeManager, ContainerControlledLifetimeManager, HierarchicalLifetimeManager, PerThreadLifetimeManager un ExternallyControlledLifetimeManager.

Apsveriet šo interfeisu ar nosaukumu ILogger.

publiskā saskarne ILogger

   {

virkne GetLogTypeName ();

   }

ILogger interfeiss satur vienas metodes, GetLogTypeName (), deklarāciju. Klases FileLoger, DatabaseLogger un EventLogger (norādītas tālāk) ievieš ILogger saskarni.

publiskā klase FileLogger: ILogger

   {

publiskā virkne GetLogTypeName ()

       {

atgriezt "File Logger";

       }

   }

publiskā klase DatabaseLogger: ILogger

   {

publiskā virkne GetLogTypeName ()

       {

atgriezt "Database Logger";

       }

   }

publiskā klase EventLogger: ILogger

   {

publiskā virkne GetLogTypeName ()

       {

atgriešanās "Notikumu reģistrētājs";

       }

   }

Šis kodu saraksts parāda, kā jūs varat atrisināt atkarības, izmantojot UnityContainer.

static void Main (virkne [] args)

{

IUnityContainer konteiners = jauns UnityContainer ();

container.RegisterType ();

ILogger iLogger = konteiners.Resolve ();

virknes logType = iLogger.GetLogTypeName ();

Console.WriteLine (logType);

Konsole. Lasīt ();

}

Ņemiet vērā, ka vienības lietojumprogrammu blokā esošais konteiners ir objekts, ko var izmantot, lai izveidotu un injicētu atkarības. Izmantojot metodi RegisterType, konteinerā Unity var reģistrēt veidus vai veidu kartējumus. Metode Resolve () tiek izmantota, lai atgrieztu konkrētu tipa gadījumu, kas reģistrēts vispārējam tipam, kas minēts, izmantojot T. Iepriekš minētajā kodu piemērā metode Resolve () atgriezīs klases FileLogger gadījumu.

Alternatīva pieeja, lai norādītu vienotības integrāciju, ir konfigurācija. Pieņemot, ka vienības konfigurācijā esat norādījis konteineru ar nosaukumu Konteiners, šis koda fragments parāda, kā savā kodā varat izsaukt konteinera instances LoadConfiguration metodi.

virkne containerName = "Konteiners";

IUnityContainer konteiners = jauns UnityContainer (). LoadConfiguration (containerName);

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