2010-07-20 16 views
42

NHibernate और Entity Framework 4.0 के मुख्य फायदे और नुकसान क्या हैं?NHibernate बनाम इकाई फ्रेमवर्क के बीच निर्णय लेना?

(मेरे सवाल टैगिंग, वहीं मैंने देखा है और अधिक NHibernate एफई। Is NHibernate से टैग और अधिक लोकप्रिय?)

+1

अच्छा सवाल। हम में से कई के लिए बहुत प्रासंगिक है। मैं उन लोगों के जवाबों के लिए इसे देख रहा हूं जिनके पास दोनों के साथ अधिक अनुभव है। –

+0

मैं उत्सुक हूं कि आपकी आवश्यकताएं क्या हैं और आपने इन विकल्पों को बनाम इन विकल्पों में कैसे अपनाया है। LINQ से SQL या iBATIS.NET पर कोई विचार? बस इसे वहां फेंक दें: http://stackoverflow.com/questions/694552/what-is-the-difference-between-nhibernate-and-ibatis-net –

+2

लिंक से एसक्यूएल एक मृत उत्पाद है। iBatis संग्रहित procs के आसपास बनाया गया है। –

उत्तर

18

मुझे ईएफ (कुछ ब्लॉग पोस्ट और ट्यूटोरियल्स) के साथ बहुत सीमित अनुभव है, लेकिन एनएचबीर्नेट के साथ बहुत सारे अनुभव हैं।

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

दूसरी तरफ NHHernate ने आपको अपनी संस्थाओं को पूरी तरह से एनएचबीर्नेट से अलग करने की अनुमति दी। इस संबंध में ईएफ 4.0 कुछ हद तक पकड़ा गया है, यह कोड प्रथम विकास दृष्टिकोण (recently announce by Scott Guthrie) सही दिशा में एक कदम है।

एनएचबर्ननेट में कुछ बहुत शक्तिशाली मैपिंग क्षमताएं हैं जैसे विरासत मानचित्रण, घटक वर्गों का मानचित्रण (ग्राहक इकाई पर पता पता वस्तु), यूनिडायरेक्शनल इकाई एसोसिएशन मैपिंग। यह आपको अपने डोमेन मॉडल के अंदर ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (एनकैप्यूलेशन, पॉलिमॉर्फिज्म, विरासत इत्यादि) की शक्ति का पूरा लाभ लेने देता है, अपने इकाई वर्गों के बारे में सोचने के लिए व्यवहार को समाहित करता है न केवल डेटा कंटेनर। यदि आप Domain Driven Design के सिद्धांतों के लिए अपना डोमेन मॉडल बनाने की इच्छुक हैं, तो इसके लिए NHibernate एक बहुत अच्छा फिट है। मैं इन बिंदुओं पर सीधे ईएफ 4.0 पर बात नहीं कर सकता, केवल ईएच 4.0 का उपयोग करने की कोशिश कर रहे अन्य एनएचबीरनेट उपयोगकर्ताओं से जो कुछ मैं सुनता हूं उससे, लेकिन ईएफ 4.0 अभी भी इन क्षेत्रों में पीछे है, लेकिन यह जमीन हासिल कर रहा है।

10

मैं कहेंगे तथ्य यह है कि इकाई की रूपरेखा Microsoft से है दोनों एक फायदा है और एक है हानि। आपको एक ही स्रोत से सीधे .NET के रूप में एक ढांचा मिल रहा है। बुरी खबर यह है कि माइक्रोसॉफ्ट अक्सर पिछड़ा संगतता के संबंध में अपने कोड बेस को अप्रचलित करता है।

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

स्प्रिंग के बारे में मुझे सबसे अच्छी तरह से पसंद की जाने वाली सुविधाओं में से एक यह है कि वे इस तरह से आपके जैसे निर्णय नहीं लेते हैं। वसंत की अपनी जेडीबीसी विशेषताएं हैं, लेकिन यह हाइबरनेट, टॉपलिंक, जेडीओ, आईबाटिस और जेपीए का समर्थन करती है। यदि आप किसी अन्य तरीके से जाने का निर्णय लेते हैं (उदा।, नोएसक्यूएल) तो आप अपनी कक्षाओं को इंजेक्ट करने के लिए भी स्वतंत्र हैं। ढांचे की पसंद से आपके विकल्पों को क्यों तय किया जाना चाहिए? यह बहुत नानी-आश है: "हम माइक्रोसॉफ्ट हैं; हम जानते हैं कि आपके लिए बेहतर क्या है।"

+0

इसे पूरी तरह से गैर तकनीकी दृष्टि से स्पष्ट करने के लिए धन्यवाद। एनएचबीनेटनेट एएसपी.नेट एमवीसी के साथ एक अच्छे मैच की तरह लगता है, क्योंकि दोनों उत्पाद बहुत खुले स्रोत हैं। –

+13

जो भी आपको बताता है कि ईएफ 4 के लिए एक पुनर्लेख की आवश्यकता है वास्तव में इसे आजमाया नहीं है। मैंने अभी एक दिन से भी कम समय में एक बड़ी ईएफ 1 परियोजना को .NET 4 (इसलिए केवल ईएफ परिवर्तन नहीं, बल्कि इंस्टॉलर, FxCop, आदि) को अपडेट किया है। किसी कारण से, ईएफ के साथ वास्तविक अनुभव इसके बारे में किसी की राय व्यक्त करने के लिए एक शर्त नहीं प्रतीत होता है। –

+1

इसे एक सहयोगी से मिला जो मैंने सोचा था कि जानकार था। शायद मैं गलत समझा। मैं जवाब संपादित कर दूंगा। – duffymo

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