Saya ingin tahu apa, mengapa atau kapan lebih baik memilih cshtml dan apa, mengapa atau kapan lebih baik memilih teknologi aspx? Untuk apa kedua teknologi ini?
Terima kasih,
Saya ingin tahu apa, mengapa atau kapan lebih baik memilih cshtml dan apa, mengapa atau kapan lebih baik memilih teknologi aspx? Untuk apa kedua teknologi ini?
Terima kasih,
Jawaban:
Seperti yang telah dijawab orang lain, .cshtml
(atau .vbhtml
jika itu selera Anda) menyediakan pemetaan penangan untuk memuat mesin MVC. The .aspx
ekstensi hanya memuat aspnet_isapi.dll yang melakukan kompilasi dan menyajikan bentuk web. Perbedaan dalam pemetaan penangan hanyalah sebuah metode yang memungkinkan keduanya untuk hidup berdampingan di server yang sama yang memungkinkan aplikasi MVC dan aplikasi WebForms untuk hidup di bawah akar yang sama.
Ini memungkinkan http://www.mydomain.com/MyMVCApplication menjadi valid dan disajikan dengan aturan MVC bersama dengan http://www.mydomain.com/MyWebFormsApplication menjadi valid sebagai formulir web standar.
Sunting:
Adapun perbedaan dalam teknologi, kerangka kerja kerangka MVC (Razor) dimaksudkan untuk mengembalikan halaman .Net ke platform "berbasis web" yang lebih tenang dari tampilan templat yang memisahkan logika kode antara model (objek bisnis / data) , tampilan (apa yang dilihat pengguna) dan pengontrol (hubungan antara keduanya). Model WebForms (aspx) adalah upaya Microsoft untuk menggunakan penyematan javascript yang kompleks untuk mensimulasikan aplikasi yang lebih berstatus mirip dengan aplikasi WinForms lengkap dengan peristiwa dan siklus hidup halaman yang akan mampu mempertahankan statusnya sendiri dari halaman ke halaman.
Pilihan untuk menggunakan satu atau yang lain selalu akan menjadi perdebatan karena ada argumen yang mendukung dan menentang kedua sistem tersebut. Saya untuk satu seperti kesederhanaan dalam arsitektur MVC (meskipun perutean sama sekali tidak sederhana) dan kemudahan sintaks Razor. Saya merasa arsitektur WebForms terlalu berat untuk menjadi platform web yang efektif. Meskipun demikian, ada banyak contoh di mana kerangka kerja WebForms menyediakan model yang sangat ringkas dan dapat digunakan dengan struktur acara kaya yang didefinisikan dengan baik. Semuanya bermuara pada kebutuhan aplikasi dan preferensi mereka yang membangunnya.
Razor adalah mesin tampilan untuk ASP.NET MVC, dan juga mesin template . Kode Razor dan kode inline ASP.NET (kode dicampur dengan markup) keduanya dikompilasi terlebih dahulu dan diubah menjadi perakitan sementara sebelum dieksekusi. Jadi, seperti C # dan VB.NET keduanya dikompilasi ke IL yang membuatnya dapat dipertukarkan, kode Razor dan Inline keduanya dapat dipertukarkan.
Karena itu, ini lebih merupakan masalah gaya dan minat. Saya lebih nyaman dengan pisau cukur, daripada kode inline ASP.NET, yaitu, saya lebih suka halaman Razor (cshtml) daripada halaman .aspx.
Bayangkan Anda ingin mendapatkan Human
kelas, dan merendernya. Dalam file cshtml Anda menulis:
<div>Name is @Model.Name</div>
Sementara di file aspx Anda menulis:
<div>Name is <%= Human.Name %></div>
Seperti yang Anda lihat, @
tanda pisau cukur membuat kode pencampuran dan markup jauh lebih mudah.
Model
digunakan untuk tampilan yang sangat diketik, di mana Anda menentukan jenis Anda di atas menggunakan model
kata kunci.
Sementara sintaksnya tentu berbeda antara Razor ( .cshtml
/ .vbhtml
) dan WebForms ( .aspx
/ .ascx
), (Razor lebih ringkas dan modern dari keduanya), tidak ada yang menyebutkan bahwa sementara keduanya dapat digunakan sebagai Mesin Tampilan / Mesin Templating, ASP.NET tradisional Kontrol Formulir Web dapat digunakan pada file .aspx atau .ascx apa pun, (bahkan dalam kohesi dengan arsitektur MVC).
Ini relevan dalam situasi di mana solusi jangka panjang untuk suatu masalah telah ditetapkan dan dikemas ke dalam komponen yang dapat dicolokkan (misalnya kontrol pengunggahan file besar) dan Anda ingin menggunakannya di situs MVC. Dengan Razor, Anda tidak dapat melakukan ini. Namun, Anda dapat menjalankan semua pemrosesan backend yang sama yang akan Anda gunakan dengan arsitektur ASP.NET tradisional dengan tampilan Formulir Web.
Selain itu, tampilan formulir web ASP.NET dapat memiliki file di belakang kode, yang memungkinkan logika embedding ke dalam file terpisah yang dikompilasi bersama dengan tampilan tersebut. Sementara komunitas pengembangan perangkat lunak tumbuh untuk melihat arsitektur yang digabungkan erat dan pola Klien Cerdas sebagai praktik yang buruk , ini dulunya adalah cara utama dalam melakukan sesuatu dan masih sangat mungkin dilakukan dengan file .aspx / .ascx. Pisau cukur, sengaja, tidak memiliki kualitas seperti itu.
File cshtml adalah yang digunakan oleh Razor dan seperti yang dinyatakan sebagai jawaban untuk pertanyaan ini , keuntungan utamanya adalah dapat dirender di dalam unit test. Beragam jawaban untuk topik lain ini akan membawa banyak poin menarik lainnya.