6

मैं एएसपी.NET को एक बड़े क्लासिक एएसपी डेटाबेस एप्लिकेशन के रूपांतरण की योजना बनाने के शुरुआती चरणों में हूं और मुझे उपयोग करने में कौन सी डेटा एक्सेस विधि चुनने में परेशानी हो रही है। मैंने लिंक टू एसक्यूएल, डायनेमिक डेटा, दृढ़ता से टाइप किए गए डेटासेट, एंटरप्राइज़ लाइब्रेरी (डेटा एक्सेस एप्लिकेशन ब्लॉक) और एंटीटी फ्रेमवर्क के साथ एक छोटा सा हिस्सा खेला है, लेकिन उनमें से कोई भी मुझे "एक" के रूप में बाहर नहीं चला है। बहुत सारे विकल्प हैं - मेरा सिर तैराकी कर रहा है, मुझे चुनने में मदद करें!डेटा एक्सेस विधि का चयन करने पर सलाह की आवश्यकता है

शायद यह अनुप्रयोग है कि मैं प्राथमिकताओं के साथ परिवर्तित कर रहा हूँ पर कुछ पृष्ठभूमि देने के लिए मदद मिलेगी ...

  • वापस अंत Microsoft SQL सर्वर है (2005 या बाद में) और हम के लिए प्रतिबद्ध हैं कि, इसलिए मुझे किसी भिन्न डेटाबेस प्लेटफ़ॉर्म का समर्थन करने के बारे में चिंता करने की आवश्यकता नहीं है।

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

  • एप्लिकेशन में कई डेटा एंट्री फॉर्म और व्यापक खोज और रिपोर्टिंग क्षमताएं हैं (रिपोर्ट एक और जानवर है जिसे मैं बाद में सामना करूंगा)।

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

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

  • मैं एएसपी.NET के लिए कुल नौसिखिया हूं लेकिन क्लासिक एएसपी, टी-एसक्यूएल और पुराने एडीओ (उदा। डिस्कनेक्ट किए गए रिकॉर्डसेट) से घनिष्ठ परिचित हूं। यदि मेरी पृष्ठभूमि से आने वाले किसी भी व्यक्ति के लिए डेटा एक्सेस विधियां बेहतर अनुकूल हैं, तो मैं उस दिशा में दुबला हो सकता हूं।

किसी भी सलाह के लिए धन्यवाद जो आप दे सकते हैं!

उत्तर

1

nHibernate एक अच्छा फिट हो सकता है। आप मैपिंग को बाहरी कॉन्फ़िगरेशन फ़ाइलों में संग्रहीत कर सकते हैं जो आपकी आवश्यकताओं को हल करेंगे। एक और विकल्प ActiveRecord का उपयोग कर रहा है, जो nHibernate पर आधारित है।

nHibernate में एक साफ सुविधा है जो आपको उपयोगी मिल सकती है। इसे एक डायनामिक प्रॉपर्टी कहा जाता है जो मूल रूप से एक नाम मूल्य जोड़ी संग्रह मैपिंग फ़ाइल से कॉलम नाम खींचकर पॉप्युलेट किया जाता है। इसलिए जब आप अपनी क्लाइंट साइट पर एक कॉलम जोड़ते हैं, तो आप मैपिंग फ़ाइल अपडेट करते हैं और आप ऑब्जेक्ट पर संग्रह के माध्यम से डेटा तक पहुंच पाएंगे।इस श्रृंखला में सभी तीन लेख पर

+0

एक ही काम करने के कई तरीकों से, मैं देखना चाहता हूं कि 1 टूल बनाम दूसरे के लिए अच्छा क्या है (यानी जब किसी का उपयोग करना है)? कुछ पैरामीटर (जैसे सीखने की अवस्था, रखरखाव, सादगी, सामुदायिक समर्थन इत्यादि) के उपकरण के मूल्यांकन के साथ-साथ – shahkalpesh

+0

मैंने सुना है कि हाइबरनेट बहुत शक्तिशाली है, लेकिन मैंने यह भी पढ़ा है कि सीखने की वक्र काफी उपयोग करने के लिए बहुत तेज है सही रास्ता। दुर्भाग्यवश हमारे पास उस तरह का समय नहीं है। – CowherPower

+0

आपके पास कितना समय है? मुझे सबसे पहले अपने पहले ऑब्जेक्ट ग्राफ़ 3 को मैप करने का तरीका जानने में कुछ दिन लगे। मैं 1 का डेवलपर हूं, ऐसा लगता है कि आपके पास एक टीम है। – JoshBerke

5

देखो:

High Performance Data Access Layer Architecture Part 1

महान सलाह।

+0

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

+0

इसमें से अधिकांश आसानी से परिवर्तित हो जाएंगे - खासकर यदि आप बाइनरी को VB.Net को अलग करने के लिए परावर्तक जैसे टूल का उपयोग करते हैं। इसके अलावा, याद रखें, आपके समाधान में भले ही आपकी प्रस्तुति परत vb.net है, आपका डीएएल, डीटीओ और बिजनेस लेयर सी # हो सकता है यदि आप उस दिशा में जाना चाहते हैं। –

+0

मुझे यह अच्छी साइट भी मिली जो आपके लिए सी # से VB.net को परिवर्तित कर देगी। ऐसा लगता है कि यह बहुत अच्छी तरह से काम करता है: http://www.developerfusion.com/tools/convert/csharp-to-vb/ – CowherPower

2

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

निर्भरता इंजेक्शन का उपयोग करके आप एक्सएमएल का उपयोग फ्रेमवर्क को बताने के लिए कर सकते हैं जो एक इंटरफ़ेस के लिए उपयोग करने के लिए ठोस वर्ग है।

ऐसा करने का लाभ यह है कि आप एक डेटाबेस दृष्टिकोण के साथ जा सकते हैं, और यदि आप बाद में किसी दूसरे को बदलने का फैसला करते हैं, तो आप केवल डीएल को बदल सकते हैं और अन्य परतों में कोई बदलाव किए बिना आगे बढ़ सकते हैं।

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

एक नए एप्लिकेशन के लिए मैं काम कर रहा हूं, इसके लिए मैं LINQ से SQL के साथ शुरू कर रहा हूं, मुख्य रूप से क्योंकि विकास तेज हो जाएगा, लेकिन बाद में, यदि मैं तय करता हूं कि मेरी ज़रूरतों को पूरा नहीं करेगा तो मैं इसे केवल स्वैप कर दूंगा।

+0

जब आप कहते हैं कि "सीधे डेटाबेस पर क्यों न जाएं" क्या आप SQLDataSource जैसी चीजों का उपयोग करने के बारे में बात कर रहे हैं और डेटासेट सीधे? मैं इसका विरोध नहीं कर रहा हूं, लेकिन मैं उस मार्ग पर नहीं जाना चाहता हूं अगर नई प्रौद्योगिकियों ने "प्रत्यक्ष" विधि अप्रचलित (या मूर्खतापूर्ण पसंद) नहीं बनाई है। – CowherPower

+1

आपको यह यूआरएल प्रदर्शन के लिए दिलचस्प मिल सकता है: http://toomanylayers.blogspot.com/2009/01/entity-framework-and-linq-to-sql.html डेटारिएडर शायद एक उपयोगी विकल्प होगा। मुझे नहीं लगता कि सीधा मार्ग अप्रचलित है, और यदि यह आपके विकास को गति देता है, तो बनाए रखने के लिए, बाद में, आप बदलना चाहेंगे। –

+1

दिलचस्प लेख। मैं पहले से ही एंटिटी फ्रेमवर्क का उपयोग करने के खिलाफ झुका रहा था और यह निर्णय बहुत सील करता है। – CowherPower

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