Apa, mengapa atau kapan lebih baik memilih cshtml vs aspx?

108

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,

Bastien Vandamme
sumber
Saya rasa saya tidak pernah melihat file cshtml di mana pun di situs web microsoft.com.
pengguna34660
@ user34660 bagaimana Anda menentukan apakah itu cshtml atau aspx? ekstensi dirahasiakan.
Sajuuk

Jawaban:

111

Seperti yang telah dijawab orang lain, .cshtml(atau .vbhtmljika itu selera Anda) menyediakan pemetaan penangan untuk memuat mesin MVC. The .aspxekstensi 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.

Joel Etherton
sumber
11
+1, Itulah poin penting tentang perbedaan antara tujuan Formulir Web ASP.NET untuk menciptakan lingkungan yang stateful untuk web tanpa negara.
smartcaveman
Salah satu keunggulan utama aspx dibandingkan dengan cshtml adalah Anda dapat melihat dan mengedit halaman itu sendiri (jenis WUSIWYG) menggunakan tab desain. Dengan file cshtml Anda mungkin juga menggunakan notepad untuk mengedit halaman html Anda. Anda sedang bekerja "dalam kegelapan".
nivs1978
@ nivs1978: Saya sebenarnya menganggap ini sebagai sisi buruknya. Terlalu banyak pengembang menggunakan ini sebagai penopang untuk menulis markup yang ceroboh. Pada akhirnya, desainer hanya mampu menunjukkan kepada Anda versi "hampir" dari halaman karena hanya akan merender tampilan dengan "browser" internalnya. Meskipun Anda mungkin mendapatkan gambaran umum tentang bagaimana suatu halaman akan ditampilkan, Anda masih tidak dapat mengetahuinya sampai halaman itu ditampilkan di browser yang sebenarnya.
Joel Etherton
44

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 Humankelas, 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.

Saeed Neamati
sumber
6
@ MikaëlMayer, di Razor, Modeldigunakan untuk tampilan yang sangat diketik, di mana Anda menentukan jenis Anda di atas menggunakan modelkata kunci.
Saeed Neamati
Sebuah pertanyaan kecil untuk Anda @SaeedNeamati ...... Katakanlah kita sedang membangun aplikasi web untuk menggunakan SOAP webAPI berbasis layanan mikro yang kompleks .... dalam skenario ini, apakah asp.net mvc aspx atau mvc cshtml lebih baik digunakan . Saya pribadi merasa sintaks cshtml lebih mudah.
codemilan
Jawaban yang bagus ... jawaban ini jauh lebih sederhana untuk dipahami ..., setidaknya untuk pemula seperti saya :)
eRaisedToX
10

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.

orang pintar
sumber
Ketika saya mulai menulis itu, Joel belum melakukan pengeditannya, tetapi saya akan membiarkannya jika ada yang merasa
terbantu
4

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.

Timothée Bourguignon
sumber