2010-03-14 15 views
7

मैं ASP.NET और Windows सर्वर के आधार पर एक नई परियोजना शुरू कर।ADO.NET इकाई की रूपरेखा या ADO.NET

आवेदन बहुत बड़ी होने की योजना बनाई है और खींच रहा है और उच्च आवृत्ति को अद्यतन करने के लिए ग्राहकों की बड़ी राशि की सेवा। डेटा बदल रहा है।

मैंने पहले लिंक-टू-एसक्यूएल या एडो.Net के साथ परियोजनाएं बनाई हैं।

इस परियोजना के लिए मेरे योजना VS2010 और नए EF4 ढांचे का उपयोग करने के लिए है।

  • यह इकाई की रूपरेखा

  • पिछले अनुभव से

    पेशेवरों और विपक्ष के साथ विकास के बारे में अन्य प्रोग्रामर विकल्प सुनने के लिए बहुत अच्छा होगा?

  • आपको लगता है EF4 उत्पादन के लिए तैयार है?

  • मैं जोखिम उठाने चाहिए या सिर्फ सादे पुराने अच्छा ADO.NET के साथ चिपके रहते हैं?
+0

क्या आप ऐप के बारे में अधिक कह सकते हैं? यह एक व्यापार ऐप की तरह लगता है - बुरी खबर: पूरी तरह से गलत उपकरण। – TomTom

उत्तर

6

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

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

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

लेकिन यह लागत पर आता है - उन अतिरिक्त परतों का प्रदर्शन, जटिलता, रखरखाव पर असर पड़ता है। अगर आपको उन सुविधाओं की ज़रूरत है, तो आपको उस कीमत का भुगतान करने में खुशी होगी, कोई सवाल नहीं। लेकिन क्या आपको इसकी ज़रूरत है ??

निश्चित रूप से, आप सीधे ADO.NET पर वापस जा सकते हैं - लेकिन क्या आप वास्तव में डेटाटेबल्स, डेटारो, और untyped Row["RowName"] के साथ परेशान करना चाहते हैं ?? वास्तव में???

तो मेरी सिफारिश यह होगा:

  • आप अपने बैकएंड के रूप में केवल एसक्यूएल सर्वर की जरूरत है
  • अगर आप अपने मॉडल
  • में एक इकाई वस्तु के लिए एक डेटाबेस तालिका के एक काफी सरल और सीधा मानचित्रण है

तब: लिंक-टू-एसक्यूएल का उपयोग करें! क्यों नहीं?? यह अभी भी माइक्रोसॉफ्ट द्वारा .NET 4 - हेक में पूरी तरह से समर्थित है, उन्होंने bugfixes and added a few bits and pieces भी किया - यह तेज़ है, यह कुशल है, यह दुबला और मतलब है - तो क्यों नहीं ??

+0

प्रतिक्रिया के लिए धन्यवाद! जैसा कि आपने कहा है कि ado.net गधे में सिर्फ दर्द है, और मुझे वास्तव में linq-to-sql पसंद है, लेकिन ऐसा लगता है कि धीरे-धीरे मरने वाली चीज़ चुनना पसंद है। भविष्य में ईएफ नहीं है? – RuSh

+1

ईएफ भविष्य है - यदि आपको उन सभी सुविधाओं की आवश्यकता है, तो हाँ। लिंक-टू-एसक्यूएल उपलब्ध है, यह मान्य है, यह काम करता है, यह तेज़ है - इसका उपयोग क्यों नहीं करें ?? –

+1

क्या आप अभी भी एक नई परियोजना के लिए लिंक टू एसक्यूएल के साथ जाने के साथ अपनी स्थिति पर खड़े हैं, जहां मुझे केवल 1-1 मैपिंग में टेबल का पर्दाफाश करना है, और शायद डब्ल्यूसीएफ डाटा सर्विसेज के साथ? धन्यवाद! – Nock

0

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

एफई भविष्य है, एडीओ.NET डेटा सेवाएं एक वेब सेवा जोड़ती हैं, साथ ही यह पीओसीओ और टी 4 पीढ़ी का समर्थन करती है, और कोई भी नई विशेषताएं इसका समर्थन करेगी (LINQ से SQL केवल रखरखाव है, और डेटा सेट को और कोई बदलाव नहीं मिलेगा)।

एचटीएच।

2

मेरी सलाह दोनों का उपयोग है। सबसे पहले मैंने सोचा कि मैं केवल एसक्यूएल के लिए linq का उपयोग करता हूं और कभी भी ado.net को कभी भी स्पर्श नहीं करना पड़ता (मुझे किसने खुश किया)।

अब मैं उपयोग कर रहा हूँ दोनों एसक्यूएल करने के लिए कुछ चीजें LINQ (और एफई की तरह किसी भी ORM) ऐसा नहीं कर सकते क्योंकि। मुझे कुछ बड़े पैमाने पर आवेषण करना पड़ा और मैंने इसे पहले linq से sql के साथ किया और 500 रिकॉर्ड करने के लिए इसे 6 मिनट से अधिक (वैधता नियमों के लिए 2 मिनट डीबी में डालने वाला था)।

मैं थोक प्रतिलिपि SQL के यह बदल गया है और अब यह 2 मिनट और 4 सेकंड के लिए नीचे है (4 सेकंड सभी आवेषण करने के लिए)

लेकिन जैसे marc_s कहा कि मैं वास्तव में DataTables, DataRows साथ बेला के आसपास नहीं करना चाहता था, और untyped पंक्ति ["RowName"]।

कहें कि मेरी तालिका 10 कॉलम लंबी थी और टेबल ए कहा जाता था। मैंने क्या किया था, मैंने एसक्यूएल के लिए linq का उपयोग किया था और एक टेबल ए क्लास (नई टेबलए)) ऑब्जेक्ट बनाया था और इसे डेटा के साथ पॉप्युलेट किया था। मैं फिर इस ऑब्जेक्ट को उस विधि में पास कर दूंगा जिसने डाटरो बनाया था।

तो एसक्यूएल को LINQ मुझे कुछ समय बचा लिया क्योंकि मैं शायद के रूप में मैं विधि है कि डेटा पंक्ति में आता है में 10 मानकों में पारित करने के लिए नहीं चाहता एक वर्ग बना सकता था। मुझे यह भी लगता है कि यह थोड़ा सा विशिष्टता देता है क्योंकि आपको उस विधि का उपयोग करने के लिए सही वस्तु में गुजरना पड़ता है ताकि गलत डेटा में गुजरने का इतना कम मौका हो।

अंत में आप अभी भी संग्रहित प्रक्रियाओं कॉल करने के लिए एसक्यूएल के लिए LINQ का उपयोग कर सकते हैं और उस कोड की एक पंक्ति की तरह है।

तो मैं प्रयोग करेंगे दोनों जब कभी आपको लगता है कि एसक्यूएल के लिए LINQ (या अपने मामले एफई में) है धीमी गति से तो सिर्फ एक सपा लिखने और एफई के माध्यम से यह कहते हैं। यदि आपको सीधे ado.net का मूल्यांकन करने की आवश्यकता है, तो आपको यह निर्धारित करने की ज़रूरत है कि आप अधिकांश कोड के लिए ईएफ का उपयोग कर सकते हैं (ताकि आप कम से कम ऑब्जेक्ट्स के साथ काम कर सकें) और केवल उस छोटे हिस्से के लिए ado.net प्रकार के साथ जो मैंने किया था एसक्यूएल थोक प्रतिलिपि।

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