2012-07-14 6 views
17

यहां मैं जो हासिल करना चाहता हूं, मैं एएसपी.नेट एमवीसी के एरिया को शुद्ध एकल डीएलएल के रूप में अलग करना चाहता हूं।प्लगइन डीएलएल के रूप में एएसपी.नेट एमवीसी क्षेत्र कैसे बनाएं?

  1. Blog.DLL
  2. Forums.DLL
  3. FAQ.DLL

उनमें से प्रत्येक हैं अपनी ही डिफ़ॉल्ट CSHTML या ASPX पृष्ठों के साथ अलग-अलग ASP.NET MVC क्षेत्र,। संसाधनों, जावास्क्रिप्ट आदि जैसे कई पृष्ठों को स्थापित करना, माइग्रेट करना और बनाए रखना लंबे समय तक वास्तविक दर्द है। चूंकि इनमें से अधिकतर शायद ही कभी बदल जाएंगे।

मेरी अंतिम वेबसाइट इस तरह होगी।

\MvcApplication 
    \bin 
     \MvcApplication.bin 
     \Blog.dll 
     \Forums.dll 
    \Controllers 
     \.. 
    \Models 
     \.. 
    \Views 
     \.. 
    \Global.asax 
    \Web.config 

किसी भी बात के लिए, बस Blog.dll छोड़ने जोड़ने के बिना, अपने आवेदन/ब्लॉग और उसके सभी पृष्ठों का समर्थन करना चाहिए। मैं कुछ अनुकूलित करने के लिए, की तुलना में मैं क्षेत्र में जोड़ सकते हैं, और केवल cshtml पृष्ठों को जोड़ने .. चाहते हैं

\MvcApplication 
    \bin 
     \MvcApplication.bin 
     \Blog.dll 
     \Forums.dll 
    \Areas 
     \Blog 
      \Views 
       \Shared 
        \BlogLayout.cshtml <-- this will override the look 
    \Controllers 
     \.. 
    \Models 
     \.. 
    \Views 
     \.. 
    \Global.asax 
    \Web.config 

यह ASP.NET क्षेत्र प्लगइन्स पुन: उपयोग के लिए, बस बिन फ़ोल्डर में dll छोड़ने के द्वारा में मदद मिलेगी। हालांकि web.config को कुछ बदलावों की आवश्यकता हो सकती है, लेकिन अधिकतर हम डेटाबेस में कॉन्फ़िगरेशन मानों को सहेज लेंगे और केवल आवश्यक चीज web.config में "इकाई फ्रेमवर्क कनेक्शन स्ट्रिंग" होगी।

मेरे चुनौतियों (प्रश्न)

  1. क्या यह संभव है? यह निश्चित रूप से मुझे देखता है, लेकिन क्या कोई प्रतिबिंब/अनुमति समस्या होगी?
  2. मैं एक डीएलएल के भीतर cshtml/aspx विचारों को कैसे शामिल करूं? शायद संकलित संस्करण? मैंने कोडप्लेक्स पर कुछ टेक्स्ट टेम्पलेट आधारित व्यू इंजन देखा है, लेकिन मैं वास्तव में उनका उपयोग करने के तरीके पर थोड़ा उलझन में हूं।
  3. और मैं पहली बार यह देखने के लिए व्यूइंजिन कैसे प्राप्त करूं कि भौतिक निर्देशिका फ़ाइल मौजूद है या नहीं और फिर dll के भीतर cshtml/aspx को संसाधन फ़ाइल के रूप में देखें?

उत्तर

9

आप following article जो दर्शाता है कि एक कस्टम VirtualPathProvider उस्तरा बार देखा गया है कि संसाधनों के रूप में अलग विधानसभाओं में एम्बेडेड रहे हैं पुनः प्राप्त करने के क्रम में इस्तेमाल किया जा सकता है पर एक नज़र लग सकता है।

+0

एएसपीएक्स फ़ाइल के बारे में क्या? अधिकांशतः हम केवल cshtml का उपयोग करते हैं, लेकिन पीडीएफ प्रिंट करने के लिए, cshtml अज्ञात HTML टैग के साथ काम नहीं करता है, इसलिए हम कभी-कभी एएसपीएक्स का उपयोग करते हैं। –

+1

मुझे एएसपीएक्स के बारे में पता नहीं है। यह लंबे समय से रहा है क्योंकि मैंने इसका इस्तेमाल बंद कर दिया है। शायद आभासी पथ प्रदाता अनुकूलित किया जा सकता है। –

+0

आप एंबेडेड रीसोर्सवर्टुअलपाथप्रोवाइडर का उपयोग कर सकते हैं जिसे सीधे नॉगेट से स्थापित किया जा सकता है। यह संपत्ति फ़ाइलों के साथ काम करता है। https://github.com/mcintyre321/EmbeddedResourceVirtualPathProvider#readme – mcintyre321

1

शायद mvccontrib से पोर्टेबल क्षेत्रों को देखने लायक है। मैं उन्हें MVC 2 के बाद से इस्तेमाल किया है नहीं, लेकिन कुछ संभव समाधान के साथ, कोई उन्हें MVC 3 के साथ का उपयोग कर कुछ समस्या हो रही द्वारा अतः निम्नलिखित प्रश्न पाया: ASP.NET MVC 3, Razor Views, and Portable Areas

1

MvcCodeRouting का समर्थन करता है कि आप क्या चाहते हैं, साथ में कई अन्य शांत सामान। एएसपी.नेट एमवीसी प्लगइन्स के बारे में this post देखें।