Я розробив реальні програми як з Rails, так і з ASP.NET MVC, але ця відповідь має суттєве застереження: я дізнався і розвинувся з Rails до версії 2, тому цілком можливо, що я сильно застарів зі своїм Рейки знань.
Якщо говорити, я не думаю, що можна зробити щось , а не інше. Враховуючи будь-який набір вимог до веб-програми, ви повинні мати можливість створити цей додаток - можливо, однаково ефективно - за допомогою Rails або ASP.NET MVC.
Є кілька акуратних речей, які - наскільки мені відомо - доступні в ASP.NET MVC головним чином через аспекти C # /. NET. Наприклад: коли у мене є сторінка, яка містить форму, яка подається, у мене буде дія, яка перевіряє, чи має справу з GET чи POST, щоб вирішити, що робити:
def edit
@item = Item.find(params[:id])
if request.post?
@item.update_attributes(params[:item])
redirect_to :action => 'edit', :id => @item.id
end
end
Це тривіальний приклад цього, але if request.post?
модель є надзвичайно поширеною в Rails. У нетривіальних випадках код Action може стати великим і безладним, і часто я хотів би, щоб я міг переробляти його на окремі методи. У ASP.NET MVC я можу це зробити:
public ActionResult Edit() {
// Render my page that has the Edit form
...
}
[HttpPost]
public ActionResult Edit(Foothing foo) {
// Save my Foothing data
...
}
Я думаю, що можливість чітко розділити обробку GET та POST-запитів є охайною. Ваш пробіг може відрізнятися.
Інша річ, яку робить ASP.NET MVC - це дуже круто (знову ж таки, на мою думку), також пов'язане з обробкою форми POSTS. У Rails я повинен запитувати params
хеш для всіх моїх змінних форм. Скажімо, у мене є форма з полями "статус", "гонкульований", "інвертувати" та "диспозиція":
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
Але ASP.NET MVC акуратно дозволяє мені отримати всі мої форми форми як параметри для мого методу Action:
[HttpPost]
public ActionResult Edit(int id, string status, bool gonkulated, bool invert, int disposition) {
...
}
Це дві речі, які мені дуже сподобалися в ASP.NET MVC або Rails. Вони не є достатньою причиною для будь-якого розумного або грамотного розробника вибрати один фреймворк над іншим.