मैंने रेल और ASP.NET MVC दोनों के साथ वास्तविक अनुप्रयोग विकसित किए हैं, लेकिन यह उत्तर एक महत्वपूर्ण चेतावनी के साथ आता है: मैंने पूर्व-संस्करण 2 रेल के साथ सीखा और विकसित किया है, इसलिए यह पूरी तरह से संभव है कि मैं अपने साथ बहुत ही आउट-ऑफ-डेट हूं ज्ञान का पालन करता है।
यह कहा जा रहा है, मुझे नहीं लगता कि ऐसा कुछ भी है जो एक के साथ किया जा सकता है लेकिन दूसरे के साथ नहीं। किसी वेब एप्लिकेशन के लिए आवश्यकताओं के किसी भी सेट को देखते हुए, आपको उस ऐप को बनाने में सक्षम होना चाहिए - शायद समान रूप से कुशलता से - या तो रेल या ASP.NET MVC के साथ।
कुछ साफ-सुथरी बातें हैं - जो कि मेरी जानकारी में सबसे अच्छी हैं - मुख्यतः C # /। NET के पहलुओं के कारण ASP.NET MVC में उपलब्ध हैं। उदाहरण के लिए: जब मेरे पास एक पेज होता है जिसमें एक फॉर्म होता है जो सबमिट किया जाता है, तो मेरे पास एक एक्शन होगा जो यह देखने के लिए जांच करेगा कि क्या यह 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?
पैटर्न रेल में एक बहुत ही आम है। गैर-तुच्छ मामलों के लिए, एक्शन कोड बड़ा और गड़बड़ हो सकता है, और अक्सर, मैं चाहूंगा कि मैं इसे अलग-अलग तरीकों से साफ-सुथरे तरीके से रिफैक्ट कर सकूं। 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 को संभालने से भी संबंधित है। रेल में, मुझे 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 या रेल के बारे में बहुत पसंद हैं। वे किसी भी समझदार या सक्षम डेवलपर के लिए एक कारण नहीं हैं कि वह दूसरे के ऊपर एक ढांचा चुन सकें।