Hem Rails hem de ASP.NET MVC ile gerçek uygulamalar geliştirdim, ancak bu cevap önemli bir uyarı ile geldi: Ön sürüm 2 Rails ile öğrendim ve geliştirdim, bu nedenle tamamen eski durumdayım. Bilgi Rails.
Olduğu söyleniyor, biriyle yapılabilecek hiçbir şey olduğunu sanmıyorum . Bir web uygulaması için herhangi bir gereksinim kümesi göz önüne alındığında, bu uygulamayı Rails veya ASP.NET MVC ile muhtemelen eşit derecede verimli bir şekilde oluşturabilmelisiniz.
Bildiğim kadarıyla, ASP.NET MVC’de, çoğunlukla C # /. NET’in özelliklerinden dolayı mevcut olan birkaç güzel şey var. Örneğin: gönderilen bir form içeren bir sayfam olduğunda, ne yapılacağına karar vermek için bir GET veya POST ile ilgilenip ilgilenmediğini kontrol eden bir Eylemim olacaktır:
def edit
@item = Item.find(params[:id])
if request.post?
@item.update_attributes(params[:item])
redirect_to :action => 'edit', :id => @item.id
end
end
Bu önemsiz bir örnektir, ancak if request.post?
desen Rails'de oldukça yaygındır. Önemsiz olmayan durumlar için, Eylem kodu büyük ve karışık olabilir ve sık sık, temiz bir şekilde ayrı yöntemlerle yeniden düzenlemeyi isterdim. ASP.NET MVC’de bunu yapabilirim:
public ActionResult Edit() {
// Render my page that has the Edit form
...
}
[HttpPost]
public ActionResult Edit(Foothing foo) {
// Save my Foothing data
...
}
GET ve POST isteklerinin işlenmesini temiz bir şekilde ayırabilmenin temiz olduğunu düşünüyorum. Kilometreniz değişebilir.
ASP.NET MVC’nin bunu çok iyi yaptığını söyleyen diğer şey (bence yine de) POSTS formunu kullanmakla da ilgili. Rails'de, params
tüm form değişkenlerimin karmasını sorgulamalıyım . Diyelim ki 'statü', 'gonkulated', 'invert' ve 'disosition' alanlarıyla bir formum var:
def edit
@item = Item.find(params[:id])
if params[:status] == "new"
...
else
...
end
if params[:gonkulated] == "true"
...
else
...
end
if params[:invert] == "true"
...
else
...
end
# Rest ommited for brevity
end
Ancak ASP.NET MVC düzgünce tüm form değerlerimi Action yöntemime parametre olarak almamı sağlıyor:
[HttpPost]
public ActionResult Edit(int id, string status, bool gonkulated, bool invert, int disposition) {
...
}
Bunlar ASP.NET MVC veya Rails hakkında gerçekten sevdiğim iki şey. Herhangi bir aklı başında veya uzman geliştiricinin bir çerçeveyi diğerine seçmesi için bir neden yeterli değildir.