2012-02-19 15 views
11

डेटा-केंद्रित एप्लिकेशन क्या है और क्या ऑब्जेक्ट उन्मुख एप्लिकेशन मॉडल के साथ कोई अंतर है?डाटा-केंद्रित और ऑब्जेक्ट उन्मुख अनुप्रयोग मॉडल के बीच क्या अंतर है?

+0

क्या आप अपने प्रश्न के साथ कुछ संदर्भ प्रदान कर सकते हैं? –

+0

[1]: http://en.wikipedia.org/wiki/Database-centric_architecture [2]: http://en.wikipedia.org/wiki/Object-oriented_programming –

+0

मैं एक वितरित वास्तुकला के बारे में एक पुस्तक पढ़ रहा हूं और एक आवेदन ढांचा कैसे बनाना है। डेटा-केंद्रित और ओओ एप्लिकेशन मॉडल की एक बात है लेकिन मैं इसके बारे में ज्यादा नहीं समझ सका। फिर मैं इसे गूगल करता हूं, लेकिन मुझे इस तुलना के बारे में ज्यादा जानकारी नहीं मिली। –

उत्तर

13

दो अवधारणाएं कुछ हद तक ऑर्थोगोनल हैं, Data Centric Application वह स्थान है जहां डेटाबेस एक महत्वपूर्ण भूमिका निभाता है, जहां डेटाबेस में गुण आपके एप्लिकेशन में चल रहे कोड पथ को प्रभावित कर सकते हैं और जहां कोड अधिक सामान्य और सभी/सबसे व्यवसायिक तर्क है डेटाबेस संबंधों और बाधाओं के माध्यम से परिभाषित किया गया है। ओओपी का उपयोग डेटा केंद्रित एप्लिकेशन बनाने के लिए किया जा सकता है।

कुछ बड़े multi-tier आर्किटेक्चर जो लोग कहते हैं कि ओओपी आर्किटेक्चर कोड में व्यावसायिक तर्क लागू करते हैं और डेटा को डेटाबेस में संग्रहीत करते हैं। हालांकि, यह सोचना गलत होगा कि ऑब्जेक्ट ओरिएंटेड डिज़ाइन को जरूरी रूप से एक बड़ा व्यवसाय तर्क सवार सिस्टम होना चाहिए।

कहें कि आपको दो सिस्टम के बीच संदेश भेजने को लागू करना है। एक तरीका (हालांकि एक बुरा तरीका) यह है कि प्रत्येक सिस्टम डेटाबेस को संदेश लिखता है और दूसरी प्रणाली डेटाबेस को पढ़ने के लिए हर बार डेटाबेस से पढ़ती है। यह डेटा केंद्रित दृष्टिकोण होगा क्योंकि डेटा पढ़ने और लिखने के अलावा बहुत कम कोड आवश्यक है।

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

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

+0

उत्तर के लिए धन्यवाद। क्या आप अधिक जानकारी प्रदान कर सकते हैं जो आप कहते हैं "यदि आपकी वस्तुएं सामान्य हैं तो आपका आवेदन अभी भी डेटा केंद्रित हो सकता है"? –

+0

कुछ उदाहरणों के लिए संपादित किया गया –

8

डेटा केंद्रित डिज़ाइन वह है जहां एप्लिकेशन व्यवहार डेटा द्वारा encapsulated है। एक साधारण उदाहरण। निम्नलिखित ओओपी कक्षा पर विचार करें:

class Car { 
    void move(x, y); 
private: 
    int x, y; 
} 

यह एक कार का ओओपी प्रतिनिधित्व है। 'चाल' विधि का आह्वान करने से गाड़ी चलने शुरू हो जाएगी। दूसरे शब्दों में, किसी भी दुष्प्रभाव कक्षा विधियों का आह्वान करके ट्रिगर किया जाता है।

यहाँ एक ही कक्षा है, लेकिन डेटा केंद्रित:

class Car { 
    int x, y; 
} 

आदेश में इस कार चलती पाने के लिए, मैं "बस" x और y के मूल्यों को बदल जाएगा। अधिकांश प्रोग्रामिंग भाषाओं में बदलते सदस्यों में तर्क के निष्पादन की अनुमति नहीं दी जाएगी, यही कारण है कि डेटा केंद्रितता को अक्सर ढांचे की आवश्यकता होती है।

ऐसे ढांचे में, तर्क सीआरयूडी के सी, यू और डी पर चलाया जाता है।इस तरह के एक ढांचे के उदाहरण के लिए, इन घटनाओं में से किसी में कोड प्रविष्टि सक्षम करने के लिए उचित सुविधाएं प्रदान करेगा:

  • डीबीएमएस चलाता है
  • OMG DDS waitsets/श्रोताओं (DDS एक डेटा केंद्रित मैसेजिंग मानक है)
  • पर्यवेक्षकों Corto

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

डेटा केंद्रित डिजाइन पारंपरिक 3 स्तरीय वेब आर्किटेक्चर के लिए एक अच्छा मिलान है। वेब अनुप्रयोग आमतौर पर बैकएंड डेटाबेस की सामग्री द्वारा संचालित होते हैं। यही कारण है कि, जब आप गतिशील वेबपृष्ठ को बंद और दोबारा खोलते हैं, तो यह अभी भी वही दिखता है (बशर्ते डेटा नहीं बदला गया हो)।