Ne, neden veya ne zaman cshtml vs aspx seçmek daha iyidir?


108

Ne, neden veya ne zaman cshtml'yi seçmenin daha iyi olduğunu ve ne, neden veya ne zaman aspx teknolojilerini seçmenin daha iyi olduğunu bilmek istiyorum. Bu iki teknolojinin amacı nedir?

Teşekkür ederim,


Microsoft.com web sitesinin hiçbir yerinde cshtml dosyalarını gördüğümü sanmıyorum.
user34660

@ user34660 cshtml mi yoksa aspx mi olduğunu nasıl anlarsınız? uzantı gizlidir.
Sajuuk

Yanıtlar:


111

Diğer insanların da yanıtladığı gibi .cshtml(ya .vbhtmlda sizin tarzınız buysa), MVC motorunu yüklemek için bir işleyici eşlemesi sağlar. .aspxUzatma basitçe Aspnet_isapi.dll o gerçekleştirdiği derleme yükler ve web formları hizmet vermektedir. İşleyici eşlemesindeki fark, basitçe, hem MVC uygulamalarının hem de WebForms uygulamalarının ortak bir kök altında yaşamasına izin vererek ikisinin aynı sunucu üzerinde bir arada bulunmasına izin verme yöntemidir.

Bu, http://www.mydomain.com/MyMVCApplication'ın geçerli olmasına ve MVC kurallarıyla birlikte sunulmasına ve http://www.mydomain.com/MyWebFormsApplication'ın standart bir web formu olarak geçerli olmasına izin verir .

Düzenleme:
Teknolojilerdeki farklılıklara gelince, MVC (Razor) şablon oluşturma çerçevesi, .Net sayfalarını model arasındaki kod mantığını (iş / veri nesneleri) ayıran daha RESTful "web tabanlı" şablon görünümler platformuna döndürmeyi amaçlamaktadır. , görünüm (kullanıcının gördüğü) ve denetleyiciler (ikisi arasındaki bağlantı). WebForms modeli (aspx), Microsoft tarafından, olaylarla tamamlanmış bir WinForms uygulamasına benzer daha durum bilgisi olan bir uygulamayı ve sayfadan sayfaya kendi durumunu koruyabilecek bir sayfa yaşam döngüsünü simüle etmek için karmaşık javascript yerleştirmeyi kullanma girişimiydi.

Birini veya diğerini kullanma seçimi her zaman tartışmalı olacaktır çünkü her iki sistem lehinde ve aleyhinde argümanlar vardır. Ben, MVC mimarisindeki basitlik (yönlendirme basitten başka bir şey olmasa da) ve Razor sözdiziminin kolaylığı gibi. WebForms mimarisinin etkili bir web platformu olamayacak kadar ağır olduğunu düşünüyorum. Bununla birlikte, WebForms çerçevesinin iyi tanımlanmış zengin bir olay yapısına sahip çok kısa ve kullanışlı bir model sağladığı birçok örnek vardır. Her şey uygulamanın ihtiyaçlarına ve onu oluşturanların tercihlerine bağlı.


11
+1, ASP.NET Web Form'un durum bilgisiz web için durum bilgisi olan bir ortam oluşturma amacı arasındaki farkla ilgili önemli bir nokta bu.
smartcaveman

Aspx'in cshtml'ye kıyasla en büyük avantajlarından biri, tasarım sekmesini kullanarak sayfanın kendisini (WUSIWYG türü) görüntüleyip düzenleyebilmenizdir. Cshtml dosyalarıyla html sayfanızı düzenlemek için not defteri de kullanabilirsiniz. "Karanlıkta" çalışıyorsun.
nivs1978

@ nivs1978: Aslında bunu bir alt tarafı olarak görüyorum. Çok fazla geliştirici bunu özensiz biçimlendirme yazmak için koltuk değneği olarak kullanıyor. Sonuç olarak tasarımcı, görünümü yalnızca kendi dahili "tarayıcısı" ile işleyeceği için sayfanın yalnızca "neredeyse" bir sürümünü gösterebilir. Bir sayfanın nasıl görüntüleneceği hakkında genel bir fikir edinmiş olsanız da, gerçek bir tarayıcıda görüntülenene kadar hala bilemezsiniz.
Joel Etherton

44

Razor, ASP.NET MVC için bir görünüm motorudur ve ayrıca bir şablon motorudur . Razor kodu ve ASP.NET satır içi kodu (kodla karıştırılmış kod) önce derlenir ve yürütülmeden önce geçici bir derlemeye dönüştürülür. Bu nedenle, tıpkı C # ve VB.NET gibi, her ikisi de IL'ye derlenir ve bu da onları birbirinin yerine kullanılabilir kılar, Razor ve Inline kodlarının ikisi de değiştirilebilir.

Bu nedenle, daha çok bir stil ve ilgi meselesi. ASP.NET satır içi kod yerine jilet konusunda daha rahatım, yani Razor (cshtml) sayfalarını .aspx sayfalarına tercih ederim.

Bir Humanders almak ve onu işlemek istediğinizi hayal edin . Gelen cshtml dosyaları Yazdığınız:

<div>Name is @Model.Name</div>

İken aspx dosyaları yazdığınız:

<div>Name is <%= Human.Name %></div>

Gördüğünüz gibi @, ustura işareti kodu karıştırmayı ve işaretlemeyi çok daha kolay hale getiriyor.


6
Razor'daki @ MikaëlMayer, türünüzü anahtar kelimeyi Modelkullanarak en üstte tanımladığınız güçlü yazılmış görünümler için kullanılır model.
Saeed Neamati

Sizin için küçük bir soru @SaeedNeamati ...... Karmaşık mikro hizmetler tabanlı SOAP webAPI tüketmek için bir web uygulaması oluşturduğumuzu varsayalım .... bu senaryoda asp.net mvc aspx veya mvc cshtml kullanmak daha iyidir . Ben şahsen cshtml sözdiziminin daha kolay olduğunu hissettim.
codemilan

Güzel cevap ... bu cevabı anlamak çok daha kolay ..., en azından benim gibi yeni başlayanlar için :)
eRaisedToX

10

Sözdizimi Razor ( .cshtml/ .vbhtml) ve WebForms ( .aspx/ .ascx) arasında kesinlikle farklı olsa da (Razor ikisinden daha özlü ve moderndir), hiç kimse her ikisinin de Görünüm Motorları / Şablon Oluşturma Motorları, geleneksel ASP.NET olarak kullanılabileceğinden bahsetmedi. Web Forms denetimleri, herhangi bir .aspx veya .ascx dosyasında kullanılabilir (bir MVC mimarisiyle uyumlu olsa bile).

Bu, bir soruna uzun süredir devam eden çözümlerin kurulduğu ve takılabilir bir bileşen (örn. Büyük dosya yükleme kontrolü) halinde paketlendiği ve bunu bir MVC sitesinde kullanmak istediğiniz durumlarda geçerlidir. Razor ile bunu yapamazsınız. Ancak, Web Formu görünümüyle geleneksel bir ASP.NET mimarisiyle kullanacağınız tüm arka uç işlemlerini yürütebilirsiniz.

Ayrıca, ASP.NET web form görünümlerinde, görünümle birlikte derlenen ayrı bir dosyaya mantığın yerleştirilmesine olanak tanıyan Code-Behind dosyaları olabilir. Yazılım geliştirme topluluğu, birbirine sıkı sıkıya bağlı mimarileri ve Akıllı İstemci modelini kötü bir uygulama olarak görmek için büyürken, eskiden işleri yapmanın ana yoluydu ve .aspx / .ascx dosyalarıyla hala çok mümkün. Razor, kasıtlı olarak böyle bir niteliğe sahip değildir.


Bunu yazmaya başladığımda Joel düzenlemesini yapmamıştı, ancak birisi yardımcı bulursa diye bırakacağım
smartcaveman

4

Cshtml dosyaları Razor tarafından kullanılan dosyalardır ve bu soruya cevap olarak belirtildiği gibi , temel avantajları birim testler içinde işlenebilmeleridir. Bu diğer konuya verilen çeşitli cevaplar, başka birçok ilginç noktayı da beraberinde getirecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.