Mengapa Anda menggunakan MVC melalui Formulir Web?

11

Baru-baru ini seorang arsitek menggambarkan perusahaan kami sebagai menawarkan solusi Rolls-Royce (MVC) ketika yang ia butuhkan hanyalah Toyota (Formulir Web).

Saya ingin tahu apa pendapat Anda tentang formulir web vs MVC sebagai pilihan arsitektur.

Misteri
sumber
11
Saya pikir bahwa arsitek tidak memiliki pemahaman yang sangat baik tentang ASP.NET MVC.
Adam Crossland
3
@Chris Webforms bukan bagian dari MVC. Keduanya bekerja sepenuhnya secara independen satu sama lain. Bentuk web juga sudah tua dan mungkin tidak dipelihara lebih lama. Juga, untuk front-end web / UI devs itu adalah anti-kristus.
Erik Reppen

Jawaban:

20

Analogi Rolls-Royce / Toyota sangat cacat dan menyesatkan. Satu (ASP.NET MVC) bukan hanya versi yang lebih mewah atau lebih mahal dari yang lain (ASP.NET WebForms). Mereka adalah pendekatan yang sangat berbeda untuk membangun aplikasi web menggunakan ASP.NET.

Bagi saya, perbedaan arsitektur terbesar antara MVC dan WebForms adalah bagaimana mereka bekerja dengan lingkungan tanpa kewarganegaraan web: WebForms bekerja keras untuk membangun serangkaian abstraksi yang menyembunyikan sifat tanpa kewarganegaraan pemrograman web, sedangkan MVC mencakup lingkungan tanpa kewarganegaraan dan bekerja dengan Itu.

Setiap pendekatan memiliki manfaat dan kerugiannya, tetapi saya benar-benar menikmati bagaimana membangun situs web dengan MVC terasa lebih alami daripada WebForms (dengan lapisan demi lapisan abstraksi yang bocor ).

Eric King
sumber
1
abstraksi yang jelek itu sangat bermasalah. Mempelajari Asp .Net MVC membuka mata Anda pada protokol http
Michal Franc
10

Pertanyaan lama tetapi layak mendapatkan jawaban yang lebih rinci untuk berjaga-jaga jika ada orang lain di luar sana yang masih memiliki dilema.

Pada akhirnya, webforms adalah solusi thin-client yang berarti Anda menekan banyak tombol cantik dan hal-hal ujung depan (klien) dibuat untuk Anda. Jika Anda memiliki orang-orang yang tahu bagaimana cara membuatnya dalam bentuk web dan sama sekali tidak ada masalah rawatan / pengubahan dan situs ini sepenuhnya bersifat jangka pendek dan sekali pakai, sama sekali tidak ada yang salah dengan pendekatan ini. Dimungkinkan untuk mempelajari cara melakukan hal-hal Anda sendiri tetapi dalam hal ini akan membutuhkan mengetahui kedua hal webform web mencoba untuk melindungi pengembang aplikasi .NET dari dan semua hal bentuk web yang membuat sebagian besar pengembang web sisi klien ingin membunuh Microsoft insinyur yang bertanggung jawab.

Dalam 99,5% dari semua skenario kasus penggunaan lainnya, kami telah berhenti berusaha menyembunyikan web dari pengembang aplikasi karena sungguh, jika Anda ingin menulis aplikasi web, Anda sebenarnya lebih baik mempelajari cara kerja web. Ironi dari solusi thin vs thin client adalah bahwa pendekatan thin-client mau tidak mau mengeluarkan omong kosong dari ujung depan Anda dan sama sekali tidak berkinerja. Lebih penting lagi, solusi ini selalu membuat hal-hal tidak fleksibel sebagai neraka bagi orang-orang yang benar-benar tahu apa yang mereka lakukan dan tidak ingin dibatasi oleh kerangka kerja yang berlaku.

Tidak ada gunanya mengambil seseorang yang tahu segalanya tentang CSS, JavaScript, HTML, XHR dan menjadikannya sama sekali tidak berguna dengan menghadang mereka di setiap langkah dengan kerangka kerja yang ...

  • Menghapus semua tag skrip 'tidak dibutuhkan' di tag kepala untuk mencegah Anda mengacaukan dependensi skrip. (lebih baik membiarkan 'pengelola naskah' menangani itu untuk Anda) Memang, tidak ada yang menempatkan mereka di sana saat ini jika mereka tahu apa yang mereka lakukan tetapi itu hanya kacau.

  • Bersikeras Anda membungkus semua HTML dalam satu tag bentuk ginormous. HTML tidak mengizinkan formulir di dalam formulir sehingga Anda membuat formulir dengan cara webform atau tidak sama sekali.

  • Dibuat seperti 18 langkah "siklus-hidup" untuk apa yang sebenarnya harus dimunculkan untuk bereaksi terhadap peristiwa UI dengan berinteraksi dengan browser untuk mengirim pesan ke server dan kemudian bereaksi ketika server merespons. Abstraksi proses itu dengan tumpukan besar sampah tidak pernah perlu terjadi (dan untuk bersikap adil, MS bukan satu-satunya bajingan yang mencoba melakukan ini).

  • Sebenarnya melakukan segala yang mungkin untuk menghalangi penggunaan solusi non-webforms untuk masalah. Contoh: Ketika saya masih seorang klien sisi junior, saya menghabiskan sepanjang hari mencari cara untuk membuat tombol kirim di bagian atas halaman memicu tombol kirim di bagian bawah halaman (saya berasumsi karena itu satu-besar- bentuk raksasa). Biasanya ini akan memakan waktu 5 menit tetapi setelah beberapa jam membalikkan rekayasa formulir web JavaScript yang bertanggung jawab, saya menemukan bahwa mereka adalah salah satu dari pengaturan properti yang bahkan tidak saya ketahui pada saat itu yang memberi tahu Anda apa elemen bentuk terakhir yang harus dimiliki. Fokusnya adalah sehingga ketika tombol kirim diklik, hanya tombol Microsoft Submit (tm) resmi yang akan bekerja sehubungan dengan aktivasi penangan resmi Microsoft Submit (tm).

Jadi tidak, Rolls-Royce vs Toyota, benar-benar tidak masuk akal. Saya akan mengatakan lebih, Hyundai yang sangat masuk akal bahwa Anda membayar terlalu banyak untuk vs Pinto yang direkayasa oleh Microsoft dengan sistem onboard yang secara otomatis membuat belokan 90 derajat tajam ketika menemukan Anda membeli gas atau minyak dari orang lain selain Microsoft dan mendeteksi dinding yang nyaman untuk dibanting ke. Mobil ideal untuk pengemudi yang loyal terhadap merek yang tidak tahu apa-apa tentang web dan ingin bersumpah setia seumur hidup kepada Microsoft.

Semua .NET MVC sebenarnya, sederhana dan masuk akal, dan tidak menemukan kembali lapisannya sendiri untuk menampar di atas web. Ini hanya bekerja dengan apa yang ada di sana untuk membantu merobohkan beberapa boilerplate untuk Anda. Ada kerangka kerja yang lebih baik / lebih murah / gratis-er yang tersedia tetapi jika Anda sudah mengunci diri dalam hal .NET, Anda bisa melakukan jauh lebih buruk.

Tapi serius, tetaplah! @ # $ Jauh dari webforms. Sudah hampir mati sekarang. Biarkan saja. Beri tahu klien Anda bahwa Anda akan melakukannya tiga kali lipat dari uang jika mereka juga menjanjikan Anda kontrak dukungan setiap hari yang eksklusif dan menggiurkan ketika mereka benar-benar ingin melakukan sesuatu yang baru atau berbeda atau ketika omong kosong mulai pecah karena bahkan MS tidak dapat melakukannya. terganggu untuk terus menambahkan ke raksasa file 10.000 baris ajax.js mereka menarik keluar dari pantat DLL mereka di mana Anda tidak bisa menyentuhnya.

Erik Reppen
sumber
Hai Erik mencintaimu sebagai respons, jadi Anda mendapatkan upvot saya. Baru belajar HTML 5 dan CSS sehingga postingan Anda sangat informatif.
Chad
+1 Jawaban yang sangat bagus! Saya telah menghindari MVC selama bertahun-tahun karena saya pikir itu hanya akan menjadi pendekatan yang lebih rumit untuk formulir web. Kedengarannya seperti itu sebenarnya akan membuat apa yang saya coba lakukan dengan formulir web lebih mudah (misalnya saya selalu mencoba untuk menghindari semua Microsoft BS seperti Script Manager).
Drew Chapin
6

Solusi ASP.NET MVC tidak harus lebih rumit daripada solusi WebForms. Secara pribadi, saya menemukan ASP.NET MVC sebenarnya jauh lebih sederhana daripada WebForms, dan itu tampaknya lebih bersih.

Dari pengalaman saya, banyak kerangka kerja MVC (ASP.NET, Rails, CodeIgniter, dll.) Memiliki banyak fungsi inti dan konvensi yang sama. WebForms benar-benar bebek aneh dari perspektif web. Dugaan saya adalah sebagian besar programmer web akan lebih cepat dalam mengambil ASP.NET MVC daripada WebForms.

TaylorOtwell
sumber
5

Alasan utama Anda akan menggunakan ASP.NET MVC lebih dari ASP.NET WebForms adalah testability. Tentu Anda bisa semacam tes unit WebForms tetapi ini membutuhkan kerangka kerja mengejek dan banyak rasa sakit. Alasan kedua adalah MVC membuatnya sedikit lebih mudah untuk memisahkan masalah. Ini dapat memberikan banyak penggunaan kembali kode dan membuat kode Anda secara longgar digabungkan. Ini tidak berarti tidak mungkin melakukan hal yang sama di ASP.NET dengan pola seperti MVP.

Kelemahan dari MVC adalah bahwa Anda kehilangan banyak fungsi dan yang telah dibangun ke dalam WebForms selama dekade terakhir (hampir juga). MVC telah berjalan jauh sejak didirikan untuk menyediakan fitur serupa.

Sejauh kinerja, apakah ada yang punya bukti satu atau lain cara teknologi mana yang "lebih cepat"?

Saya tidak berpikir satu lebih baik dari yang lain. Saya benar-benar menyukai kerangka kerja MVC dan telah menggunakannya dengan sukses besar tetapi saya selalu memastikan bahwa saya memilih teknologi yang cocok dengan proyek tersebut.

Carlosfocker
sumber