2010-01-07 13 views
6

डब्ल्यूसीएफ/एसओएपी दुनिया में पॉलिमॉर्फिक व्यावसायिक वस्तुओं को संभालने का सही तरीका क्या है?डब्ल्यूसीएफ ऑब्जेक्ट डिज़ाइन - ओओपी बनाम एसओए

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

लोग आम तौर पर यहां क्या करते हैं? ओओपी सिद्धांतों से गुजरने वाले डब्ल्यूसीएफ अनुबंध वस्तुओं का एक सेट बनाएं, फिर वास्तविक तर्क परतों में वस्तुओं के दूसरे सेट में कनवर्ट करें?

कि सेवा कसकर टाई नहीं है कि वस्तुओं के लिए बातचीत करने के लिए (का उपयोग की WCF संविदा/सोप संदेश के रूप में केवल एक संदेश में सोचें:

उत्तर

6

लोग आम तौर पर यहां क्या करते हैं? ओओपी सिद्धांतों से गुजरने वाले डब्ल्यूसीएफ अनुबंध वस्तुओं का एक सेट बनाएं, फिर वास्तविक तर्क परतों में वस्तुओं के दूसरे सेट में कनवर्ट करें?

हां।

डब्ल्यूसीएफ चीजों को क्रमबद्ध करता है जिस तरह से आप अनुबंध कर सकते हैं और अनुबंध वस्तुओं के साथ क्या कर सकते हैं पर बहुत सी सीमाएं डाल सकते हैं। आप क्या नहीं कर सकते "सबसे ज्यादा उपयोगी" होने के बाद समाप्त होता है।

मुझे लगता है कि यदि आप डब्ल्यूसीएफ-कॉन्ट्रैक्ट ऑब्जेक्ट्स के बारे में सोचते हैं तो केवल डेटा हस्तांतरण तंत्र के रूप में यह चीजों को अधिक स्पष्ट बनाता है। मूल रूप से दृढ़ता से/स्थिर रूप से टाइप किए गए एक्सएमएल की तरह। इसके बजाय एक XML स्ट्रिंग के लिए अपने व्यवसाय वस्तु परिवर्तित (और फिर से वापस) की
, आप एक WCF अनुबंध वस्तु (और फिर से वापस) के लिए अपने व्यापार वस्तु परिवर्तित, लेकिन यह अन्यथा समान इस विषय पर

+0

तो क्या आप '.ToWCFDataContract() 'विधि और एक कन्स्ट्रक्टर जोड़ देंगे जो आपके WCFDataContract ऑब्जेक्ट को आपके व्यावसायिक ऑब्जेक्ट्स में स्वीकार करेगा? – Nate

+0

बहुत बहुत धन्यवाद। यह सोचने में थोड़ा निराशाजनक है कि मुझे ऑब्जेक्ट्स का एक और सेट बनाना है (कम से कम कहने के लिए यह एक छोटी सी सेवा नहीं है), लेकिन अब मुझे पता है कि वहाँ एक बेहतर विकल्प नहीं है, मैं महसूस नहीं करूँगा जैसे मैं अपना समय बर्बाद कर रहा हूं। – mdryden

+0

@Nate: बहुत ज्यादा, हाँ –

2

थॉमस एर्ल पुस्तकालय पढ़ने के बाद, मैं निम्नलिखित निष्कर्ष पर पहुंचा तुम्हारा कोड)।

फिर आप ओओपी का उपयोग कोड-बेस डिज़ाइन करने के लिए कर सकते हैं जो सामान्य ओओपी तकनीकों का उपयोग करके उन संदेशों को गहन रूप से संभालता है।

0

आप अपने सेवा अनुबंध को परिभाषित करने के लिए डब्ल्यूसीएफ विशेषताओं के साथ एनोटेटेड (इंटरफ़ेस प्रकार) का उपयोग करते हैं।

यह दोनों ओब्स के अनुसार है, साथ ही एक सेवा एंडपॉइंट को परिभाषित करने के साथ ही एसओए है।

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

0

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

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