2012-01-03 14 views
5

मैं वास्तव में विचार ASP.NET MVC मार्ग को नियंत्रित करने के गुण का उपयोग करने का आनंद लिया, तो एक नया मार्ग और polute दर्ज की Global.asax.cs या * AreaRegistration.cs के बजाय, मैं कुछ इस तरह है:क्या एएसपी.नेट एमवीसी रूटिंग फ्रेमवर्क चुनने के लिए?

[Route("users/{userrId}/pages/{pageId}"] 
public ActionResult Some(int userId, int pageId) { } 

मुझे बहुत अच्छा जवाब दिखाई देता है: ASP.NET MVC Routing Via Method Attributes, लेकिन मैं कुछ "वास्तविक उपयोग" अनुशंसाएं प्राप्त करना चाहता हूं।

  1. आप कौन सी रूटिंग फ्रेमवर्क की सिफारिश करेंगे?
  2. उपयोग के लिए मौजूदा कोड को शुरू करना और बदलना कितना आसान है?
  3. क्या यह NuGet पर उपलब्ध है?

.. और क्या इसका उपयोग करने के लिए वास्तव में लायक है, क्या इसे सर्वश्रेष्ठ (शायद अच्छा?) अभ्यास के रूप में माना जा सकता है?

उत्तर

4

मैंने पहले के दौरान विधि विशेषताओं के माध्यम से रूटिंग करने का प्रयास किया था। रूटिंग के लिए किसी भी ढांचे का उपयोग नहीं करेंगे।

मुझे लगता है कि बस "मानक" योजना का पालन करना सबसे अच्छा है।

इसके अलावा - प्रत्येक मार्ग का यूनिट परीक्षण व्यक्तिगत रूप से मुझे बहुत मदद करता है
(मैंने परीक्षण भी लिखा है जो किसी भी मार्ग को याद करने में विफल रहता है)।

+0

क्या आप इस तरह के परीक्षण साझा कर सकते हैं? – sashaeve

+1

@Sashaeve यह सुंदर नहीं कह सकता है, लेकिन यहां आप जा सकते हैं: https://gist.github.com/1555885 –

0

मेरी व्यक्तिगत प्राथमिकता रूटिंग कॉन्फ़िगरेशन को केंद्रीकृत रखना है (मैं इसे ग्लोबल.एक्सएक्स पर रखता हूं)।

हालांकि, आप जिस भी विधि का उपयोग करते हैं, सुनिश्चित करें कि आप मानक का पालन कर रहे हैं। मुझे लगता है कि विशेषता रूटिंग के साथ मैं जो मुद्दा देखता हूं वह यह है कि यह डेवलपर्स को इस तरह से "रचनात्मक" पाने की अनुमति देता है कि यह भ्रमित हो और बनाए रखने और समझने में मुश्किल हो।

केंद्रीकृत स्थान पर सभी रूटिंग होने के बाद, आपको रूटिंग नियमों को तुरंत लागू करने और समझने की सुविधा मिलती है।

2
  1. मैं AttributeRouting की सिफारिश करता हूं, मैंने इसे लिखा और इसे हर दिन उपयोग किया।
  2. शुरू करने के लिए, बस एक GET विशेषता के साथ एक क्रिया को सजाने के लिए। Nuget बाकी करता है।
  3. Nuget yes।

मुझे यूआरएल पसंद है।

मुझे उन कोडों के ठीक ऊपर उन्हें देखना पसंद है जो वे मानचित्र करते हैं।

[GET("some/url")] 
public ActionResult HotDamn() 

जब आप ऐसा करते हैं, तो आप + F "कुछ/url" Ctrl और दायां अपनी कार्रवाई विधि है, जो बहुत सुविधाजनक है जा सकते हैं। यदि आप अपना एक्शन नाम बदलते हैं या इसे कहीं और ले जाते हैं, तो मार्ग इसके साथ रहता है और अपरिवर्तित है।

[GET("some/url"] 
public ActionResult HotDarnCauseCussingIsBad() 

आप URL बदलने के लिए और अभी भी विरासत यूआरएल का जवाब, बस आदेश = 1 सेट करके नया एक के रूप में पुराने एक के ऊपर एक और विशेषता जोड़ सकते हैं और यह निशान चाहते हैं:

[GET("better/url", Order = 1)] 
[GET("some/url")] // order defaults to int.MaxValue 
public ActionResult BetterMethodName() 

हैं आप आप बस अपने बुरा स्वयं के साथ सही पर जाने के शोकहारा मिलता है, और HTTP विधि ओवरराइड और समर्थन प्राप्त/पोस्ट/PUT साथ सभी रास्ते जाने/हटाना चाहते हैं,:

[GET("")] 
public ActionResult Index() 

[POST("")] 
public ActionResult Create() 

[PUT("{id}")] 
public ActionResult Update() 

[DELETE("{id}")] 
public ActionResult Delete() 

मैं इस lib हर समय का उपयोग करें, और इसे बनाया ताकि मैं शांत हो जाऊं घ। मैं इसे साढ़े डेढ़ साल तक इस्तेमाल कर रहा हूं और मुझे कभी भी रूटिंग या ढूंढने में परेशानी नहीं होती है, जहां चीजें जाती हैं या सोचती हैं कि रूट ए के बजाय मार्ग ए का मिलान क्यों हुआ। यह उपयोग करने में बहुत आसान है, इसमें कुछ कॉन्फ़िगरेशन विकल्प हैं, और रूटिंग 100x सरल (मेरी राय में) बनाता है।

जो भी आप चुनते हैं, मैं निश्चित रूप से कम से कम विशेषता आधारित रूटिंग की सलाह देता हूं, चाहे एआर या कुछ और। सभी का कप-ओ-चाय नहीं हो सकता है, लेकिन मैं बिल्कुल इसे प्यार करता हूँ।

संबंधित मुद्दे