2010-05-20 6 views
8

मुझे पता है कि यह कई बार पूछा गया है और मैंने सभी पदों को भी पढ़ा है लेकिन वे सभी बहुत पुराने हैं। और विचारों और रिलीज में प्रगति हुई है, मुझे उम्मीद है कि नए विचार हो सकते हैं।प्रदर्शन के लिए इकाई फ्रेमवर्क बनाम nHibernate, सीखने की अवस्था समग्र विशेषताएं

हम एएसपी.नेट एमवीसी पर एक नया एप्लीकेशन बना रहे हैं और एक ओआरएम उपकरण पर अंतिम रूप देने की जरूरत है। हमने पहले कभी ओआरएम का उपयोग नहीं किया है और दो से अधिक उबला हुआ है - nHibernate & इकाई फ्रेमवर्क।

मुझे वास्तव में किसी ऐसे व्यक्ति से कुछ सलाह चाहिए जिसने इन दोनों उपकरणों का उपयोग किया है और अनुभव के आधार पर सिफारिश कर सकते हैं।

  1. प्रदर्शन
  2. लर्निंग कर्व
  3. कुल मिलाकर क्षमता

आपका सलाह अत्यधिक सराहना हो जाएगा - वहाँ तीन अंक है कि मैं अंतिम रूप देने के पर ध्यान केंद्रित कर रहा है।

शुभकामनाओं सहित,

+2

.NET 3.5 या .NET 4.0? मैं आपको ईएफ 1.0/3.5 से दूर रहने की सलाह दूंगा। –

उत्तर

10

मैं Nhibernate का प्रयोग करेंगे। मैं Sharp Architecture को एक महान ढांचे के रूप में उठाऊंगा जो एनएचबीरनेट, एएसपी.नेट एमवीसी और अन्य खुले स्रोतों का एक गुच्छा एक सुसंगत पूरे में लपेटता है जो आपको एक ठोस वास्तुकला नींव देगा।

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

ईएफ 4 में एमएस स्टैम्प स्वीकृति है। यह अब बहुत अच्छा है लेकिन अभी भी NHibernate के पीछे है। यह एक पूरी तरह से अच्छी पसंद है और आपको एमएस, एमएस समर्थन और अंततः अधिक डेवलपर्स जो इंस और आउट से परिचित हैं, से बहुत से दस्तावेज़ मिलेगा। मुझे यह भी जिक्र करना चाहिए कि तीव्र आर्किटेक्चर लोग अपने समग्र ढांचे में ईएफ 4 के लिए समर्थन जोड़ रहे हैं। वे अभी भी NHibernate का समर्थन करेंगे, लेकिन यदि आप चाहें तो आप ईएफ 4 का उपयोग करने में सक्षम होंगे।

+0

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

+1

@hadi: NHibernate एक प्रदर्शन समस्या नहीं है। प्रदर्शन समस्या यह है कि आप इसका उपयोग कैसे करते हैं। उदाहरण के लिए, यदि आप एक बड़े परिणाम सेट पर आलसी लोडिंग और लूप का उपयोग करते हैं, तो कुछ प्रॉपर्टी एक्सेस करना जो प्रत्येक पुनरावृत्ति के लिए डेटाबेस I/O का कारण बनता है, प्रदर्शन खराब है। मैं दृढ़ता से अनुशंसा करता हूं कि http://nhprof.com/ से निबर्ननेट प्रोफाइलर की एक प्रति प्राप्त करने के लिए अपने एक्सेस पैटर्न की जांच करें और प्रदर्शन को अच्छा रखें। –

+0

धन्यवाद दोस्त, मुझे लगता है कि मैं nHibernate के साथ आगे बढ़ जाऊंगा। आपकी मदद के लिए फिर से धन्यवाद :) – hadi

2

मुझे लगता है कि एनएचबीर्नेट सीखने में अधिक समय लगता है।

ईएफ ग्राफिकल डिजाइनर प्रदान करता है, दुर्भाग्यवश एनएचबेर्नेट में एक सामान्य डिजाइनर नहीं है। बीटीडब्ल्यू यह कोई समस्या नहीं है। यदि आप डोमेन-संचालित (डीडीडी) तरीके से डिज़ाइन करते हैं, तो आप अपनी इकाइयों को पहले डिज़ाइन करेंगे और आपको डेटाबेस संरचना (जैसा आपने उपयोग किया था) की परवाह नहीं है, एनएचबीर्नेट आपके लिए इसे संभालेगा।

ईएफ 4 एनएचबीर्नेट के करीब पहुंच गया। मैं ईएफ 3.5 के साथ काम करना शुरू नहीं करूँगा, इसमें बहुत सी फीचर्स नहीं हैं।

यदि आपको लगता है कि एनएचबर्ननेट पहली नजर में बहुत जटिल है, तो आप एनएचबर्ननेट के शीर्ष पर बनाए गए ढांचे के साथ शुरू कर सकते हैं। ActiveRecords और तीव्र वास्तुकार अच्छे उदाहरण हैं।

AFAIR ईएफ 3.5 केवल SQL सर्वर 2000 समर्थित है। यह SQL सर्वर 2005 से नए डेटा प्रकारों को संभाल नहीं सका। मुझे ईएफ 4 पर कोई जानकारी नहीं है लेकिन मुझे लगता है कि यह इन सुधारों का समर्थन करता है।

यदि आप वास्तविक शब्द अनुप्रयोगों में NHibernate का उपयोग करते हैं, तो आपको एक बुनियादी ढांचा बनाना होगा। जैसे मैं काम और भंडार पैटर्न की यूनिट कार्यान्वित परीक्षण लिख सकते हैं और अपने आवेदन में परतों बनाने के लिए सक्षम होने के लिए। आपको ईएफ का उपयोग करके इसकी अपेक्षा करनी होगी। Detaching और संलग्न संस्थाओं एफई 3.5 में एक आसान बात नहीं थी, मैं क्षेत्रों गंदा और इतने पर चिह्नित करने के लिए मुश्किल विस्तार तरीकों लिखना पड़ा। मुझे उम्मीद है कि उन्होंने इसे ईएफ 4 में हल किया है। एनएचबीरनेट के साथ ऐसी कोई समस्या नहीं है।

आपको एनएचबीर्नेट में एचक्यूएल प्रश्न लिखने की ज़रूरत नहीं है, तो आप LINQ प्रदाता का उपयोग कर सकते हैं। मुझे लगता है कि यह बहुत महत्वपूर्ण है। :)

सभी में सभी एनबीबर्नेट अच्छे समुदाय और वाणिज्यिक सहायता के साथ परिपक्व उत्पाद है। ईएफ युवा है लेकिन माइक्रोसॉफ्ट द्वारा दृढ़ता से समर्थित है। ओह, और ईएफ एक माइक्रोसॉफ्ट केवल एक चीज है जबकि आप अपने एनएचबीर्नेट ज्ञान को जावा पर भी पोर्ट कर सकते हैं। यह आपके लिए मायने रखता है।

+1

NHibernate में एक ग्राफिकल डिजाइनर है। –

+0

मैं SQLite के साथ काम कर रहा हूँ और मैं इसे समर्थन ग्राफिकल डिजाइनरों के बारे में पता नहीं है। कृपया एक लिंक पोस्ट करें, मुझे इसका इस्तेमाल करना अच्छा लगेगा। मैं एक ऐसे डिज़ाइनर को ढूंढना चाहता हूं जो अधिकांश समर्थित डीबी (SQLite समेत) के लिए इकाई मानचित्रण के लिए डेटाबेस स्कीमा को रिवर्स-इंजीनियर कर सकता है। – artur02

2

मैं दोनों में एप्लिकेशन बना होने के बाद इस पर विचार करने के लिए ... कोशिश कर रहा हूँ पर एक नज़र डालें, NHibernate निश्चित रूप से अधिक शक्तिशाली है, लेकिन यह भी काफी भद्दा है जहां एफई बहुत साफ है । और रेल/एक्टिव रिकार्ड के साथ काम करने के बाद, दोनों तुलनात्मक रूप से समृद्ध हैं, इसलिए या तो निश्चित रूप से काम करेंगे!

मैंने देखा कि एनएचबीर्नेट ने जो अभी भाग लिया है उसका ट्रैक रखता है, और यदि यह अभी एक बयान चलाता है, तो यह फिर से निष्पादित नहीं करता है, इसलिए एक उचित ढंग से डिज़ाइन किया गया ऐप न्यूनतम डेटाबेस स्टेटमेंट चलाएगा। मुझे पता है कि ईएफ बिल्कुल धीमा नहीं है, लेकिन मुझे यकीन नहीं है कि यह कथन कैश करता है और परिणाम उसी तरह से होता है। एक बड़े ऐप के लिए, यह कुछ डेटाबेस संसाधनों को बचा सकता है!

तो संक्षेप में, कार्यक्षमता और configurability, और सफाई के लिए एफई 4.0 और एक त्वरित, आसान सीखने की अवस्था के लिए NHibernate। इसके अलावा, एक अगले संस्करण में एफई की उम्मीद करनी चाहिए या दो को पकड़ने चाहिए सकता है या कार्यक्षमता में भी NHibernate पार, इसलिए अर्थपूर्ण हो सकता है दोनों से कुछ परिचित हैं करने के लिए।

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