2010-05-23 11 views
9

के बजाय इकाई फ्रेमवर्क का उपयोग करना चाहिए, मैं CSLA और Entity Framework के लिए नया हूं। मैं एक नया सीएसएलए/सिल्वरलाइट एप्लिकेशन बना रहा हूं जो 12 साल की Win32 C++ प्रणाली को प्रतिस्थापित करेगा। पुरानी प्रणाली एक कस्टम DCOM व्यापार ऑब्जेक्ट लाइब्रेरी का उपयोग करती है और SQL सर्वर पर जाने के लिए ओडीबीसी का उपयोग करती है। नई प्रणाली तुरंत पुराने सिस्टम को प्रतिस्थापित नहीं करेगी - उन्हें आने वाले वर्षों के लिए उसी डेटाबेस के साथ सह-अस्तित्व में होना चाहिए।क्या मुझे कच्चे ADO.NET

पहले मैंने सोचा कि ईएफ जाने का तरीका था क्योंकि यह नवीनतम और महानतम है। एक छोटा ईएफ मॉडल और केवल 2 सीएसएलए संपादन योग्य रूट ऑब्जेक्ट्स बनाने के बाद (अंत में सैकड़ों ऑब्जेक्ट्स होंगे क्योंकि मेरे डीबी में 800+ टेबल हैं) मैं ईएफ के उपयोग पर गंभीरता से पूछताछ कर रहा हूं।

वर्तमान प्रणाली में मैं प्रश्नों जो मैं उत्पन्न एसक्यूएल की वजह से की 100% नियंत्रण कर सकते हैं सूक्ष्म विवरणों के प्रदर्शन ट्यूनिंग करने के लिए कई बार जरूरत है। लेकिन यह ईएफ में लगता है कि दृश्यों के पीछे इतना होता है कि मैं उस नियंत्रण को खो देता हूं। http://toomanylayers.blogspot.com/2009/01/entity-framework-and-linq-to-sql.html जैसे आलेख ईएफ की मेरी छाप में मदद नहीं करते हैं।

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

यदि मैं कच्चे ADO.NET का उपयोग करता हूं, तो क्या मुझे अब से 5 साल का निर्णय पछतावा होगा?

क्या किसी और ने हाल ही में यह विकल्प बनाया है और आप किस तरह से गए हैं?

+0

महान प्रश्न ... मैं एक बहुत ही समान पूछने वाला था। मैं सोच रहा हूं कि ईएफ का लाभ एडीओ.NET की गति और नियंत्रण से अधिक है ... – Walter

उत्तर

7

आपके मामले में, मैं अभी भी इसे हाथ से करने पर ईएफ का चयन करूंगा।

क्यों? ईएफ - खासकर .NET 4 में - काफी परिपक्व हो गया है। यह आपको अपने अधिकांश डेटाबेस संचालन को बहुत आसान और बहुत कम कोड के साथ करने की अनुमति देगा यदि आपको अपने डेटा एक्सेस कोड को सभी कोड-कोड करना है।

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

EF4 एक बेहतर संग्रहीत proc एकीकरण है, और यह वास्तव में दोनों दुनिया के सर्वश्रेष्ठ को खोलता है:

2

आप आवश्यकताओं का मिश्रण और समाधान का मिश्रण होने लगते हैं।

मैं सामान्य रूप से आवश्यक, आवश्यक नहीं, प्रत्येक आवश्यक आवश्यकता के साथ प्रत्येक आवश्यकता को रेट करता हूं। और फिर देखें कि क्या काम करता है।

मैं मानता हूँ के साथ क्या @marc_s ने कहा है, आप दोनों दुनिया का सबसे अच्छा हो सकता है।

केवल दूसरी बात मैं कहूंगा कि अगर इस समाधान अगले 5 वर्षों के लिए चारों ओर हो रहा है, तो आप यूनिट टेस्टिंग पर विचार किया है?

plentyofexamples ईएफ का उपयोग करके इसे सेट अप करने के तरीके पर है। (मैं व्यक्तिगत रूप से ADO.Net सिर्फ इसलिए कि चिंताओं के अलग यूनिट टेस्ट मैचों के लिए इतनी जटिल है से बचें।)

कोई आसान समाधान है। मैं आपकी परियोजना में एक फीचर चुनूंगा जो आपको एक दिन या ऐसा करने में लगेगा। विभिन्न विधियों (कच्चे वर्ग, ईएफ, ईएफ + संग्रहीत प्रक्रियाओं) का प्रयास करें और देखें कि क्या काम करता है!

0

सीएसएलए पर एक उद्देश्य देखें - 'डेटापोर्ट' का आह्वान करें और कॉल स्टैक देखें।

इसके बाद, एक सीआई बिल्ड सर्वर है जो रनटाइम डेटा संग्रहीत करता है और रन की एक श्रृंखला पर एक बिखराव भूखंड प्रदान करता है पर उन वर्गों डाल दिया।

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

अगला, 'सीएसएलए' कक्षाएं कितनी ज़िम्मेदारियां लेती हैं, इस पर एक नज़र डालें।

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

+0

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

+0

मुझे यकीन नहीं है कि 'dislike csla' से आपका क्या मतलब है। कोड कोड है। मैंने अपना मूल प्रश्न दोनों सीएसएलए और ईएफ पर होने के लिए लिया, लेकिन आपकी आवश्यकताओं के शब्दों से पता चलता है कि आप पहले ही सीएसएलए स्थानीय भाषा में समस्या को फिट कर चुके हैं। –