Vlastní primitivní IOC kontejner v C#

IOC kontejner je komponenta, která vychází z principů Inversion of control a Dependency Injection.Slouží k minimalizaci vztahů tříd z různých vrstev programu.

Ve zkratce jde o to , že se objekty nevytváří ve třídách, ale žádámě o ně komponentu, která má instancování na starosti(IOC kontejner).Klient tedy požádá kontejner o třídu implementující požadované rozhraní a od komponenty se mu vrátí třída.jakou třídu vybere je čistě na komponentě, důležité ale je aby implementovala požadované rozhraní.

Já jsem si připravil rozhraní   IObjectFactory, které obsahuje jedinou metodu a to   IBLLBase GetCRUD(Type bll) . Metoda GetCRUD  má jako vstupní proměnnou Typ rozhraní  a vrátí Objekt, který implementuje rozhraní IBLL,  což je rozhraní, které v mém případě implementují všechny servisní třídy.

Způsob, jakým to komponenta udělá je čistě na její implementaci.Já jsem si zvolil uložení dvojic Interface-Třída v konfigurčním souboru.Využiji zde konfiguračních možností prostředí .net a vytvořím si vlastní  konfigurační sekci web.configu, kterou budu mít v externím souboru ObjectBuilder.config.Ukázka  struktury je zde :

<objectBuilder
apiNamespace=“EpimexWebSite.Model.Repository.EntityRepositories.API“
implNamespace=“EpimexWebSite.Model.Repository.EntityRepositories.IMPL“
>
<Items>
<addType interfaceToLoad=“ICompanyRepository“
classToLoad=“CompanyRepository“/>

<addType interfaceToLoad=“IMachineRepository“
classToLoad=“MachineRepository“/>

<addType interfaceToLoad=“IGalleryRepository“
classToLoad=“GalleryRepository“/>

<addType interfaceToLoad=“IImageRepository“
classToLoad=“ImageRepository“/>

</Items>

</objectBuilder>

ukázka návrhu tříd kontejneru zde:


kostra XMLBasedObjectFactory:

a hlavní metoda Registrující objekty z Konfigurace

a nakonec sekvenční diagram znázornující komunikaci mezi aspx bázovou třídou a kontejnerem

Reklamy
  1. No trackbacks yet.

Zanechat Odpověď

Vyplňte detaily níže nebo klikněte na ikonu pro přihlášení:

WordPress.com Logo

Komentujete pomocí vašeho WordPress.com účtu. Odhlásit / Změnit )

Twitter picture

Komentujete pomocí vašeho Twitter účtu. Odhlásit / Změnit )

Facebook photo

Komentujete pomocí vašeho Facebook účtu. Odhlásit / Změnit )

Google+ photo

Komentujete pomocí vašeho Google+ účtu. Odhlásit / Změnit )

Připojování k %s

%d bloggers like this: