Pendekatan Arsitektural Solusi ASP.NET MVC (1)

Solusi ASP.NET MVC adalah pilihan selain Web Form yang bisa kita gunakan untuk membangun sebuah aplikasi web. Kedua solusi tersebut berdiri di atas platform yang sama yaitu ASP.NET. Oleh karena itu tidak mengherankan kalau service atau building block fundamental bisa digunakan dalam kedua solusi tersebut. Dalam posting ini saya akan memfokuskan diri pada pendekatan arsitektural dalam membuat sebuah solusi ASP.NET MVC.

Rencana saya membuat 3 posting berseri dalam topik ini. Bagian pertama ini akan menjelaskan pendekatan termudah berupa pemisahan antara Model dengan View-Controller. Di bagian kedua nanti saya akan menyoroti penggunaan Repository pattern, dan di bagian ketiga nanti saya akan mencoba menghadirkan Service Layer sebagai tempat terpisah untuk menaruh business-logic.

Mengacu kepada penjelasan dalam e-book saya "Mengenal ASP.NET MVC", secara fundamental arsitektur ASP.NET MVC bisa dilihat dalam gambar berikut ini.


Dalam gambar tersebut memang terlihat dengan jelas bahwa antara Controller, View, dan Model terpisah dalam bagian-bagian yang berbeda. Memang secara arsitektur, ASP.NET MVC menawarkan level pemisahan tanggung jawab yang lebih granular dan lebih strict dibandingkan dengan Web Form. Visual Studio 2008 sebagai salah satu tools yang menyediakan template project ASP.NET MVC pun dengan tepat menempatkan file-file yang tergolong Model,View, dan Controller ini dalam folder masing-masing seperti terlihat dalam gambar berikut ini.


Nah, kita bisa me-refine solusi yang di-generate oleh Visual Studio 2008 tersebut dan memisahkan Model dalam project yang berbeda dalam bentuk class library. Beberapa benefit yang bisa kita peroleh dengan memisahkan model dalam project yang berbeda adalah sbb:

  • Kita bisa mengembangkan Model terpisah dari aplikasi web. Models tersebut berbentuk class library yang akan di-compile dalam bentuk assembly. Model ini bisa kita deploy ke dalam aplikasi apa pun: ASP.NET MVC, Web Form, WCF, WPF, dan lain-lain.
  • Kita bisa melakukan unit-testing terhadap Model ini secara terpisah, sehingga aplikasi consumer Models tersebut tidak perlu menyediakan modul testing untuk Model ini.
  • Kita bisa memilih framework Models dengan lebih bebas. Kita bisa menggunakan LINQ to SQL, Castle ActiveRecord, SubSonic, ADO.NET Entity Framework, dan lain sebagainya.

So, setelah kita memisahkan Models ini dalam project yang berbeda, struktur dari solusi Visual Studio 2008 akan tampak seperti dalam gambar berikut ini (mengambil gambar dari salah satu project ASP.NET MVC yang sedang dijalankan oleh Efindo).


Perhatikan bahwa ada 3 project dalam solusi di atas: Models, test project untuk Models, dan View-Controller (Web). Kita pun bisa membuat test project terpisah untuk  View-Controller dan menambahkannya dalam solusi sebagai project ke-empat kalau memang diperlukan.

So, dalam seri pertama pendekatan arsitektural ASP.NET MVC ini yang hendak ditekankan adalah pemisahan secara fisik dari Model ke dalam project yang berbeda. Dengan pemisahan ini kita bisa mendapatkan beberapa benefit yang membuat solusi kita lebih fleksibel.

Share this post: | | | |
Published Friday, May 08, 2009 8:33 AM by Agus Suhanto
Filed under: ,

Comments

# re: Pendekatan Arsitektural Solusi ASP.NET MVC (1)

Friday, May 08, 2009 3:28 PM by ronaldwidha

Halo, saya kurang setuju dengan diagramnya. Interaksi user memang dengan view, tapi view tidak memanggil controller.

Secara process lifecyclenya, dari uri, controller di instantiate dulu untuk menghasilkan view.

yang agus gambarkan adalah model view presenter

ronaldwidha.net/.../difference-between-model-view-presenter-and-model-view-controller

Powered by Community Server (Commercial Edition), by Telligent Systems