मैंने सॉफ़्टवेयर डिज़ाइन पर बहुत सी किताबें पढ़ी हैं, और अधिक से अधिक मैं सोच रहा हूं कि क्या मैंने व्यवसाय ऑब्जेक्ट और सीरियलाइजेशन के बीच चिंता को अलग करने के बारे में सीखा है, मुझे और अधिक उत्पादक बनाता है।क्यों मेरी चिंताओं को अलग करना डाटाबेस/बिजनेस ऑब्जेक्ट्स/वेब सेवा, मुझे और कोड लिखता है?
मैं डोमेन संचालित डिजाइन से प्रभावित हूं, इसलिए जब मैं अपने व्यवसाय वर्गों को डिजाइन करता हूं तो मैं दृढ़ता के बारे में नहीं सोचता। मेरे डेटाबेस/वेब सेवा प्रौद्योगिकी/कैशिंग प्रौद्योगिकी के साथ मिलकर एकमात्र ऑब्जेक्ट्स एक अच्छे डोमेन इंटरफ़ेस के साथ एक भंडार के पीछे encapsulated हैं।
एक पारंपरिक अनुप्रयोग डेटाबेस < -> वेब सेवा < -> आरआईए, मैं अपने व्यवसाय वर्ग खाता और कर्मचारी डिजाइन करता हूं, उदाहरण के लिए। फिर यदि मैं डेटा स्रोत से खाता प्राप्त करना चाहता हूं तो मैं एक IAccountRepository बना सकता हूं, और क्वेरी करने के तरीकों को लागू कर सकता हूं, या अपने डेटा स्रोत में खाते जोड़ सकता हूं।
मेरे आवेदन में कैशिंग क्षमता जोड़ने के लिए, यह केवल प्रॉक्सी क्लास बनाने का मामला है जो IAccountRepository लागू करता है और वास्तविक भंडार को लपेटता है, फिर इसे अपने आईओसी कंटेनर में इंजेक्ट करता है।
डेटाबेस रिपॉजिटरी को कार्यान्वित करने के लिए, मैं एक ओआरएम का उपयोग करता हूं जो मेरे डेटाबेस स्कीमा से कक्षाएं बनाता है, फिर मैं डेटाबेस कक्षाओं में/से व्यवसाय वर्गों को बदलने के लिए एक अनुवादक का उपयोग करता हूं, इस प्रकार मेरी व्यावसायिक कक्षाएं मेरे डेटाबेस स्कीमा से decoupled हैं।
मैं अपनी वेब सेवाओं के लिए समर्पित डेटा अनुबंध कक्षाएं भी बनाता हूं, फिर वेब सेवा वेब ऑब्जेक्ट परिप्रेक्ष्य से अपने डेटा प्रस्तुति के लिए व्यावसायिक वस्तुओं के एकत्रीकरण को बदलने के लिए अनुवादकों का उपयोग करती है।
जब मैं अपना आरआईए एप्लिकेशन बनाता हूं, तो मैं फिर से अपना डोमेन मॉडल डिज़ाइन करता हूं, लेकिन इस बार भंडार कार्यान्वयन डेटाबेस (और फिर अनुवादकों) के बजाय एक webservice का उपयोग करता है।
WPF डेवलपर्स के लिए, मैं तब अपना व्यूमोडेल और मेरा दृश्य बना देता हूं।
मैं इस तरह के कार्यक्रम का उपयोग करता था।
लेकिन, जब मेरे मालिक आता है और कहता है: आप इस फार्म के लिए एक क्षेत्र में जोड़ सकते हैं ... ऐसा ऐसा मैं चाहिए करने के लिए: मेरे डेटाबेस
- अद्यतन
- अद्यतन मेरी डेटाबेस अनुवादक
- अद्यतन अपने व्यवसाय वस्तु
- अद्यतन अपने वेब सेवा अनुवादक (सर्वर)
- अद्यतन अपने वेब सेवा अनुवादक (ग्राहक)
- अद्यतन अपने व्यवसाय वस्तु (ग्राहक) मेरे विचार
- अद्यतन
- WPF adepts के लिए, मेरे ViewModel अद्यतन
मैं अधिक से अधिक जोड़े डेटाबेस का उपयोग प्रौद्योगिकी और वेब सेवा के साथ अपने व्यवसाय वस्तु के लिए सोच रहा हूँ प्रौद्योगिकी या क्रमबद्धता प्रौद्योगिकी।
इस तरह मुझे अब अपने अनुवादकों को बनाए रखने की आवश्यकता नहीं है। उदाहरण के लिए व्यापारिक वस्तुओं पर इन तकनीकों के गुण/एनोटेशन का उपयोग क्यों नहीं करते? हां यह कुछ बाधाओं को लाता है, हां मुझे अपने खेतों पर एक सेट/सेट की आवश्यकता होगी, भले ही मैं अपनी संपत्ति को पढ़ना चाहूंगा, हां, मेरे व्यापार मॉड्यूल में बाहरी निर्भरताएं होंगी। लेकिन मुझे लगता है कि इसका परिणाम कम कोड होगा, और एक अधिक रखरखाव प्रणाली होगी।
मेरे भंडारों का कार्यान्वयन तुच्छ होगा, और अनुवादकों पर भरोसा नहीं करेगा।
हालांकि मुझे इस तरह के कोड के फायदे दिखाई देते हैं, मैं हमेशा इस तरह के कोड के लिए दोषी महसूस करता हूं। मैं अपने व्यापारिक वस्तुओं पर अपनी डेटा एक्सेस प्रौद्योगिकी/वेब सेवा प्रौद्योगिकी/सीरियलाइजेशन तकनीक के साथ 5 विशेषताओं/एनोटेशन जोड़ने के बारे में वास्तव में दोषी महसूस करता हूं और मुझे लगता है कि यह सही नहीं है।
क्यों मेरी चिंताओं को अलग करना डाटाबेस/बिजनेस ऑब्जेक्ट्स/वेब सेवा, मुझे और कोड लिखता है?
क्या आपके पास कुछ विकल्प हैं?
दिलचस्प, अगर थोड़ा संवेदनात्मक है। मुझे लगता है कि एक प्रोग्रामर की व्यक्तिगत उत्पादकता आवेदन मूल्य के साथ अच्छी तरह से संबंधित होगी। अन्यथा, हम नई और बेहतर प्रोग्रामिंग भाषाओं और औजारों को क्यों जारी रखना जारी रखेंगे? हम सिर्फ कोबोल के साथ क्यों नहीं चिपके? एक मालिक का अनुरोध किया गया परिवर्तन ठीक है, लेकिन यदि नियमित आधार पर बहुत से बदलावों का अनुरोध किया जाता है, तो शायद अधिक चुस्त, decoupled डिजाइन क्रम में है। –
हम कोबोल के साथ नहीं रहते हैं क्योंकि रखरखाव, अनुकूलन और परिचालन लागत इतनी अधिक है। नए विकास उपकरण आमतौर पर उच्च "गुणवत्ता" का कोड उत्पन्न करते हैं जहां गुणवत्ता का रखरखाव, अनुकूलनीय और प्रयोग योग्य होता है। विकास लागत जीवन चक्र लागत का एक छोटा सा अंश है। –
क्या कोड कोड को बनाए रखने योग्य है यदि आपको इसकी आवश्यकता है 1. मेरे डेटाबेस को अपडेट करें 2. मेरे डेटाबेस अनुवादक को अपडेट करें 3. मेरी व्यावसायिक ऑब्जेक्ट अपडेट करें 4. मेरा वेब सेवा अनुवादक (सर्वर) अपडेट करें 5. मेरे वेब सेवा अनुवादक को अपडेट करें (ग्राहक) 6. मेरे व्यापार ऑब्जेक्ट (क्लाइंट) को अद्यतन करें 7. मेरे दृश्य को अपडेट करें 8. WPF adepts के लिए, मेरे व्यूमोडेल –