2010-03-02 8 views
5

हमारे पास हमारे एसओए डब्ल्यूसीएफ सिस्टम में डेटा एक्सेस सेवा है। यह सेवा "सिस्टम विस्तृत" डेटाबेस तालिकाओं पर सीआरयूडी (निर्माण, अद्यतन, हटाएं) संचालन करने के लिए ज़िम्मेदार है, और यह प्रश्नों के लिए इस डेटा का स्रोत भी है। डीएएस के contol के तहत टेबल तक पहुंचने के लिए सिस्टम में कोई भी अन्य सेवा इसे प्राप्त करने या संशोधित करने के लिए डीएएस पर जाना है। हम इकाई फ्रेमवर्क का उपयोग करते हैं और इस डीएएस के लिए अपनी खुद की पीओसीओ राज्य ट्रैकिंग प्रणाली का निर्माण करते हैं।डब्ल्यूसीएफ एसओए: सीआरयूडी डाटा एक्सेस सर्विस ... क्यों परेशान (या हमारा डिज़ाइन गलत है)?

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

सच यह है कि मैंने कभी नहीं समझा है कि क्यों डेटा एक्सेस सेवा एक अच्छा विचार है क्योंकि सीधे टेबल तक पहुंचने का विरोध किया जाता है। ऐसा लगता है कि धीमे होने के कारण, हमारा डीएएस लेनदेन नहीं है क्योंकि यह डाटाबेस अपडेट (एक समय में केवल एक ही पॉकोस) के लिए एक पीओसीओ ग्राफ नहीं भेज सकता है और हमारे पास ऐसे मुद्दे भी हैं जहां डीएएस वास्तव में किसी अन्य सेवा के लिए क्लाइंट है जिसके लिए डेटा चाहिए इससे ... परिपत्र निर्भरता।

डीएएस के साथ परेशान क्यों? एसओए की बात आने पर डीएएस इतना महत्वपूर्ण क्यों है? मुझे यहां क्या समझ नहीं आ रहा है? नियंत्रण का एक बिंदु?

क्या यह एक एसओए डिज़ाइन दोष भी है कि सभी टेबल डीएएस का हिस्सा नहीं हैं और कुछ सेवाओं की अपनी "निजी" टेबल हैं?

इस स्वागत के बारे में कोई चर्चा।

+0

डब्ल्यूसीएफ डेटा सेवा का उपयोग करने के बजाय अपनी खुद की सेवा क्यों रोल करें?यह आपको कुछ सुविधाएं देता है जो आप कहते हैं कि आपकी सेवा की कमी है, और यदि आपके पास पहले से ही ईएफ मॉडल है तो इसे लागू करने के लिए * बेहद कम प्रयास है। –

उत्तर

7

आप सोचने में सही हैं कि यह चीजों को करने का सही तरीका है, और आप यह भी सही हैं कि यह चीजों को धीमा कर देता है और कभी-कभी बोझिल हो सकता है। एसओए एक सेवा से जुड़े सभी डेटा के नियंत्रण के एकल बिंदु सुनिश्चित करने के बदले में कुछ दक्षता को बंद कर देता है। वास्तव में, कुछ एसओए सर्किलों में "सामान्य डीएएस" सेवा रखने का विचार थोड़ा सुगंधित है।

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

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

एक अन्य लाभ स्केलेबिलिटी और रखरखाव है। आइए मान लें कि आपकी सेवाओं में से एक डेटा के विशाल हिस्से तक पहुंच रही है। एसओए के साथ, सबकुछ "ब्लैक-बॉक्स" होता है ताकि आपके क्लाइंट कोड को यह पता न हो कि डेटा अंततः कैसे प्राप्त किया जाता है। आप अपने आरडीबीएमएस, विभाजन टेबल, या कैशिंग को कार्यान्वित कर सकते हैं, और इसे क्लाइंट कोड के लिए अदृश्य कर सकते हैं - यह सुनिश्चित करना कि आपके दर्दनाक अपडेट केवल एक ही स्थान पर किए जाने की आवश्यकता है। अपने ऐप में बिखरे हुए डेटाबेस कोड के साथ, इस प्रकार का अपग्रेड बेहद दर्दनाक हो जाता है।

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