2015-10-27 9 views
6

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

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

उत्तर

4

यहां आप माइक्रो-सर्विस आधारित डिज़ाइन पर 2 व्यू पॉइंट प्राप्त करेंगे, सबकुछ साझा करेंगे और कुछ भी साझा नहीं करेंगे। मैं शेयर पर कुछ भी नहीं हूँ। एक संचार इंटरफ़ेस से सहमत (जैसे JSON या कुछ अन्य धारावाहिक तंत्र) और प्रत्येक सेवा को अलग-अलग डोमेन ऑब्जेक्ट प्रस्तुतियों को संभालने की अनुमति दें। यहाँ क्यों

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

  2. तर्क चीजों में अपने तरीके खोजने के लिए जाता है। इससे भी बदतर, व्यवसाय तर्क वर्गों, यहां तक ​​कि केस कक्षाओं पर छोटी "सहायक" विधियों में इसका तरीका ढूंढता है। यह सौहार्दपूर्ण तरीकों से प्रतिकूल रूप से जोड़े की सेवाएं कर सकता है ... जब तक यह अब सौम्य नहीं है तब तक सही हो।

+0

ध्यान देने योग्य भी - सुनिश्चित करें कि संचार तंत्र में एक संस्करण सिग्नल शामिल है। इस तरह जब आपको दो अलग-अलग स्कीमा (पुराने और रास्ते में और नए सुधारित तरीके) में संदेशों का समर्थन करने की आवश्यकता होती है तो आप * कर सकते हैं। –

+0

@ सेनविएरा आप कैसे सुझाव देते हैं कि संचार तंत्र के रूप में केस कक्षाओं का उपयोग करते समय हासिल किया जा सकता है? सभी संदेशों को एक के अंदर लपेटें: 'केस क्लास संस्करण [टी] (संस्करण: इंट, पेलोड: टी) '? – mgois

+0

@mgois ठीक है, यह करने का एक तरीका है। एक और तरीका संचार प्रोटोकॉल में "संस्करण" को एन्कोड करना है (_url_ में एक/v1/या/v2/पथ सेगमेंट हो सकता है।) – wheaties

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

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