Ho sviluppato applicazioni reali con Rails e ASP.NET MVC, ma questa risposta ha un avvertimento significativo: ho imparato e sviluppato con Rails pre-versione 2, quindi è del tutto possibile che io sia ampiamente obsoleto con il mio Conoscenza delle rotaie.
Detto questo, non penso che ci sia qualcosa che si possa fare con l'uno ma non con l'altro. Dato qualsiasi set di requisiti per un'applicazione Web, dovresti essere in grado di creare quell'app - probabilmente in modo altrettanto efficiente - con Rails o ASP.NET MVC.
Ci sono un paio di cose pulite che - per quanto ne so - sono disponibili in ASP.NET MVC principalmente a causa di aspetti di C # /. NET. Ad esempio: quando ho una pagina che contiene un modulo che viene inviato, avrei un'azione che controlla se si tratta di un GET o un POST per decidere cosa fare:
def edit
@item = Item.find(params[:id])
if request.post?
@item.update_attributes(params[:item])
redirect_to :action => 'edit', :id => @item.id
end
end
Questo è un esempio banale, ma lo if request.post?
schema è estremamente comune in Rails. Per casi non banali, il codice di azione può diventare grande e disordinato e, spesso, vorrei poterlo trasformare in metodi separati in modo pulito. In ASP.NET MVC posso farlo:
public ActionResult Edit() {
// Render my page that has the Edit form
...
}
[HttpPost]
public ActionResult Edit(Foothing foo) {
// Save my Foothing data
...
}
Penso che riuscire a separare in modo chiaro la gestione delle richieste GET e POST sia pulito. Il tuo chilometraggio può variare.
L'altra cosa che ASP.NET MVC fa che è super cool (sempre secondo me) è anche legata alla gestione dei moduli POSTS. In Rails, devo interrogare l' params
hash per tutte le mie variabili di modulo. Diciamo che ho un modulo con i campi 'status', 'gonkulated', 'invert' e 'disposition':
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
Ma ASP.NET MVC mi consente ordinatamente di ottenere tutti i miei valori di modulo come parametri per il mio metodo Action:
[HttpPost]
public ActionResult Edit(int id, string status, bool gonkulated, bool invert, int disposition) {
...
}
Queste sono le due cose che ho adorato di ASP.NET MVC o Rails. Non sono sufficienti per uno sviluppatore sano o competente di scegliere un framework rispetto all'altro.