2011-05-18 11 views
5

हम एक लीगेसी एप्लिकेशन को स्थानांतरित करने की योजना बना रहे हैं जो एंटरप्राइज़ लाइब्रेरी 4.1 का उपयोग करता है जो .NET 4.0 वेब अनुप्रयोग में .NET 3.5 का उपयोग करता है।नेट 3.5 डीएल एक .NET 4.0 एप्लिकेशन में कोई समस्या

हम सोच रहे हैं कि इससे कोई प्रदर्शन समस्या होगी? क्या .NET 3.5 कोड एक अलग एप्लिकेशन पूल में चलाएगा?

उत्तर

5

मुझे अंत में इसका जवाब मिल गया है। प्रदर्शन की समस्या जो मैंने पहले मेरी टीम का पता लगाया था, किसी और चीज के कारण है। .NET 4.0 ऐप डोमेन पर .NET 3.5 लोड नहीं हो रहा है।

इस लेख पढ़ना: http://msdn.microsoft.com/en-us/magazine/ee819091.aspx

में प्रोक SxS संगतता समस्या पुस्तकालय डेवलपर्स को पेश आ रही समाधान नहीं करता है। किसी भी पुस्तकालयों सीधे एक आवेदन द्वारा लोड - या तो एक सीधा संदर्भ या एक Assembly.Load के माध्यम से - क्रम और आवेदन लोड हो रहा है इसके बारे में AppDomain में सीधे लोड करने के लिए जारी रहेगा। यह मतलब है कि अगर एक आवेदन .NET फ्रेमवर्क 4 क्रम के खिलाफ चलाने के लिए कंपाइल और अभी भी है निर्भर विधानसभाओं .NET 2.0 के खिलाफ बनाया गया है, उन आश्रितों है और साथ ही नेट 4 क्रम पर लोड होगा। इसलिए, हम अभी भी फ्रेमवर्क के सभी संस्करणों के विरुद्ध अपने पुस्तकालयों का परीक्षण करने की सलाह देते हैं, जिन्हें आप समर्थन देना चाहते हैं। हमारे को हमारे उच्च स्तर के पिछड़े संगतता को बनाए रखने के कारणों में से एक कारण जारी है।

तो, .NET 4.0 असेंबली को .NET 4.0 में सीधे पुन: संकलित किए बिना .NET 4.0 एपल्स में लोड करने में कोई समस्या नहीं है।

1

4.0 3.5 का सुपरसेट है इसलिए कोई चुनौती नहीं होनी चाहिए। आप सभी के रूप में यह जब वी.एस. 2008 के साथ बनाया गया था 3.5 कोड काम करेंगे तो आपको यह पहला
एक MSDN लिंक नहीं है What's New in the .NET Framework 4
Migration Guide to the .NET Framework 4
.NET Framework 4 RTM Application Compatibility Walkthrough

आप एक Google खोज करते हैं, तो आप पाएंगे पालन करने की आवश्यकता "2010 में नया क्या है" जैसे कुछ लेख शीर्षक। आप "क्या अलग है"

MSDN से इस छोटे से tidbit के अलावा तरह बातें नहीं मिलेगा:

.NET फ्रेमवर्क 4 अनुप्रयोग जो पहले .नेट फ्रेमवर्क के साथ बनाया गया हैं साथ अत्यधिक संगत है संस्करण, कुछ सुधारों को छोड़कर सुरक्षा में सुधार के लिए बनाए गए थे, मानक अनुपालन, शुद्धता, विश्वसनीयता, और प्रदर्शन।

.NET फ्रेमवर्क 4 स्वचालित रूप से अनुप्रयोगों जो .NET फ्रेमवर्क के पिछले संस्करणों के साथ बनाया जाता है चलाने के लिए आम भाषा क्रम के अपने संस्करण का उपयोग नहीं है। .NET फ्रेमवर्क 4 के साथ पुराने अनुप्रयोगों चलाने के लिए आपको लक्ष्य .नेट फ्रेमवर्क संस्करण दृश्य स्टूडियो में अपने परियोजना के लिए गुण में निर्दिष्ट के साथ अपने आवेदन संकलन चाहिए, या आप तत्व के साथ समर्थित क्रम निर्दिष्ट कर सकते हैं एक आवेदन में कॉन्फ़िगरेशन फ़ाइल।


+3

-1: "इसलिए कोई चुनौती नहीं होनी चाहिए। आप सभी 3.5 कोड काम करेंगे जैसे वीएस 2008 के साथ बनाया गया था": तोड़ने वाले बदलावों की सूची वास्तव में लंबी है, विभिन्न प्रविष्टियों के लिए यहां देखें। नेट टेक्नोलॉजीज: [ब्रेकिंग चेंज की .NET4 पूर्ण सूची] (http://muneebbaig.blogspot.com/2010/04/net4-complete-list-of-breaking-changes.html)। आम तौर पर, .NET रनटाइम पर्यावरण के परिवर्तन सहित किसी उत्पाद में कोई भी परिवर्तन भारी परीक्षण के साथ होना चाहिए। –

0

खैर यह किसी भी प्रदर्शन समस्या नहीं होनी चाहिए। हालांकि, एक बड़ा अंतर यह है कि .NET 4.0 एक अलग रनटाइम के साथ आता है जो कुछ अंतर पेश कर सकता है।

1

आप सवाल करते हैं कि प्रदर्शन के मुद्दों पर आम तौर पर उत्तर नहीं दिया जा सकता है क्योंकि यह आपके कोड पर निर्भर करता है। सबसे अधिक संभावना है कि आप कोई समस्या नहीं देखेंगे।

हालांकि माइक्रोसॉफ्ट ने रनटाइम के पिछले संस्करण के साथ पिछड़ा संगत रहने के लिए बहुत कुछ किया है, लेकिन आपको पता होना चाहिए कि कई तोड़ने वाले बदलाव हैं। आप उन्हें MSDN यहाँ में दर्ज मिलेगा:

.NET Framework 4 Migration Issues (ASP.NET पर प्रलेखन, नेट कोर, डेटा/ADO भी शामिल है।नेट, WCF, WPF और एक्सएमएल)

माइक्रोसॉफ्ट भी मार्गदर्शन और लिंक प्रवास की योजना बना कार्यों को आगे बढ़ाने के प्रदान करता है:

Migration Guide to the .NET Framework 4

आप किसी भी मुद्दे के लिए तैयार किया जाना चाहिए के रूप में, अतिरिक्त परीक्षण के लिए कुछ समय निर्धारित करने के लिए मत भूलना।

-1

.NET 3.5 DLL को .NET 4 की तुलना में अलग-अलग ऐप डोमेन में लोड किया जाता है। इसलिए, .NET 4 से .NET 3.5 DLL तक सभी कॉल ऐप डोमेन पर होंगे। इसका मतलब है कि कुछ ओवरहेड है। जब तक आप .NET 4 में 3.5 स्रोत कोड का पुनर्निर्माण नहीं कर सकते, मैं इसका उपयोग करने की अनुशंसा नहीं करता। मेरी टीम में से एक ने कोशिश की और फिर उन्होंने बहुत खराब प्रदर्शन देखा ताकि वे .NET 3.5 पर वापस चले गए। जब तक हम सभी .NET 3.5 डीएलएल या विक्रेताओं के लिए स्रोत कोड प्राप्त नहीं करते हैं .नेट 4 डीएलएल हम अपने कोड बेस को नेट 4 में अपग्रेड नहीं कर रहे हैं।

+1

क्या आपके पास इसके लिए कोई संदर्भ है? –

+0

अब तक मेरे अनुभव के आधार पर मैं उम्मीद कर रहा था कि उमर सही हो सकता है लेकिन प्रोसेस एक्सप्लोरर को फायर करने के बाद और एक नज़र डालने के बाद मुझे केवल "ऐडडोमेन्स" और "डिफॉल्टडोमेन" लोड किए गए दो ऐपडोमेन दिखाई देते हैं और मुझे कोई सबूत नहीं दिखता है कि केवल 3.5 डोमेन में से एक में असेंबली लोड की जा रही है। इसके बजाय mscorlib के अलावा सभी असेंबली डिफॉल्टडोमेन में लोड की जाती हैं। यहां अधिक जानकारी http://msdn.microsoft.com/en-us/magazine/cc163791.aspx#S4 – jpierson

1

आपके पास पेर्फ परीक्षण करने की योजना है। मार्गदर्शन के लिए, पैटर्न & प्रथाओं से देखें।

मुझे नहीं पता कि आप कौन से ब्लॉक का उपयोग कर रहे हैं, लेकिन आपको एंटरलिब v5.0 में माइग्रेट करने पर विचार करना चाहिए, क्योंकि लॉगिंग एप्लिकेशन ब्लॉक में प्रमुख perf सुधार के साथ-साथ अंतर्निहित आधारभूत संरचना का एक रिफैक्टरिंग/क्लीनअप भी था। Migration Guide for Enterprise Library 5.0 देखें।

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