2009-03-30 13 views
11

उदाहरण के लिए मैं एमवीसी-स्टाइल रूटिंग के लिए हर जगह देखता हूं:रूटटेबल। मार्ग रूट चयन?

void Application_Start(object sender, EventArgs e) 
{ 
    RegisterRoutes(RouteTable.Routes); 
} 

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.Add(new Route 
    (
     "Category/{action}/{categoryName}" 
     , new CategoryRouteHandler() 
    )); 
} 

रूटटेबल को पास करने का कारण क्या है। रजिस्टर रूट्स() में रूट संग्रह? क्यों न केवल:

void Application_Start(object sender, EventArgs e) 
{ 
    RegisterRoutes(); 
} 

public static void RegisterRoutes() 
{ 
    RouteTable.Routes.Add(new Route 
    (
     "Category/{action}/{categoryName}" 
     , new CategoryRouteHandler() 
    )); 
} 

रूटटेबल के अलावा रूटआउट चयन। मार्गों को एक मार्ग में जोड़ा जाएगा? रूटटेबल नहीं है। वेब अनुप्रयोग के लिए रूट xxx65 रूट चयन?

मेरे पास एक विशेष आईआरओटीएंडलर है जिसमें मैप() विधि है:

public class ChatRouteHandler : IRouteHandler 
{ 
    private static bool mapped; 

    public void Map() 
    { 
     if (!ChatRouteHandler.mapped) 
     { 
      RouteTable.Routes.Add 
      (
       new Route("chat/{room}/{date}", 
       new ChatRouteHandler()) 
      ); 
     } 
    } 

क्या कोई कारण है कि मानचित्र() को रूट कोलेक्शन स्वीकार करना चाहिए और रूटटेबल में नहीं जोड़ना चाहिए। रूट संग्रह? फिर, इस आईआरओटीएंडलर को किस रूट रूट चयन में जोड़ा जाएगा?

उत्तर

13

यूनिट परीक्षण।

रूटटेबल से पंजीकरण (तर्क गुजरने के माध्यम से) decupling द्वारा। रूट्स आप चुन सकते हैं कि यूनिट परीक्षण में पंजीकरण के लिए रूट रूट चयन का उपयोग किया जाता है।

आईएमएचओ, यह मार्ग लिखने के लिए भी अच्छा है। रूटटेबल के बजाय जोड़ें()। रूट्स। (हर जगह जोड़ें)।

"क्या कोई कारण है कि मानचित्र() को रूट कोलेक्शन स्वीकार करना चाहिए और रूटटेबल में शामिल नहीं होना चाहिए। रूट संग्रह?"

मैं इस सवाल को समझ रहा हूं कि "रूटकॉलेक्शन में एक्सटेंशन विधि के बजाय मैप रूट विधि क्यों नहीं है?"। हाँ, रूटकोलेक्शन System.WEb.Routing में है, जबकि MapRoute एक्सटेंशन विधि System.Web.Mvc में है। MapRoute() MvcHandler पर निर्भर करता है, जो System.Web.Routing के बारे में कोई जानकारी नहीं है।

+0

मैं निश्चित रूप से देख सकता हूं कि यह कक्षा डिज़ाइन को कैसे प्रभावित कर सकता है। क्या आप रूटकोलेक्शन या आईआरओटीएंडलर के लिए यूनिट परीक्षण के उदाहरण या उदाहरण की सिफारिश कर सकते हैं? आखिरकार, रूटटेबल में रूट यूनिट टेस्ट नहीं देख सका। रूट्स? – core

+1

हैकड के पास मार्गों के लिए एक अच्छा इकाई परीक्षण डेमो है। http://haacked.com/archive/2007/12/17/testing-routes-in-asp.net-mvc.aspx मेरे काम पर, एक सहयोगी ने रूटकोलेक्शन को कुछ ऐसा करने के लिए व्युत्पन्न किया। – CVertex

+0

लिंक के लिए धन्यवाद। इसकी प्रशंसा करना। मानचित्र() के बारे में, मैं थोड़ा उलझन में हूँ। क्या MvcHandler या कुछ पर कोई मानचित्र() एक्सटेंशन विधि है? मैं एमवीसी के लिए पूरी तरह से नया हूँ। – core

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