2009-06-09 19 views
16

मैं हाल ही में हमारे आर्किटेक्ट में से एक के साथ एक बातचीत थी और वह के रूप में एसओए के अपने उपयोग में संक्षेप उपयोग करने के लिए जब "केवल समय हम सेवाओं का उपयोग करेंगे जब हम async कार्रवाई की जरूरत है अन्यथा हम उपयोग करेंगे है डेटा संग्रह "एसओए (सेवा उन्मुखी वास्तुकला)

मैं इस बयान के बारे में सोचा के लिए सीधी जाने के लिए और यह काफी तार्किक लगता है के रूप में सेवाओं के लिए एक मॉडल प्रकाशित सदस्यता ले में अच्छी तरह से काम, लेकिन मैं क्या अन्य परिदृश्यों आप एसओए का उपयोग करने के लिए देख जाना चाहिए में सोच रहा था?

उत्तर

23

हम अपने ग्राहकों के लिए सेवाएं बेनकाब क्योंकि वे सीधे डेटा स्रोत से कनेक्ट करने में सक्षम नहीं होना चाहिए।

हम खुद को सेवाएं पर्दाफाश, क्योंकि यह आसान है WCF का उपयोग कर विभिन्न तकनीकों से अधिक उन्हें प्रसार करने के लिए।

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

यह केवल एसिंक कार्यों के कारण ही नहीं है।

+0

एक ही डेटास्रोत के लिए अलग-अलग उपयोगकर्ता इंटरफेस के परिदृश्य में, क्या कोई कारण है कि आप अपने सभी यूआई घटकों का उपयोग करने के लिए डीएलएल प्रकाशित नहीं कर सकते हैं? – lomaxx

+2

एक परिदृश्य है जहां यह संभव है। हमारे पास ज्यादातर वेब-यूआई और डेस्कटॉप-यूआई हैं। जो एक डीएल के साथ काम नहीं करेगा। – albertjan

+5

यदि आपके पास बहुत ही विषम वेब UI पर्यावरण, जावा, .Net, PHP, RoR है तो शिपिंग DLLs इतना उपयोगी नहीं है। एक बहुत ही विषम वातावरण को दूर करने के लिए सेवाओं का उपयोग करना एसओए का भी एक आम उपयोग है। –

3

अन्य परिदृश्य एकीकरण परिदृश्य है, जहां आप कई अलग घटकों, या प्रणाली, दूसरे के साथ संवाद करना चाहते हैं हो सकता है।

+1

मैं सहमत होगा। मैं एकीकरण के मुद्दों को हल करने के लिए एसओए को देखता हूं, विशेष रूप से एक कंपनी के लिए आंतरिक यदि आपको एक दूसरे के साथ संवाद करने के लिए विभिन्न अलग-अलग प्रणालियों की आवश्यकता होती है। – Daryl

2

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

+3

या कार्यान्वयन से decouple एकीकरण के लिए इसका उपयोग करने के लिए, एक और तरीका डाल दिया। –

1

समान संसाधनों तक पहुंचने वाली विभिन्न तकनीकों को एकीकृत करने के लिए; उन विभिन्न प्रौद्योगिकियों पर लेनदेन संबंधी अलगाव के कुछ स्तर को प्राप्त करने के लिए; एक व्यापार तर्क एक ही स्थान पर लिखा (इसलिए nigthtmares नहीं होगा जब इस तर्क को बदलने की है) ...

9

सेवाओं का उपयोग करने एक और मामला रखने के लिए जब आप एक विषम प्रौद्योगिकी ढेर एकीकृत करना चाहते है।

दूसरे शब्दों में, अगर आपके DB postgres है, लेकिन आप जावा, पर्ल, पायथन, और सी ++ में कोड है, तो आप संग्रहित प्रक्रियाओं लिख सकते हैं और प्रत्येक प्रोग्रामिंग भाषा उन कॉल कर सकते हैं। यदि आप एक डीबी के साथ काम कर रहे हैं जिसमें संग्रहित प्रोसेस नहीं हैं, या आप उनको स्विच करने की क्षमता चाहते हैं - या आप बस पोर्ट 80 पर चलना चाहते हैं, तो आप एसक्यूएल कॉल को सेवा-उन्मुख परत में लपेट सकते हैं (वेबस्पेयर सोचें) जिसे अब किसी के द्वारा बुलाया जा सकता है - साथ ही आप एसओए परत में प्रमाणीकरण और प्रमाणीकरण तर्क (एलडीएपी से कनेक्ट, जो भी हो) डाल सकते हैं।

आप उस एसओए परत का भी उपयोग कर सकते हैं, कहें कि उस पुराने कोबोल बॉक्स के साथ "सामान" करने के लिए लॉजिकल रूटीन का निर्माण करें जो चालान प्रबंधित करता है या ग्राहकों के लिए बयान बनाता है।

तो यदि आपके पास कई विरासत प्रणालियों हैं जो आप इंटरकनेक्ट करना चाहते हैं - वेयरहाउसिंग सिस्टम को बिक्री प्रणाली को भविष्यवाणी करने के लिए कहें - एसओए उस लक्ष्य को प्राप्त करने का एक तरीका हो सकता है। (आप इवेंट संचालित सिस्टम को बदलने के बेहतर तरीके के रूप में एक ईवेंट संचालित प्रणाली बनाने के लिए "सेवा बस" का भी उपयोग कर सकते हैं।)

बस मुझे बात करें।

+0

क्या आप मुझे समझा सकते हैं कि सेवा बस एसओए से कैसे संबंधित है? मैं समझने की कोशिश कर रहा हूं कि दोनों कैसे संबंधित हैं। धन्यवाद। – DoodleKana

6

ऐसी कई परिदृश्य हैं जिनमें आपको सेवाओं का उपयोग करने से लाभ होगा। इन परिदृश्यों में से कुछ को उद्योग गुरुओं (जैसे एसओए प्रसिद्धि के थॉमस एर्ल) द्वारा संहिताबद्ध किया गया है।

SOAPatterns

मैं तुम्हें देखने के लिए चाहते हैं कहेंगे: (एक ही प्रक्रिया के लिए एकाधिक उपयोग के मामलों)

  • कार्यान्वयन अमूर्त (मंच

    • विरासत आवेदन पुन: उपयोग
    • व्यवसाय प्रक्रिया पुन: उपयोग, भाषा, दृढ़ता abstraction)

    आपका सहयोगी गोंद सतर्क होने का अधिकार है। वेब सेवाओं को अपनाने के साथ पेश किए गए बहुत से तैनाती और समर्थन चर हैं।

  • 2

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

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

    डबल्यूएसडीएल अंत में कोरबा-कि-काम करता है।

    2

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

    उस बिंदु पर आपको इंटरैक्शन के सामान्य SOAP-as-RPC मॉडल के बजाय लगभग किसी प्रकार की घटना संचालित आर्किटेक्चर दृष्टिकोण के लिए मजबूर होना पड़ता है। इसका मतलब ईएसबी का उपयोग करने का मतलब नहीं है, लेकिन ईएसबी के बीच कनेक्शन के रूप में उद्यमों के बीच कनेक्शन देखना बहुत उपयोगी है।

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

    जवाब नहीं है, लेकिन वे सरल कभी नहीं कर रहे हैं। Best practices for Web services versioning उनमें से कुछ पर चर्चा करता है।

    लेकिन एसओए सब पर async कुछ भी संकेत नहीं करता है। एसओए को लागू करने का यह एक शानदार तरीका है। एसओए ढीले युग्मन के बारे में हैं। एसओए का ईडीए सबसेट डी-युग्मन के बारे में है, जो आगे जाता है।

    0

    मैं एक ऐसे सिस्टम में एसओए का उपयोग करूंगा जो संगठन के अंदर और शायद अन्य संगठनों के लिए बढ़ाया जाएगा।

    उन उत्पादों के लिए जो भी बदल सकते हैं, भी अच्छा है, आप इसके छोटे हिस्सों को प्रतिस्थापित कर सकते हैं।

    अंत में आपके पास बहुत सारे लेगो ईंट होंगे जो आप एक साथ शामिल होंगे।

    2

    सोडा (सेवा ओरिएंटेड एप्लिकेशन डिज़ाइन) नामक संबंधित विचारों का एक और स्कूल मौजूद है, सिस्टम का हर घटक एक सेवा है। यह वातावरण है कि वे (EJB, WCF) अर्थात तुम मुक्त पाइपलाइन के बहुत सारे मिल के साथ निर्माण कर रहे हैं द्वारा की पेशकश की लाभ उठाने के लिए है।

    इस पर कुछ और संसाधन

    पर

    Building a SOA

    SOA Design Pattern

    Achieving integrity in a SOA

    Achieving Flexibility/Maintainability in a SOA

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