Ho sviluppato applicazioni reali con Rails e ASP.NET MVC, ma questa risposta viene fornita con un avvertimento significativo: ho imparato e sviluppato con la versione precedente 2 Rails, quindi è del tutto possibile che io sia ampiamente fuori data con la mia conoscenza di Rails.
Detto questo, non penso che ci sia qualcosa che può essere fatto con uno, ma non con l'altro. Dato qualsiasi insieme 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 belle 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, vorrei avere un'azione che controlli per vedere se si tratta di un GET o di 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 di esso, ma il pattern if request.post?
è estremamente comune in Rails. Per i casi non banali, il codice di azione può diventare ingombrante e spesso, mi piacerebbe che potessi rifattenerlo 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 essere in grado di separare nettamente la gestione delle richieste GET e POST sia accurato. Il tuo chilometraggio può variare.
L'altra cosa che ASP.NET MVC fa è super cool (sempre secondo me) è anche legata alla gestione dei POS POSTI. In Rails, devo interrogare l'hash params
per tutte le variabili del mio modulo. Diciamo che ho un modulo con i campi 'status', 'gonkulated', 'invert' e 'disposizione':
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 di ottenere tutti i miei valori di form 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 veramente amato di ASP.NET MVC o Rails. Non sono una ragione sufficiente per uno sviluppatore sano o competente per scegliere un framework rispetto all'altro.