Bekerja dengan Blok Aplikasi Unity

Mirip dengan Castle Windsor dan StructureMap, Unity Application Block juga merupakan wadah IoC (Inversion of Control). Blok Aplikasi Persatuan dari Microsoft adalah wadah injeksi ketergantungan yang dapat diperluas dan ringan. Ini memberikan dukungan untuk injeksi konstruktor, injeksi properti dan juga injeksi panggilan metode. Secara kebetulan, Blok Aplikasi Unity diperkenalkan sebagai bagian dari Enterprise Library.

Jika Anda tidak terbiasa dengan apa itu Dependency Injection dan Inversion of Control, berikut adalah penjelasan singkatnya. Dependency Injection merupakan perwujudan dari prinsip IoC. Inversi kontrol dan injeksi dependensi adalah cara yang memungkinkan Anda memutus dependensi di antara komponen dalam aplikasi Anda. Prinsip Injeksi Ketergantungan menyatakan bahwa modul tingkat tinggi dalam aplikasi seharusnya tidak bergantung pada modul tingkat rendah; sebaliknya, keduanya harus bergantung pada abstraksi.

Tujuan desain Blok Aplikasi Unity

Blok Aplikasi Persatuan adalah wadah Injeksi Ketergantungan (DI). Perhatikan bahwa Blok Aplikasi Unity tidak memiliki ketergantungan apa pun pada sistem konfigurasi Perpustakaan Perusahaan. Karenanya, Anda dapat menggunakannya sebagai wadah injeksi dependensi yang berdiri sendiri tanpa menggunakan Enterprise Library yang diinstal di sistem Anda. Tujuan desain Blok Aplikasi Unity meliputi:

  1. Mempromosikan desain modular melalui decoupling
  2. Menyediakan wadah injeksi ketergantungan yang cepat, dapat diperluas, dan ringan
  3. Memberikan dukungan untuk ekstensibilitas melalui ekstensi
  4. Memberikan dukungan untuk injeksi yang digerakkan oleh atribut
  5. Memberikan dukungan untuk API intuitif untuk terhubung dan bekerja dengan kontainer injeksi ketergantungan

Mulai

Di bagian ini kita akan mengeksplorasi bagaimana kita bisa mulai menggunakan Blok Aplikasi Unity di aplikasi kita. Langkah pertama adalah menginstal Unity Application Block di sistem Anda. Cara termudah untuk menginstal pustaka ini adalah melalui NuGet. Untuk keperluan ilustrasi ini, kami akan menggunakan proyek aplikasi konsol di sini. Untuk membangun aplikasi pertama menggunakan Unity Application Block, ikuti langkah-langkah berikut:

  1. Buka Visual Studio IDE
  2. Buat Proyek Konsol dan simpan dengan nama
  3. Klik kanan pada proyek di Jendela Penjelajah Solusi
  4. Pilih "Kelola Paket NuGet ..."
  5. Instal Unity NuGet Package Manager

Hanya itu yang perlu Anda lakukan untuk menyiapkan panggung bagi Anda untuk mulai menggunakan Unity. Anda sekarang siap menggunakan Unity Application Block dalam proyek Anda.

Membuat dan menyelesaikan dependensi objek menggunakan container Unity

Anda dapat menggunakan wadah Unity untuk menyelesaikan dependensi pada objek tertentu dengan mudah seperti yang ditunjukkan dalam cuplikan kode berikut.

IUnityContainer container = new UnityContainer();

container.RegisterType();

container.RegisterType();

Saat Anda mendaftarkan tipe objek dengan wadah Unity, Anda dapat menentukan masa pakai. Jika Anda tidak menentukan apa pun, masa pakai default akan digunakan. Seorang manajer seumur hidup mengontrol masa pakai objek terdaftar. Jenis pengelola seumur hidup yang didukung oleh Unity Application Block meliputi: TransientLifetimeManager, ContainerControlledLifetimeManager, HierarchicalLifetimeManager, PerThreadLifetimeManager, dan ExternallyControlledLifetimeManager.

Pertimbangkan antarmuka berikut yang disebut ILogger.

public interface ILogger

   {

       string GetLogTypeName();

   }

Antarmuka ILogger berisi deklarasi satu metode bernama, GetLogTypeName (). Kelas FileLoger, DatabaseLogger dan EventLogger (diberikan di bawah) mengimplementasikan antarmuka ILogger.

public class FileLogger : ILogger

   {

       public string GetLogTypeName()

       {

           return "File Logger";

       }

   }

   public class DatabaseLogger: ILogger

   {

       public string GetLogTypeName()

       {

           return "Database Logger";

       }

   }

   public class EventLogger: ILogger

   {

       public string GetLogTypeName()

       {

           return "Event Logger";

       }

   }

Daftar kode berikut menunjukkan bagaimana Anda dapat menyelesaikan dependensi menggunakan UnityContainer.

static void Main(string[] args)

{

IUnityContainer container = new UnityContainer();

container.RegisterType();

ILogger iLogger = container.Resolve();

string logType = iLogger.GetLogTypeName();

Console.WriteLine(logType);

Console.Read();

}

Perhatikan bahwa "Container" di Unity Application Block adalah objek yang dapat digunakan untuk membuat dan memasukkan dependensi. Anda bisa mendaftarkan tipe atau tipe pemetaan dengan wadah Unity menggunakan metode RegisterType. Metode Resolve () digunakan untuk mengembalikan contoh konkret dari tipe yang didaftarkan untuk tipe generik yang disebutkan menggunakan T. Dalam contoh kode yang diberikan di atas, metode Resolve () akan mengembalikan contoh kelas FileLogger.

Pendekatan alternatif untuk menentukan integrasi Unity adalah melalui konfigurasi. Dengan asumsi Anda telah menetapkan container bernama Container dalam konfigurasi Unity Anda, cuplikan kode berikut menggambarkan bagaimana Anda dapat memanggil metode LoadConfiguration pada instance container dalam kode Anda.

string containerName = "Container";

IUnityContainer container = new UnityContainer().LoadConfiguration(containerName);