Ohjelmointi

Työskentely Unity-sovelluslohkon kanssa

Samoin kuin Castle Windsor ja StructureMap, Unity Application Block on myös IoC (Inversion of Control) -säiliö. Microsoftin Unity-sovelluslohko on kevyt, laajennettavissa oleva riippuvuusinjektiosäiliö. Se tarjoaa tukea rakentajan ruiskutukseen, omaisuuden injektointiin ja myös menetelmäpuhelun injektointiin. Muuten, Unity-sovelluslohko otettiin käyttöön osana yrityskirjastoa.

Jos et ole perehtynyt riippuvuuden injektointiin ja ohjauksen kääntämiseen, tässä on lyhyt selitys. Riippuvuusinjektio on IoC-periaatteen toteutus. Sekä ohjauksen inversio että riippuvuusinjektio ovat tapoja, joiden avulla voit katkaista sovelluksen komponenttien väliset riippuvuudet. Dependency Injection -periaate toteaa, että sovelluksen korkean tason moduulien ei pitäisi riippua matalan tason moduuleista; pikemminkin molempien pitäisi riippua abstraktioista.

Unity Application Block -suunnittelutavoitteet

Unity-sovelluslohko on Dependency Injection (DI) -säiliö. Huomaa, että Unity-sovelluslohko ei ole riippuvainen Enterprise Library -määritysjärjestelmästä. Siksi voit käyttää sitä erillisenä riippuvuuden injektiosäiliönä, joka estää järjestelmään asennettavan yrityskirjaston. Unity-sovelluslohkon suunnittelutavoitteet sisältävät seuraavat:

  1. Modulaarisen rakenteen edistäminen irrotuksen avulla
  2. Tarjoaa nopean, laajennettavan, kevyen riippuvaisen injektiosäiliön
  3. Tarjoa tukea laajennettavuudelle laajennusten avulla
  4. Tarjoa tukea ominaisuusohjatulle injektiolle
  5. Tarjoa tukea intuitiiviselle sovellusliittymälle yhteyden muodostamiseksi riippuvuussyöttösäiliöön ja sen kanssa työskentelemiseen

Päästä alkuun

Tässä osiossa tutkitaan, miten voimme aloittaa Unity-sovelluslohkon käytön sovelluksissamme. Ensimmäisen vaiheen tulisi olla Unity Application Blockin asentaminen järjestelmään. Helpoin tapa asentaa tämä kirjasto on NuGetin kautta. Tässä kuvassa käytämme tässä konsolisovellushanketta. Voit rakentaa ensimmäisen sovelluksen Unity-sovelluslohkon avulla seuraavasti:

  1. Avaa Visual Studio IDE
  2. Luo konsoliprojekti ja tallenna se nimellä
  3. Napsauta hiiren kakkospainikkeella projektia Solution Explorer -ikkunassa
  4. Valitse "Hallitse NuGet-paketteja ..."
  5. Asenna Unity NuGet Package Manager

Se on kaikki mitä sinun tarvitsee tehdä asettaaksesi vaiheen Unityn käytön aloittamiseksi. Olet nyt valmis käyttämään Unity Application Blockia projektissasi.

Objektiriippuvuuksien luominen ja ratkaiseminen Unity-säilön avulla

Voit ratkaista tietyn objektin riippuvuudet Unity-säilön avulla helposti seuraavan koodinpätkän mukaisesti.

IUnityContainer-säilö = uusi UnityContainer ();

container.RegisterType ();

container.RegisterType ();

Kun rekisteröit objektityypin Unity-säilöön, voit määrittää käyttöiän. Jos et määritä mitään, käytetään oletusikää. Elinkaaren hallinta hallitsee rekisteröidyn objektin käyttöikää. Unity-sovelluslohkon tukemia elinikäisten hallintaohjelmien tyyppejä ovat: TransientLifetimeManager, ContainerControlledLifetimeManager, HierarchicalLifetimeManager, PerThreadLifetimeManager ja ExternallyControlledLifetimeManager.

Harkitse seuraavaa käyttöliittymää nimeltä ILogger.

julkinen käyttöliittymä ILogger

   {

merkkijono GetLogTypeName ();

   }

ILogger-käyttöliittymä sisältää yhden metodin, GetLogTypeName (), ilmoituksen. Luokat FileLoger, DatabaseLogger ja EventLogger (annettu alla) toteuttavat ILogger-käyttöliittymän.

julkinen luokka FileLogger: ILogger

   {

julkinen merkkijono GetLogTypeName ()

       {

palauta "File Logger";

       }

   }

julkisen luokan DatabaseLogger: ILogger

   {

julkinen merkkijono GetLogTypeName ()

       {

palauta "Database Logger";

       }

   }

julkinen luokka EventLogger: ILogger

   {

julkinen merkkijono GetLogTypeName ()

       {

return "Tapahtumaloki";

       }

   }

Seuraava koodiluettelo näyttää, miten voit ratkaista riippuvuudet UnityContainerin avulla.

staattinen void Main (merkkijono [] args)

{

IUnityContainer-säilö = uusi UnityContainer ();

container.RegisterType ();

ILogger iLogger = säilö.Resolve ();

merkkijono logType = iLogger.GetLogTypeName ();

Console.WriteLine (logType);

Konsoli.Lue ();

}

Huomaa, että "Container" Unity-sovelluslohkossa on objekti, jota voidaan käyttää riippuvuuksien luomiseen ja lisäämiseen. Voit rekisteröidä tyypit tai tyyppikartoitukset Unity-säilöön käyttämällä RegisterType-menetelmää. Resolve () -menetelmää käytetään palauttamaan konkreettinen ilmentymä, joka on rekisteröity T: llä mainittuun yleiseen tyyppiin. Yllä olevassa koodiesimerkissä Resolve () -menetelmä palauttaa FileLogger-luokan ilmentymän.

Vaihtoehtoinen tapa määritellä Unity-integraatio on konfigurointi. Olettaen, että olet määrittänyt kontin nimeltä Container Unity-määrityksissäsi, seuraava koodinpätkä kuvaa, kuinka voit kutsua LoadConfiguration-menetelmää koodisi säilön ilmentymässä.

merkkijono containerName = "Säilö";

IUnityContainer-säilö = uusi UnityContainer (). LoadConfiguration (containerName);