2010-10-02 9 views
7

मेरे एमवीसी 2 ऐप के लिए बूटस्ट्रैप बनाने का सबसे अच्छा तरीका क्या है? मैं एकता और ऑटोमैपर का उपयोग कर रहा हूं और जितना संभव हो सके लोडिंग और कॉन्फ़िगरेशन को सार करना चाहता हूं।मैं एकता और ऑटोमैपर के लिए एक एमवीसी बूटस्ट्रैपर को कैसे कार्यान्वित करना चाहिए?

एक सभ्य उदाहरण यहां है (http://weblogs.asp.net/rashid/archive/2009/02/17/use-bootstrapper-in-your-asp-net-mvc-application-and-reduce-code-smell.aspx ), लेकिन यूनिटीकॉन्टेनर IDISposable लागू करता है और उस उदाहरण में इसे कभी साफ़ नहीं किया जाता है। यह (Configuring Automapper in Bootstrapper violates Open-Closed Principle?) भी एक सभ्य उदाहरण है, लेकिन वह एकता/डिस्पोजेबल समस्या से निपटता नहीं है।

यहां (http://www.dominicpettifer.co.uk/Blog/42/put-an-ioc-powered-bootstrapper-in-your-asp-net-mvc-application) बूटस्ट्रैपर कैसे करें, इसका एक और शानदार उदाहरण है, लेकिन फिर एकता/डिस्पोजेबल समस्या को संबोधित नहीं करता है।

मैंने अपने बूटस्ट्रैपर ऑब्जेक्ट को एक स्थिर चर में चारों ओर रखने के बारे में सोचा और इसे IDISposable लागू करने के बारे में सोचा, लेकिन यह सही नहीं लगता है।

उत्तर

4

यदि आप बूटस्ट्रैपर कक्षा में कंटेनर का संदर्भ रखते हैं तो आप इसे एप्लिकेशन के अंत में निपट सकते हैं।

public static class Bootstrapper 
{ 
    private static IUnityContainer _container; 

    public static void Run() 
    { 
     _container = new UnityContainer(); 

     // Configure container here... 
    } 

    public static void Dispose() 
    { 
     _container.Dispose(); 
    } 
} 

public class YourHttpApplication : HttpApplication 
{ 
    protected void Application_Start() 
    { 
     Bootstrapper.Run(); 
    } 

    protected void Application_End() 
    { 
     Bootstrapper.Dispose(); 
    } 
} 

या आप, अपने bootstrapper से कंटेनर लौट इसे करने के लिए एक संदर्भ के रखने के लिए और आवेदन अंत पर यह निपटाने सकता है।

public class YourHttpApplication : HttpApplication 
{ 
    private IUnityContainer _container; 

    protected void Application_Start() 
    { 
     _container = Bootstrapper.Run(); 
    } 

    protected void Application_End() 
    { 
     _container.Dispose(); 
    } 
} 

मुझे लगता है कि आपकी वरीयता पर निर्भर करता है। इसके अलावा, प्रश्न में सूचीबद्ध बूटस्ट्रैपिंग उदाहरणों में से कोई भी आपके एप्लिकेशन को बूटस्ट्रैप करने के लिए एक अच्छा चयन होना चाहिए।

+0

आपने बूटस्ट्रैपर पैकेज और मार्गदर्शिका से विधियों का उपयोग क्यों नहीं किया? यह ऐसा दिखाई दे सकता है: 'Bootstrapper.With.Unity()। And.AutoMapper()। और स्टार्टअप टास्क()। प्रारंभ(); ' –

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