Ich habe sowohl mit Rails als auch mit ASP.NET MVC echte Anwendungen entwickelt, aber diese Antwort bringt eine erhebliche Einschränkung mit sich: Ich habe mit Rails vor Version 2 gelernt und entwickelt Schienenwissen.
Abgesehen davon glaube ich nicht, dass es irgendetwas gibt , das mit dem einen gemacht werden kann, aber nicht mit dem anderen. Wenn Sie eine Reihe von Anforderungen für eine Webanwendung haben, sollten Sie in der Lage sein, diese App - wahrscheinlich ebenso effizient - mit Rails oder ASP.NET MVC zu erstellen.
Es gibt ein paar nette Dinge, die meines Wissens in ASP.NET MVC hauptsächlich aufgrund von Aspekten von C # /. NET verfügbar sind. Beispiel: Wenn ich eine Seite habe, die ein gesendetes Formular enthält, wird in einer Aktion geprüft, ob es sich um ein GET oder einen POST handelt, um zu entscheiden, was zu tun ist:
def edit
@item = Item.find(params[:id])
if request.post?
@item.update_attributes(params[:item])
redirect_to :action => 'edit', :id => @item.id
end
end
Dies ist ein triviales Beispiel dafür, aber das if request.post?
Muster ist in Rails äußerst verbreitet. In nicht trivialen Fällen kann der Aktionscode groß und unübersichtlich werden, und häufig würde ich mir wünschen, dass ich ihn sauber in separate Methoden umgestalten könnte. In ASP.NET MVC kann ich das tun:
public ActionResult Edit() {
// Render my page that has the Edit form
...
}
[HttpPost]
public ActionResult Edit(Foothing foo) {
// Save my Foothing data
...
}
Ich denke, dass es in der Lage ist, die Behandlung von GET- und POST-Anfragen sauber zu trennen. Ihr Kilometerstand kann variieren.
Die andere Sache, die ASP.NET MVC macht, ist super cool (wieder meiner Meinung nach) und hat auch mit der Handhabung von Formular-POSTS zu tun. In Rails muss ich den params
Hash für alle meine Formularvariablen abfragen . Nehmen wir an, ich habe ein Formular mit den Feldern 'Status', 'Gonkuliert', 'Invertiert' und '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
Mit ASP.NET MVC kann ich jedoch alle meine Formularwerte als Parameter für meine Action-Methode abrufen:
[HttpPost]
public ActionResult Edit(int id, string status, bool gonkulated, bool invert, int disposition) {
...
}
Das sind die beiden Dinge, die ich an ASP.NET MVC oder Rails wirklich geliebt habe. Sie sind kein ausreichender Grund für einen vernünftigen oder kompetenten Entwickler, ein Framework vor dem anderen zu wählen.