ASP.NET MVC Dependency Injection Dengan Unity

Sudah pernah saya tulis sebelumnya tulisan membahas konsep dasar dari Dependency Injection di sini. Semoga pembaca bisa memahaminya dan siap untuk menerapkannya pada aplikasi yang dibuat. Sekarang pada tulisan ini pembaca akan belajar bagaimana menerapkan DI pada ASP.NET MVC 4 menggunakan Unity.

MVC DI Unity

Pada MVC walaupun sudah ada pemisahan fungsi antara Model dan Controller namun Controller bergantung pada Model untuk mengeksekusi logika bisnis. Kode di bawah ini tidak akan asing lagi

Terlihat kalau BookController bergantung pada BookRepository.
Artikel ini akan menjelaskan cara untuk men-decouple layer model pada layer controller dengan bantuan Unity.

Membuat Project

Langkah pertama buat projectnya terlebih dahulu. Di sini saya menggunakan Visual Studio 2013. Visual Studio 2012 juga gak akan bermasalah.

1. Create Project

2. Basic Template

Instal Unity

Pasang Unity.Mvc4 pada project menggunakan Package Manager Console (Tools->Library Package Manager->Package Manager Console)

3. PMC

Bisa juga lewat GUI dengan cara klik kanan pada node project di Solution Explorer dan pilih Manage Nuget Pakcages.. kemudian search Unity.Mvc4 dan klik install.

Ketika sudah terpasang maka project akan memiliki 2 buah reference baru dan sebuah file baru dengan nama Bootstrapper.cs

4. Unity References

Isi dari file Bootstrapper.cs seperti di bawah ini

Repository

Supaya sederhana maka pada repository saya hanya menggunakan in memory data. Nantinya repository ini yang akan di-inject ke controller.

Buat dahulu kelas modelnya pada folder Models

Tambahkan interface IBookRepository pada folder Repository (buat terlebih dahulu folder ini)

Buat sekalian implementasinya BookRepository

Register Dependency

Supaya repository dapat di-inject ke dalam controller maka kita perlu mendaftarkannya terlebih dahulu pada file Bootstrapper.cs tadi. Tambahkan sebaris kode yang saya tandai di bawah ini

Inject Repository ke Controller

Sekarang kita sudah siap untuk meng-inject repository ke dalam controller menggunakan constructor injection.

Buat kelas BookController pada folder Controllers

Setting Global.asax.cs

Langkah terakhir supaya DI dapat berjalan adalah menginisialiasi Bootstrapper tadi dengan cara menambahkan sebaris kode yang saya tandai ini pada file Global.asax.cs

Jalankan

Running aplikasi dan see how everything is good, running well 😀

5. running

Facebook Comments
 

Agung Setiawan

Agung Setiawan adalah software engineer di BukaLapak.com, penulis sekaligus pecinta sastra, dan pembaca buku

 
Halo, perkenalkan saya Agung Setiawan.
Saya Software Engineer di BukaLapak.
Simak pemikian saya soal dunia Software Engineering via Twitter di @agungsetiawanmu dan facebook
Blog ini saya update seminggu sekali jadi sering-sering saja mampir
Mau belajar Vim bareng saya?
Belajar ngoding dari nol menggunakan PHP

Leave a Reply

Your email address will not be published. Required fields are marked *