मेरी स्थिति निम्नानुसार है:एक साबुन सेवा (जेनेरिक बनाम विशिष्ट ऑपरेशन) को परिभाषित करने में सबसे अच्छा अभ्यास क्या है?
मेरे पास एक सामान्य डेटाबेस है, जिसमें मुझे हवाई अड्डे के बारे में भौगोलिक जानकारी है। संरचना है:
airport --is in--> city --is in--> country --is in--> continent
अब मैं उपयोगकर्ताओं को डेटाबेस तक सीधे पहुंच प्रदान किए बिना इस डेटा को प्रशासित करने देना चाहता हूं। हमें एक वेब सेवा के माध्यम से इस प्रशासन इंटरफ़ेस की पेशकश करने की आवश्यकता है।
अब, जब सेवा को डिजाइन करने की बात आती है, तो हम संचालन को परिभाषित करने के तरीके के बारे में चर्चा में भाग गए।
समाधान एक:: हम विभिन्न समाधान के साथ आया था विशिष्ट कार्यों
चार टेबल के प्रत्येक (हवाई अड्डे, शहर, देश, महाद्वीप) के लिए हम 3 आपरेशनों को परिभाषित:
- डालने
- मिल
- अद्यतन
इससे 12 अनुरोधों के साथ 2 अनुरोध/प्रतिक्रिया ऑब्जेक्ट्स = 24 ऑब्जेक्ट्स
सभी निर्भरताओं के साथ एक नया हवाई अड्डा बनाने के लिए, कम से कम 4 अनुरोध आवश्यक होंगे।
समाधान बी: सामान्य
केवल एक ऑपरेशन है, जो मानकों के माध्यम से नियंत्रित किया जाता है नहीं है। यह ऑपरेशन डेटाबेस को प्रशासित करने के लिए आवश्यक सब कुछ बनाने में सक्षम है।
ऑपरेशन यह तय करेगा कि क्या करने की आवश्यकता है और इसे निष्पादित किया जाना चाहिए। अगर कोई त्रुटि आती है, तो यह सबकुछ वापस ले जाएगी।
==> 1 ऑपरेशन = 2 अत्यधिक जटिल अनुरोध/प्रतिक्रिया-वस्तुओं
समाधान सी: तालिका के अनुसार मध्य 1
एक सामान्य ऑपरेशन है, जो मिल को क्रियान्वित करने में सक्षम है, डालने में मिलो , समाधान बी की तरह अद्यतन करें, लेकिन प्रत्येक एक टेबल पर केंद्रित है।
==> 4 संचालन = 8 जटिल अनुरोध/प्रतिक्रिया-वस्तुओं
समाधान डी: कार्रवाई प्रति बीच 2
एक सामान्य ऑपरेशन में मिलो (मिल, सम्मिलित करने, हटाने) है, जो कर सकते हैं प्रत्येक तालिका पर काम करें और निर्भरताओं को हल करें।
==> 3 संचालन = 6 से थोड़ा अधिक जटिल अनुरोध/प्रतिक्रिया-वस्तुओं
उदाहरण
के बाद से इस बल्कि सार, था hier बनाने (जेएफके/नई के लिए अनुरोध-वस्तुओं के लिए एक सरल उदाहरण न्यूयॉर्क/अमरीका/उत्तर अमेरिका):
समाधान एक:
अनुरोध 1/4:
+०१२३५१६४१०६१<insertContinent>North America</insertContinent>
अनुरोध 2/4:
<insertCountry continent="North America">USA</insertCountry>
अनुरोध 3/4:
<insertCity country="USA">New York</insertCity>
अनुरोध 4/4:
<insertAirport city="New York">JFK</insertAirport>
समाधान बी:
अनुरोध 1/1:
<action type="insertCountry" parent="North America">USA</action>
<action type="insertAirport" parent="New York">JFK</action>
<action type="insertContinent" parent="">North America</action>
<action type="insertCity" parent="USA">New York</action>
समाधान सी:
अनुरोध 1/4:
<countryAction type="insert" parent="North America">USA</countryAction>
अनुरोध 2/4:
<airportAction type="insert" parent="New York">JFK</airportAction>
अनुरोध 3/4:
<continentAction type="insert" parent="">North America</continentAction >
अनुरोध 4/4:
<cityAction type="insert" parent="USA">New York</cityAction >
समाधान डी: अनुरोध 1/1:
<insert airport="JFK" city="New York" country="USA" continent="North America" />
समाधान डी बल्कि मेरे लिए सुरुचिपूर्ण लगता है, इसलिए मैं इस डालने की कोशिश की एक्सएसडी में:
कोड:
<complexType name="NewContinent">
<sequence>
<element name="NAME" type="string"></element>
</sequence>
</complexType>
<complexType name="NewCountry">
<sequence>
<element name="ISOCODE" type="string"></element>
<element name="NAME" type="string"></element>
<choice>
<element name="newCONTINENT" type="tns:NewContinent"></element>
<element name="CONTINENT" type="string"></element>
</choice>
</sequence>
</complexType>
<complexType name="NewCity">
<sequence>
<element name="IATA" type="string"></element>
<element name="NAME" type="string"></element>
<choice>
<element name="COUNTRY" type="string"></element>
<element name="newCOUNTRY" type="tns:NewCountry"></element>
</choice>
</sequence>
</complexType>
<complexType name="NewAirport">
<sequence>
<element name="IATA" type="string"></element>
<element name="NAME" type="string"></element>
<choice>
<element name="CITY" type="string"></element>
<element name="newCITY" type="tns:NewCity"></element>
</choice>
</sequence>
</complexType>
एक इसी अनुरोध तो कैसा लगेगा इस प्रकार है:
<complexType name="Request">
<choice>
<element name="AIRPORT" type="tns:NewAirport"></element>
<element name="CITY" type="tns:NewCity"></element>
<element name="COUNTRY" type="tns:NewCountry"></element>
<element name="CONTINENT" type="tns:NewContinent"></element>
</choice>
</complexType>
अब मेरे सवाल: यह वास्तव में सबसे अच्छा समाधान उपलब्ध है? क्या एक्सएसडी समझने के लिए पर्याप्त है, क्या चल रहा है?