ฉันได้พัฒนาแอพพลิเคชั่นจริงที่มีทั้ง 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 สำหรับกรณีที่ไม่สำคัญรหัสการกระทำอาจมีขนาดใหญ่และยุ่งเหยิงและบ่อยครั้งที่ฉันต้องการให้ฉันปรับโครงสร้างใหม่เป็นวิธีแยกต่างหากอย่างหมดจด ใน 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
แฮชสำหรับตัวแปรฟอร์มทั้งหมดของฉัน สมมติว่าฉันมีแบบฟอร์มที่มี 'สถานะ' ฟิลด์ 'gonkulated', 'invert' และ '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
แต่ ASP.NET MVC ช่วยให้ฉันสามารถรับค่าฟอร์มทั้งหมดของฉันเป็นพารามิเตอร์ในวิธีการกระทำของฉัน:
[HttpPost]
public ActionResult Edit(int id, string status, bool gonkulated, bool invert, int disposition) {
...
}
นี่คือสองสิ่งที่ฉันชอบเกี่ยวกับ ASP.NET MVC หรือ Rails เหตุผลเหล่านี้ไม่เพียงพอสำหรับนักพัฒนาที่มีเหตุผลหรือมีความสามารถในการเลือกกรอบงานหนึ่งกรอบเหนือกรอบอื่น