ASP.NET MVC vs WebForm

Dengan MVC kita lebih mudah mengimplementasikan TDD. Kalaupun kita tidak mau menggunakan TDD, pakai MVC pun tidak dilarang. Bahwa dengan MVC kita lebih mudah melakukan TDD karena memang dari awal sudah di-design dengan TDD, dan di-design agar pemakainya lebih mudah melakukan TDD. Kita bisa men-download source code ASP.NET MVC dari CodePlex, dan dalam source code tersebut bisa juga dilihat unit test untuk setiap komponen/class dalam solution ASP.NET MVC.

Arsitektur WebForm adalah page centric. Sebuah web request berkorespondensi dengan sebuah page, baik physical maupun logical. Jika kita punya request http://mywebsite/product.aspx, maka dalam webserver akan ada page hander berupa file product.aspx, ataupun logical page yang bisa kita implementasikan dalam sebuah program CMS misalnya.

[1]

Sedangkan arsitektur ASP.NET MVC tidak demikian. Dalam ASP.NET MVC dikenal sebuah istilah yang diberi nama front-controller. Di mana ia berfungsi sebagai dispatcher dari setiap web request. Dispatcher tersebut berfungsi melakukan mapping antara web request dengan Controller/Action yang akan meng-handle web request tersebut. Controller berfungsi sebagai handler dari web request, sekaligus logic dari aplikasi. Selanjutnya Controller akan menjalankan fungsinya sebagai business logic dari aplikasi dan merepresentasikan data atau informasi yang akan ditampilkan dalam bentuk model. Model, sesuai dengan namanya, me-representasikan domain model dari aplikasi kita. Selanjutnya Controller akan mengirimkan data tersebut ke dalam View untuk ditampilkan dalam web browser.

Kalau kita bandingan dengan konsep 3 tier layer di mana di situ ada UI, Business Logic, dan Data Access, maka View akan menempati layer UI. Controller menempati layer gabungan antara Business Logic dan Data Access. Model bukanlah data access, karena Model adalah domain model yang bersifat pasif, model adalah representasi data itu sendiri dalam aplikasi, bukan sekumpulan logic atau infrastruktur untuk memanipulasi data.

Kalau kita bandingkan lagi antara arsitektur WebForm dan MVC dari sisi lain, WebForm mengimplementasikan model event-driven programming. Kita tentu sudah familiar dengan event Page_Load, Page_Init, Button_Click dan seterusnya. Setiap event, ada event-handler-nya dalam page tersebut. Dalam ASP.NET MVC tidak demikian. Setiap user-action berkorespondensi dengan Controller/Action yang akan meng-handle user-action tersebut. Walaupun apabila kita menggunakan default WebFormViewEngine kita masih bisa mengimplementasikan sebagian dari event-driven programming tersebut karena ViewPage masih inherit dari Page dimana semua deklarasi event tersebut berada. Namun, perlu diingat bahwa ASP.NET MVC memperbolehkan kita memilih implementsi view engine selain default. Dalam view engine-view engine tersebut boleh jadi tidak dikenal model event-driven programming ini.

Hal lain yang membedakan adalah sifat statefull dari WebForm dengan mekanisme view state-nya. Kita semua tahu bahwa web/http pada dasarnya stateless. Namun, dengan mekanisme view-state dari WebForm, sifat stateless ini seakan-akan bisa bersifat statefull. Dalam ASP.NET MVC, mekanisme ViewState ini sudah tidak ada lagi.

Terus kenapa kita mesti mempertimbangkan MVC sedangkan kita sudah terbiasa dengan arsitektur WebForm?

Pertimbangan utama terletak pada fleksibilitas. Memang betul bawa WebForm sangat memudahkan kita karena mekanisme event driven, sifat statefull, dan lain-lain. Namun, kita terikat kuat ke dalam mekanisme tersebut. Dengan MVC kita memiliki fleksibilitas untuk memilih view engine. Dengan demikian kita juga memiliki fleksibilitas untuk memanipulasi views. Kita punya fleksibilitas bagaimana menerapkan Ajax, kita punya fleksibilitas bagaimana me-render sebuah area dengan JavaScript, kita punya fleksibilitas untuk berinteraksi dengan server secara asynchronous, dll.

[forums: http://geeks.netindonesia.net/forums/t/9719.aspx]


[1]more

By vandro.pratama with No comments

0 komentar:

Posting Komentar