Magento 2: क्या एक सेवा अनुबंध है


20

Magento 2 में, सेवा अनुबंध अवधारणा का उपयोग करके बनाई गई किसी चीज़ का एक ठोस उदाहरण है ? मैंने इस शब्द को बहुत इधर-उधर फेंका हुआ देखा है, लेकिन Magento 2 को देख रहा है क्योंकि यह अब मौजूद है, मेरे लिए यह स्पष्ट नहीं है कि क्या सेवा अनुबंध अधिक मार्गदर्शक सिद्धांत हैं, या यदि वे वास्तव में Magento 2 में चीजों के विशिष्ट कार्यान्वयन के लिए वापस आते हैं।


1
यह भी देखें magento.stackexchange.com/questions/50270/…
7ochem

जवाबों:


9

जैसा कि मैं इसे समझता हूं कि Api फ़ोल्डर में परिभाषित सभी इंटरफेस सेवा अनुबंध हैं। इसलिए सेवा अनुबंध का उपयोग करने वाले वर्ग के वास्तविक कार्यान्वयन के बजाय कहीं भी इंटरफ़ेस का उपयोग किया जाता है।

एक उदाहरण इस प्लगइन कार्यान्वयन यहाँ होगा https://github.com/magento/magento2/blob/2.3.2/app/code/Magento/GiftMessage/Model/Plugin/Orderbet.php#L78

यह उपयोगकर्ता है

protected function getOrderGiftMessage(\Magento\Sales\Api\Data\OrderInterface $order)

के बजाय \Magento\Sales\Model\Order


लिंक काम नहीं कर रहा है।
मैगेंटो लर्नर

धन्यवाद यह अद्यतन किया गया है
22

6

आसान अनुकूलन / विस्तार के लिए स्थिर इंटरफेस सुनिश्चित करने के लिए सेवाएँ (जिन्हें सेवा अनुबंध भी कहा जाता है) Magento 2 में हमारे मुख्य विकास पैटर्न में से एक हैं। वे कोड आधार में 2 रूप लेते हैं (दोनों को @apiवर्ग या वर्ग विधियों के साथ एनोटेट किया जाता है ताकि उन्हें स्थिर इंटरफेस के रूप में पहचाना जा सके जिसे आप वेब एपीआई के रूप में अनुकूलित और उजागर कर सकते हैं): एपीआई या एसपीआई। एपीआई के एपीआई फ़ोल्डर में परिभाषित किए गए हैं और दो रूपों को लेते हैं - एक पूरी तरह से refactored सेवा और केवल एक एपीआई केवल मॉड्यूल।

ग्राहक, इन्वेंटरी, टैक्स और कोट * मॉड्यूल में पूरी तरह से रिफैक्ट की गई सेवाएं परिलक्षित होती हैं (ग्राहक का अनुकरण करने के लिए सेवा की जा रही है, उद्धरण में एक क्षेत्र शेष है जिसे रिफैक्ट किए जाने की आवश्यकता है)। एक एपीआई केवल मॉड्यूल कैटलॉग, बिक्री और सीएमएस में देखा जा सकता है। पूरी तरह से परिष्कृत सेवाओं के लिए आपको केवल वेब एप और GUI दोनों को प्रभावित करने के लिए सेवा पद्धति पर एक प्लगइन करना होगा। एपीआई के लिए केवल वेब एपिस को प्रभावित करने के लिए आपको सेवा पद्धति पर प्लग इन करना होगा लेकिन फिर भी जीयूआई को प्रभावित करने के लिए 1x शैली के अनुकूलन की आवश्यकता होगी।

एसपीआई मूल रूप से कोड के भीतर इंटरफेस है जो @apiउस इच्छित स्पॉट के साथ है जो 3 पार्टियां कुछ व्यावसायिक कार्यक्षमता प्रदान करने के लिए लागू करेंगी। CarrierInterfaceशिपिंग मॉड्यूल में परिभाषित SPI ( ) का एक उदाहरण जो आप अपने शिपिंग मॉड्यूल (यानी अप्स) में लागू करेंगे।

सेवा की रूपरेखा कई दिलचस्प लाभ प्रदान करती है। एक वेब एपीआई (और संदेश कतार के माध्यम से आने वाली पोस्ट 2.0) vi webapi.xmlकॉन्फ़िगरेशन (SOAP और REST शैली के रूप में) के रूप में आसान एक्सपोज़र । निकट अवधि (पोस्ट 2.0) में हम एपीआई कॉल बहिष्कार (सिंक कॉल या Webhooks जोड़ते हैं अगर कॉन्फ़िगर करने के लिए आग लगाई जाती है, तो संदेश) जो सभी प्रबंधित किया जा सकता है / कॉन्फ़िगरेशन के माध्यम से उजागर किया जा सकता है। सुरक्षित स्थापित करें / अपग्रेड करें - आप प्रोग्रामेटिक रूप से समस्या स्थितियों की पहचान कर सकते हैं (एक ही इंटरफ़ेस को लागू करने वाले 2 या अधिक एक्सटेंशन)। सुव्यवस्थित अनुकूलन जो वेब एपिस और गुई दोनों को प्रभावित करता है क्योंकि अनुकूलित करने के लिए सिर्फ एक ही तरीका / सेवा है (पूरी तरह से रिफलेक्ट किए गए मॉड्यूल या समुदाय द्वारा बनाए गए नए मॉड्यूल / सेवाओं के लिए)।


1
यहाँ कल्पना २०१५ के कुछ वीडियो दिए गए हैं जो मैगेंटो २ प्लेटफ़ॉर्म के अधिक संदर्भ प्रदान करने में मदद करेंगे। magento.com/videos/imagine/… , magento.com/videos/imagine/… , magento.com/videos/imagine/… , magento.com/videos/imagine/…
चक


0

Magento सेवा अनुबंध

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

यह अपग्रेड महत्वपूर्ण है क्योंकि यह उपयोगकर्ताओं के विभिन्न मॉड्यूल के साथ बातचीत करने के तरीके को बदल देता है। Magento 1 में, अन्य मॉड्यूल के साथ बातचीत करने के अच्छे तरीके नहीं थे। Magento 2 में सेवा अनुबंध के साथ, आप सिस्टम की संरचना के बारे में चिंता किए बिना, आसानी से डेटा तक पहुंच और हेरफेर कर सकते हैं।

सेवा अनुबंध वास्तुकला

सर्विस लेयर में दो अलग-अलग इंटरफ़ेस प्रकार होते हैं: डेटा इंटरफेस और सर्विस इंटरफेस। डेटा इंटरफेस ऐसी वस्तुएं हैं जो निम्नलिखित पैटर्न का उपयोग करके डेटा अखंडता को संरक्षित करती हैं:

Theyre read-only, since they only define constants and getters.
Getter functions can contain no parameters.
A getter function can only return a simple object type (string, integer, Boolean), a simple type array, and another data interface.
Mixed types cant be returned by getter functions.
Data entity builders are the only way to populate and modify data interfaces.

सेवा इंटरफेस सार्वजनिक तरीकों का एक सेट प्रदान करते हैं जो एक ग्राहक उपयोग कर सकता है। तीन सेवा इंटरफेस उपप्रकार हैं:

Repository Interfaces
Management Interfaces
Metadata Interfaces

रिपोजिटरी इंटरफेस

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

CustomerRepositoryInterface
AddressRepositoryInterface
GroupRepositoryInterface

इन इंटरफेस में जो तरीके हैं:

Save  If theres no ID, creates a new record, and updates whats existing if there is one.
Get  Looks for the IDs in the database and returns a certain data entity interface.
GetList  Finds all data entities that correspond with the search criteria, then gives access to the matches by returning the search result interface.
Delete  Deletes the selected entity
DeleteById  Deletes the entity when you only have its key.

प्रबंधन इंटरफेस

इन इंटरफेस में विभिन्न प्रबंधन कार्य होते हैं जो रिपॉजिटरी से असंबंधित हैं। यहाँ कुछ उदाहरण हैं:

AccountManagementInterface contains functions such as createAccount(), isEmailAvailable(), changePassword(), and activate().
AddressManagementInterface checks whether an address is valid by using the validate() function.

पैटर्न की संख्या लगातार बढ़ रही है, और जैसा कि ऐसा होता है, इनमें से कुछ कार्यों को उनके साथ जोड़े जाने की संभावना है।

मेटाडेटा इंटरफेस

मेटाडेटा इंटरफ़ेस उन सभी विशेषताओं के बारे में जानकारी देता है जो एक विशिष्ट इकाई के लिए परिभाषित की जाती हैं। इसमें कस्टम विशेषताएँ भी शामिल हैं, जिन्हें आप getCustomAttribute ($ नाम) फ़ंक्शन के साथ एक्सेस कर सकते हैं। इन कस्टम विशेषताओं में शामिल हैं:

EAV attributes  Defined via the administration interface for a local site. They can differ according to the site, which means that they cant be represented in the data entity interface written in PHP.
Extension attributes, for which the extension modules are used.

संदर्भ:

https://www.interactivated.me/uk/blog/service-contracts-magento-2/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.