2010-11-01 9 views
7

मैं नौसिखिया सी # डेवलपर हूं। जब मैंने प्रोग्रामिंग थिन सीखना शुरू कर दिया है तो बहुत आसान था, आप समस्या देखते हैं, आप समाधान विकसित करते हैं, इसका परीक्षण करते हैं और यह काम करता है, यह आसान है।डेटा को कैसे पहुंचाया जाना चाहिए। कामकाजी व्यावहारिक

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

उबाऊ परिचय के लिए खेद है, लेकिन मैं यह दिखाने की कोशिश कर रहा हूं कि अब मैं कितना निराश हूं। माइक्रोसॉफ्ट द्वारा प्रदान की गई डेटा-एक्सेस प्रौद्योगिकियों का एक समूह है, और तीसरे पक्ष की कंपनियों द्वारा प्रदान की जाने वाली तकनीकों का भी बड़ा समूह है।

मेरे पास टीम लीडर या पड़ोसी सुपर कुशल प्रोग्रामर मित्र नहीं है, इसलिए मुझे आपकी सलाह पूछनी है।

सी # में लिखे गए आपके वास्तविक अनुप्रयोगों में डेटा पहुंच का आप कैसे महसूस करते हैं?

+0

खैर पहले हैं जो आपके एप्लिकेशन है पर फैसला था/करता है, किस ग्राहक को इसका समर्थन करने की आवश्यकता है, क्या ट्रैफिक/लोड आवश्यकताएं, क्या बुनियादी ढांचा इत्यादि। क्या यह एक विशिष्ट प्रश्न है या सामान्य है? – RPM1984

+0

बहुत अच्छा सवाल आदमी :)। मैं जवाब नहीं दे रहा हूं, लेकिन मैं सिर्फ आपके साथ साझा करना चाहता हूं कि मैं बिल्कुल वैसे ही महसूस करता हूं। एक नोट हालांकि, क्या आपने कभी प्रोग्रामिंग प्रतियोगिताएं की हैं? –

+0

से RPM1984 तक। यह सामान्य सवाल है। मान लीजिए कि हमारे पास दूरस्थ पीसी पर एमएस एसक्यूएल सर्वर 2008 है। डाटाबेस नॉर्थविंड की तरह है। मुझे व्यवसाय ऐप विकसित करना है जो गननर को नियम सेट आदि के आधार पर टेबल में डेटा को acces और अपडेट करेगा, मुझे नहीं पता कि आपका क्या मतलब है – v00d00

उत्तर

2

एक बहुत ही समग्र दृष्टिकोण से, मैं हमेशा छिपाने के लिए और एक अंतरफलक के पीछे डेटा का उपयोग कार्यान्वयन विवरण, इस तरह:

public interface IRepository<T> { /*...*/ } 

.NET फ़्रेमवर्क डेटा का उपयोग करने के विभिन्न तरीकों का एक बहुत प्रदान करता है, तो मैं समझ सकता हूँ कि आप उलझन में हैं। हालांकि, इस समय, वहाँ केवल वास्तव में दो या तीन रिलेशनल डेटाबेस तक पहुँचने के लिए उचित विकल्प हैं:

  • NHibernate
  • Entity Framework
  • (IDataReader की तरह कम स्तर एपीआई अभी भी सीमित स्थितियों में अपनी जगह हो सकता है)
1

वास्तविक दुनिया एप्लिकेशन में प्रदान किए जाने वाले लाभों को देखे बिना अबास्ट्रक्शन के लाभ को देखना मुश्किल होता है। सबसे अच्छी सलाह जो मैं दे सकता हूं वह है सॉलिड सिद्धांतों पर पढ़ना, फिर अपने आवेदन को लिखने के लिए क्लाइंट आपके पास आने वाले तरीकों के बारे में सोचने और सोचने के लिए कहें और "अब मुझे ऐसा करने की ज़रूरत है" जो शायद कार्यक्षमता में सूक्ष्म परिवर्तन हो या एक बड़ा बदलाव इस बारे में सोचें कि यह आपके कोड को कैसे प्रभावित करेगा और आपको उन परिवर्तनों को कितनी जगहों की आवश्यकता होगी। एक बार जब आप उन परिवर्तनों को कर लेंगे तो आप कितने आत्मविश्वास से होंगे कि आपने कुछ और नहीं तोड़ा है?

एक और विचार नमूना अनुप्रयोगों में से एक डाउनलोड करना होगा। मेरे विशेष पसंदीदा में से एक कोडप्लेक्स पर Data Access Platform sample प्रदान किया गया है। इस कोड के माध्यम से काम करने का प्रयास करें और देखें कि अमूर्तता और पैटर्न कार्यान्वयन कैसे बदलते समय समग्र रूप से कोड पर प्रभाव को कम करता है।

नीचे की रेखा प्रोग्रामिंग भाषा सीखना आसान है, लेकिन इसके साथ मजबूत समाधान बनाने के तरीके को समझना समय लगता है। हालांकि इसके साथ चिपके रहें क्योंकि जब आप आखिरकार सॉफ्टवेयर आर्किटेक्चर की अच्छी समझ लेते हैं तो यह बेहद फायदेमंद है।

1

कुछ बिंदुओं को दाल के लिए विचार करने के लिए: एक भंडार कोडिंग

  • उपयोग interfaced आधारित पीछे: (नोट बहुत स्वच्छंद है, लेकिन इस सवाल का जवाब होना चाहिए)

    • Encapsulate तर्क
    • उपयोग निर्भरता इंजेक्शन
    • उपयोग NHibernate/इकाई की रूपरेखा 4.0 की तरह एक परिपक्व ORM (लेकिन पता है जब डाटाबेस गहन काम के लिए sproc के उपयोग करने के लिए)
    • का प्रयोग करें कार्य का यूनिट पैटर्न
    • रोकें SQL इंजेक्शन (जैसा कि ऊपर या LINQ-entites,) पैरामिट्रीकृत प्रश्नों का उपयोग करके हमलों
  • संबंधित मुद्दे

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