Ini adalah pertanyaan basi dengan banyak jawaban tetapi tidak ada jawaban yang saya harapkan terdaftar.
Jawaban singkatnya adalah:
- Gunakan ASP.NET MVC jika Anda berniat membangun aplikasi web dengan benar dengan konvensi pemrograman modern dan pola yang dianut industri untuk platform ASP.NET. Di sisi bawah Anda akan diharapkan untuk mengetahui bagaimana HTML dan sumber daya sisi klien (Javascript, CSS) bekerja serta meningkatkan pada pola pikir pemrograman MVC yang memiliki kurva belajar yang curam tetapi mencapai akhir yang tiba-tiba begitu dipahami.
- Gunakan Formulir Web ASP.NET jika Anda menggunakan atau ingin menggunakan pendekatan GUI- sentris, RAD (Pengembangan Aplikasi Cepat) , seret-dan-jatuhkan untuk membuat prototipe sesuatu dengan sangat cepat, misalnya perilaku tombol-tekan / kisi-kisi data yang terhubung dalam 15 menit, dan solusinya tidak dimaksudkan untuk menjadi sesuatu yang didukung oleh pengembang. Atau, Gunakan ASP.NET Web Forms jika Anda memiliki latar belakang dalam pengembangan GUI atau Windows Forms dan Anda ingin mentransfer pengetahuan Anda ke Web.
Tetapi untuk melihat ini dengan benar, Anda harus memahami sejarah masing-masing.
Formulir Web ASP.NET adalah jawaban Microsoft untuk mereka yang telah membangun aplikasi web dinamis menggunakan kontrol Visual Basic 6 ActiveX, VB6 DLL di server, dan ASP Classic. Pada saat itu, pengembangan web menggunakan alat-alat Microsoft ini benar-benar berantakan. Seiring dengan keseluruhan .NET Framework yang merupakan output dari Microsoft pada dasarnya akan kembali ke papan gambar tentang bagaimana melakukan pemrograman bisnis yang produktif pada tumpukan Windows, ASP.NET Web Forms, pada masanya, menakjubkan dan indah.
Seluruh pendekatan adalah untuk memberikan pengembang yang terbaik dari kedua dunia dari sesuatu yang sangat mirip dengan pengembangan aplikasi Windows, tetapi dengan kekuatan layanan internet. Idenya adalah bahwa, seperti halnya VB6 / WinForms "Formulir" (jendela) juga halaman web adalah formulir (seperti jendela, lihat) , dan pada formulir itu Anda dapat menyeret-dan-jatuhkan label, kotak teks, kisi data, tombol, dan hal-hal lain yang biasa digunakan oleh pengembang GUI VB / WinForms.
Untuk membuat tombol melakukan sesuatu, setelah menyeret-dan-menjatuhkan Anda cukup klik dua kali pada desainer dan boom Anda berada di editor kode, memberi tahu formulir apa yang harus dilakukan ketika peristiwa "klik" itu terjadi. Ini persis bagaimana pengembang Windows GUI menciptakan perangkat lunak menggunakan GUI tooling VB6 dan alat yang bersaing, kecuali sekarang kode mengeksekusi di server! Wow!
Ini adalah teknologi tahun 2002. Luar biasa dan indah pada masanya sebagai jawaban untuk solusi GUI yang memungkinkan internet untuk pengembangan RAD , itu membawa rasa kekuatan ke dunia yang berantakan dari para pengembang perangkat lunak yang memiliki tujuan bisnis yang harus mereka capai.
Sayangnya, model pemrograman ini sangat menekankan metafora pemrograman Windows GUI sehingga membawa serta beban detail implementasi yang diperlukan, semua beban pembebanan yang diperlukan untuk mengakomodasi siklus hidup acara dan menyimpan rincian jelek dari HTML sederhana dan skrip yang akan dihasilkan komponen dan kontrol seret dan lepas ini. Dan pada akhirnya, pengembang yang mendukung aplikasi nyata pasti harus menggali lebih dalam komponen-komponen ini atau menulis sendiri, dan akibatnya mereka akan bertempur dengan infrastruktur ini, pertempuran yang akan meninggalkan tumpukan tumpukan demi tumpukan, menarik rambut, dan air mata.
Cadangkan. Cuci tanganmu. Mari kita lihat masalah bisnis lagi. Apa tujuan bisnis kita?
Kita perlu membangun dan mengelola aplikasi web . Kendala kami adalah bahwa kami memiliki World Wide Web, yang duduk di HTTP, HTML, Javascript, dan CSS, dan di server kami memiliki aturan bisnis, database, dan beberapa bahasa pemrograman yang hebat (misalnya C #). Apakah kita benar-benar membutuhkan metafora Windows GUI ini untuk mendorong metodologi pengembangan kita? Mengapa kita tidak bisa hanya fokus pada masalah aplikasi dan menghapus metafora GUI?
Di sinilah ASP.NET MVC masuk. Ini dimulai oleh pemberontakan pengembang yang menyebut diri mereka "Alt.Net" yang ingin kembali ke prinsip pengembangan perangkat lunak yang tepat dan murni. Tidak ada lagi masalah, hanya fokus pada tujuan bisnis dan praktik terbaik perangkat lunak.
Apa yang sebenarnya diterjemahkan dalam hal ini adalah:
- Pemisahan masalah . Sebagai contoh, komponen data tidak perlu tahu bagaimana data akan diberikan, juga markup tampilan tidak boleh dibebani dengan detail konfigurasi koneksi database, dan dengan cara ini pengembang dapat fokus pada bidang yang menjadi perhatiannya ketika mengedit dan kode pengujian.
- Eksposur dan dukungan penuh untuk eksposur pada seluk beluk HTML dan sumber daya terkait . Dalam Formulir Web, HTML terselip, pengembang tidak suka repot-repot dengan itu. Dalam ASP.NET MVC, pengembang agak didorong untuk mengelola detail tersebut; sebenarnya itu suatu keharusan. Keuntungan di sini adalah bahwa pengembang dapat kembali belajar untuk menghargai semantik bersih dari HTML, CSS, dan script, dan bekerja dengan itu daripada melawannya.
- Testabilitas benda-benda bisnis . Pengontrol dan model jauh lebih cocok untuk pengujian unit program, sehingga implementasi dapat divalidasi untuk memenuhi tujuan bisnis, dan perubahan dapat diverifikasi sehingga tidak akan pecah. Dengan Formulir Web sulit untuk menguji karena komponen tidak dirancang untuk diuji secara individual dan seluruh hasil pengembangan berputar di sekitar formulir halaman dan siklus hidup acara mereka dengan kotoran logika bisnis dan logika presentasi yang sangat terkait.
Perhatikan bahwa HTML sudah menjadi bahasa markup tingkat sangat tinggi, seperti halnya Javascript bahasa pemrograman tingkat tinggi. Seluruh cerita akan berbeda jika kita berurusan dengan bahasa Majelis dan C.
Memperluas pada # 2, kemudian, tujuan lain dari ASP.NET MVC adalah untuk memungkinkan pengembang untuk mengatur rincian front-end dari bagian 'tampilan' dari solusi mereka dan mengambil keuntungan dari fondasi kaya yang dibangun oleh industri lainnya. platform klien front-end.
Anda akan menemukan bahwa pengembang ASP.NET MVC merasa betah menggunakan perpustakaan Javascript yang kaya dan teknik templating sisi klien tanpa berkelahi dengan arsitektur sisi server. Ini pada awalnya bukan kasus dengan ASP.NET Web Forms, karena Formulir Web tidak ingin Anda melihat HTML atau skrip sama sekali, kecuali jika Anda benar-benar harus , dalam hal ini, berhati-hatilah, itu bukan untuk pingsan dari hati.