Subsonic बनाम NHibernate

इन उपकरणों में से किसी एक का उपयोग करने के लिए कबूल किया जाता है इस पर सहमति क्या है? मुझे चीजें जल्दी से करने के मामले में सबसनिक बहुत उपयोगी लगता है, लेकिन बड़ी परियोजनाओं पर यह स्केल नहीं करता है, और यह आपके डोमेन मॉडल को आपके डेटाबेस मॉडल से जोड़ता है। यही वह जगह है जहां निबर्ननेट आती है क्योंकि यह आपको हल्के पीओसीओ देता है जो आपके डेटाबेस मॉडल से संबंधित नहीं हैं, लेकिन सेटअप का समय बहुत लंबा है।

0
जोड़ा संपादित
विचारों: 1

13 उत्तर

हम सबसोनिक के साथ बूटस्ट्रैप किए गए हैं और अब हम मूल्यांकन करने की कोशिश कर रहे हैं कि क्या हम अब निबर्ननेट पर स्विच करने जा रहे हैं कि हम सबसोनिक के दर्द बिंदु पर हैं।

हमारा दूसरा विकल्प कुछ मध्य ग्राउंड बनाना है जहां हम उपनिवेशिक को क्वेरी करने और मनमानी ऑब्जेक्ट्स को "टाइप की गई सूची के रूप में निष्पादित करें" कार्यक्षमता के साथ लोड करने के लिए उपयोग करते हैं जो एक मनमानी linq शैली sql कथन का नाम आधारित मैपिंग करता है। या निचोड़ने और बाकी को दोबारा करने में कुछ कोशिश करने और फिर से बनाने के लिए।

तो मैं कहता हूं कि सबसनिक छोटे ऐप्स में समझ में आता है, लेकिन सबसोनिक ऐप्स पर रखरखाव बहुत बालों वाली हो जाता है, हमारे पास ओवरलैपिंग सत्यापन कोड के साथ विशेष रूप से कठिन समय होता है, और कोड ट्रिगर किए गए ईवेंट में प्री / पोस्ट होता है। एक सक्रिय रिकॉर्ड पैटर्न के लिए, सबसनिक निश्चित रूप से 80% है, लेकिन कुछ शानदार तरीके से करता है, और आपको अपने विरासत पदानुक्रम पर कोई वास्तविक नियंत्रण होने से रोकता है, क्योंकि प्रत्येक वर्ग को उस तालिका में वापस आने के लिए एक टेबल का उत्तराधिकारी होना चाहिए।

0
जोड़ा

मुझे लगता है कि आप इसे काफी पसंद करते हैं। सबसनिक कोड उत्पन्न करता है, इसलिए आपकी व्यावसायिक वस्तुएं आपके डेटाबेस संरचना का प्रतिबिंबित होंगी। nHibernate मैपिंग फ़ाइलों का उपयोग करता है जो आपके व्यवसाय ऑब्जेक्ट को डेटाबेस में मैप करते हैं ताकि आपकी ऑब्जेक्ट्स को संरचित किया जा सके।

यह कितनी बड़ी परियोजना है? क्या दीर्घकालिक समर्थन की आवश्यकता होगी? क्या सबसनिक की लागत प्रभावीता किसी भी संभावित स्केलिंग मुद्दों को ऑफ़सेट करने जा रही है?

0
जोड़ा

थोड़ा सा विषय बंद, लेकिन एक समान नस में। क्या आपने Castle ActiveRecord को देखा है, यह NHibernate और कोड से डेटाबेस में xml मैपिंग बनाने में समय बिताने की आवश्यकता को हटा देता है। NHibernate की तरह आप अपनी डोमेन ऑब्जेक्ट्स को अपनी इच्छानुसार बना सकते हैं और बाद में इस संरचना से डेटाबेस स्कीमा उत्पन्न कर सकते हैं।

ActiveWriter का उपयोग करके, एक योगदान टूल, आप आसानी से अपने डेटाबेस से डोमेन ऑब्जेक्ट्स पर मानचित्र कर सकते हैं।

0
जोड़ा
मैं अब पायलट परियोजना पर कार के साथ खेल रहा हूं। मैं इसे चुनता हूं क्योंकि मुझे एनटीबर्ननेट के रूप में परीक्षण किए गए कुछ के शीर्ष पर ActiveRecord का विचार पसंद है। अगर मैं कार पसंद नहीं करता हूं तो मैं शुद्ध एनएचबेर्नेट पर वापस आ सकता हूं। यह मुझे एक सुरक्षित निकास देता है - मुझे वह पसंद है। मैं तुलना के लिए कुछ महीनों में Subsonic कोशिश करेंगे।
जोड़ा लेखक BuddyJoe, स्रोत

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

मेरी राय में आपके डेटाबेस मॉडल से पूरी तरह से अपने डोमेन मॉडल को अलग करने का एकमात्र सही तरीका है अपने स्वयं के डीटीओएस (अनिवार्य रूप से डेटा पास करने के लिए पीओसीओ), और फिर उन्हें अपनी डेटा परत में अपनी पसंद के ORM पर वापस मानचित्र करें। लेकिन ज्यादातर मामलों में, यह दृष्टिकोण मुझे इसके लायक से ज्यादा परेशानी देगा।

0
जोड़ा

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

यदि आप अपेक्षाकृत सरल डेटाबेस का उपयोग कर रहे हैं जो आपके नियंत्रण में है (जैसा कि आप डेटाबेस डिवीजन निरीक्षण समीक्षा बोर्ड में आठ रूपों को भेजने के बिना कॉलम बदल सकते हैं), तो मैं सबसोनिक से शुरू करने और एनबीबेर्नेट में जाने की सलाह दूंगा यदि सबसोनिक नहीं करता अपनी आवश्यकताओं को पूरा करो।

0
जोड़ा

मैं लिखा एक ब्लॉग पोस्ट हाल ही में .NET ORMs के बारे में है जिसमें Subsonic है, और ActiveRecord। मेरे अनुभव से यह इस बात पर निर्भर करता है कि परियोजना क्या कर रही है, यदि आप एसक्यूएल पृष्ठभूमि से आते हैं तो सबसनिक बहुत बेहतर काम करता है लेकिन एनएचबीर्नेट के पास इसके अधिक से अधिक विकल्प हैं। ActiveRecord छोटी परियोजनाओं के लिए अच्छा है, मुझे विश्वास नहीं है कि यह बड़ी परियोजनाओं के लिए एनएचबीर्नेट से चिपकने से ज्यादा तेज है।

0
जोड़ा
आपके द्वारा प्रदान किया गया लिंक काम नहीं कर रहा है। क्या आपका यह मतलब है? shrinkrays.net/articles/a-look-at-dotnet- orms.aspx
जोड़ा लेखक kimsk, स्रोत

मेरा मानना ​​है कि आपको उस व्यक्ति से चिपकना चाहिए जिसका आप सबसे अच्छा उपयोग कर सकते हैं। अंतिम लक्ष्य उत्पादकता और अच्छा प्रदर्शन गुणवत्ता कोड है। यदि आप सबसोनिक को अंदर और बाहर जानते हैं तो इसके साथ चिपके रहें और यदि आप NHibernate को गहराई से चिपकने के लिए NHibernate जानते हैं। यह बहुत ही व्यक्तिपरक प्रश्न है। आपको इस तथ्य पर भी विचार करना चाहिए कि आपके टीम के सदस्य के पास विशेषज्ञता क्या है। यदि आप इसमें अच्छे हैं तो आप इसे आसानी से बनाए रखने में सक्षम होंगे।

मैंने सबसोनिक का उपयोग करके बड़ी परियोजनाएं देखी हैं जबकि एनएचबेर्नेट पहले ही प्रसिद्ध है और इसका व्यापक रूप से उपयोग किया जाता है।

ORM चुनने का निर्णय नहीं है    पूरी तरह से ओआरएम पर निर्भर करता है।

0
जोड़ा

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

  • एनएचबीर्नेट बड़े पैमाने पर परियोजनाओं के लिए मेरी पसंद है क्योंकि इसका हल्का पीओसीओ का उपयोग होता है। अगर मैं कभी भी अपना ओआरएम "मुझे विश्वास है" को स्विच करना था तो यह रिफैक्टर करने के लिए बहुत आसान होगा।
  • जब मेरे पास लघु स्तरीय प्रोजेक्ट होता है तो सबसोनिक मेरी पसंद है। मेरा मानना ​​है कि प्रदर्शन के अनुसार सबसोनिक स्केल अच्छी तरह से। हालांकि, मैं कसकर इसके साथ मिलकर महसूस करता हूं क्योंकि यह मेरी परियोजना में इतनी उत्कीर्ण है। छोटी परियोजना में मैं अभी भी इसे बाहर कर सकता हूं क्योंकि कोड बेस इतना छोटा है और यह वास्तव में मुझे विज्ञापन के रूप में कोड को बाहर निकालने में मदद करता है।
0
जोड़ा

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

यह पोस्ट देखें रोब कॉनरी से, सबसोनिक के रचनाकारों में से एक। वह आपके सबसोनिक कोड को ऐप के बाकी हिस्सों से कैसे कम करने के बारे में बात करता है। उन्होंने इस तथ्य का भी उल्लेख किया है कि यह आर्किटेक्चर आपको बाद में एसबीएसोनिक को कुछ अन्य डेटा एक्सेस लेयर जैसे एनएचबर्ननेट या LINQ से SQL के लिए स्वैप करने में सक्षम बनाता है।

मुझे पता है कि मैंने वास्तव में आपके प्रश्न का उत्तर नहीं दिया था, लेकिन मुझे उम्मीद है कि यह अभी भी मदद करता है।

0
जोड़ा

दोबारा थोड़ा विषय-वस्तु, लेकिन मैं दूसरा Castle ActiveRecord - का उपयोग करने के बजाय आपके मॉडल (सबसनिक दृष्टिकोण) के रूप में डेटाबेस या एक्सएमएल स्पेगेटी (एनएचबीर्नेट दृष्टिकोण) में व्यय घंटे आप बस अपने मॉडल वर्गों पर विशेषताओं को रखते हैं।

आप ActiveRecord को डेटाबेस स्कीमा जेनरेट भी प्राप्त कर सकते हैं तुम्हारे लिए।

हमने अभी कुछ परियोजनाओं पर इस दृष्टिकोण का उपयोग किया है और लाभ निम्नानुसार हैं:

  • Easy upgrade path to NHibernate if required in the future
  • Support for simple inheritance models - eg. Car -> Vehicle
  • The schema it generates is most likely how you would have created it anyway, so you can spend more time building the app rather than worrying about keeping your model/db in sync.
0
जोड़ा

ActiveRecord पर विचार करते समय अपनी टीम और प्रोजेक्ट आकार पर विचार करें।

मेरे अनुभव में, ActiveRecord NHBernate के शीर्ष पर एक अमूर्त है जो अधिक जटिल परिदृश्यों की कोशिश करते समय चाकू की तरह लीक करना शुरू कर देता है।

यदि आपके पास मामूली जटिल या गैर-सीधा स्कीमा है, तो NHibernate के साथ चिपके रहें। आप टुकड़े टुकड़े कर सकते हैं और इसे पूर्णता के लिए पासा कर सकते हैं।

दूसरी जगह आपको परेशानी हो सकती है जब आपको एक मामूली जटिल क्वेरी की आवश्यकता होती है। ActiveRecord बहुत सारे NHibernate के कार्यान्वयन को छुपाता है ... लेकिन आपको जटिल क्वेरी के लिए इसकी आवश्यकता होगी, जो कि अगर आप पूरी तरह से एचक्यूएल से अपरिचित हैं तो बहुत मुश्किल हो जाएगा। सावधान रहें टीम के सदस्यों ने एनएचबर्ननेट और एचक्यूएल सीखने के बजाय किनारों पर सिर्फ हैक नहीं किया है।

0
जोड़ा

इस विषय पर जो सलाह मिली है वह यह है कि सबसनिक अधिक जटिल परिदृश्यों को संभालने के लिए स्केल नहीं करता है और इसलिए यदि आप उस सड़क पर जाते हैं तो आप एक नौकरी के साथ खत्म हो जाएंगे जो एक और उन्नत ओआरएम पर स्वैप करने की कोशिश कर रहा है।

मैं जटिल मामलों के लिए एनएचबर्ननेट का उपयोग करने में अधिक रुचि रखता हूं, सरल मामलों के लिए कैसल सक्रिय रिकॉर्ड और फ्लुएंट एनएचबेर्नेट पर नजर रख रहा हूं, जिसे एनएचबीर्नेट मैपिंग को बहुत आसान बनाना चाहिए (विशेष रूप से एक बार सम्मेलन आधारित मैपिंग समर्थन में सुधार हुआ है)।

0
जोड़ा
यदि आपके पास सबसोनिक स्केलिंग मुद्दों का सबूत है, तो कृपया प्रदान करें। मैंने व्यक्तिगत रूप से सबसोनिक स्केलेबिलिटी के साथ किसी भी मुद्दे का अनुभव नहीं किया है।
जोड़ा लेखक Jim Geurts, स्रोत
"कि Subsonic अधिक जटिल परिदृश्यों को संभालने के लिए पैमाने पर नहीं है" इसके साथ समस्या यह है कि सिर्फ यह कहने का मतलब कुछ भी नहीं है। विश्वसनीय साक्ष्य की कुल कमी है कि एसएस स्केल नहीं करता है। मुझे लगता है कि यह सबूत है कि कभी-कभी इंटरनेट पर कुछ कहना पर्याप्त है।
जोड़ा लेखक CarmineSantini, स्रोत
0
जोड़ा
वही स्टीफन फोर्ट, अब (दिसम्बर 2010 तक) कह रहा है, "आज के ओआरएम उपकरणों की उभरती हुई पीढ़ी के विकास के रूप में, वे अधिक तेज़ और उपयोग करने में आसान हो रहे हैं, जिससे अधिक डेवलपर्स को अपने आवेदन आर्किटेक्चर में ओआरएम को एकीकृत करने पर दूसरा नजर डालने के लिए प्रेरित किया जा रहा है। "। एक आदमी को अपनी इंद्रियों में लाने के लिए समय की तरह कुछ भी नहीं है! :-) devproconnections.com/article/tools-and-products/…
जोड़ा लेखक rsenna, स्रोत