एक ऑपरेशन अनुबंध को देखते हुए:एसओए डब्ल्यूसीएफ वेब-सेवाओं को डिजाइन करते समय सबसे अच्छा अभ्यास क्या है?
[OperationContract]
void Operation(string param1, string param2, int param3);
इसे फिर से डिज़ाइन किया जा सकता है:
[MessageContract]
public class OperationRequest
{
[MessageBodyMember]
public string Param1 { get; set; }
[MessageBodyMember]
public string Param2 { get; set; }
[MessageBodyMember]
public int Param3 { get; set; }
}
[MessageContract]
public class OperationResponse
{
}
[OperationContract]
OperationResponse Operation(OperationRequest request);
मैसेज कंट्रैक्ट के बारे में मुझे एक चीज़ यह है कि मुझे SOAP के प्रारूप पर थोड़ा अधिक स्पष्ट नियंत्रण मिलता है संदेश।
इसी तरह, मैं लगभग एक ही कोड लिख सकता हूं, लेकिन डेटाकंट्रैक्ट का उपयोग कर सकता हूं:
[DataContract]
public class OperationRequest
{
[DataMember]
public string Param1 { get; set; }
[DataMember]
public string Param2 { get; set; }
[DataMember]
public int Param3 { get; set; }
}
[DataContract]
public class OperationResponse
{
}
[OperationContract]
OperationResponse Operation(OperationRequest request);
डेटाकंट्रैक्ट के बारे में मुझे एक चीज़ यह है कि मैं IsRequired, ऑर्डर और नाम को परिभाषित कर सकता हूं।
आज मैं उम्मीद करता हूं कि एकमात्र उपभोक्ता डब्लूसीएफ क्लाइंट होगा। हालांकि, मैं पहले अनुबंध तैयार करना चाहता हूं और जितना संभव हो एसओए प्रथाओं का पालन करना चाहता हूं। डब्ल्यूसीएफ ने मेरे एसओएपी, डब्लूएसडीएल और एक्सएसडी को निर्देशित करने के बजाय, मैं चाहता हूं कि एक्सएमएल डब्लूसीएफ परत को परिभाषित करे, लेकिन डब्ल्यूसीएफ का उपयोग इस उत्पन्न करने के लिए करें ताकि डब्ल्यूसीएफ को कोई कस्टम संदेश प्रोसेसिंग न जोड़ा जा सके। मैं सबसे आम एसओए एक्सएमएल सम्मेलनों का पालन करना चाहता हूं जो मुझे विश्वास है कि शायद सभी टैग लोअरकेस में शुरू हो रहे हैं - क्या मैं सही हूँ? और मैं जितना संभव हो सके संस्करण सहिष्णु बनना चाहता हूं।
क्या हमेशा इस तरह के अनुरोध और प्रतिक्रिया संदेश बनाना बुद्धिमान है? तीन प्रारूपों में से कौन सा सर्वश्रेष्ठ एसओए प्रथाओं को बढ़ावा देता है? क्या मुझे एक कदम आगे जाना चाहिए और डेटाकंट्रैक्ट और एक संदेश नियंत्रण दोनों को परिभाषित करना चाहिए जिससे संदेश कंट्रैक्ट में केवल डेटा कंट्रैक्ट होता है? या क्या मैं कभी भी डेटाकंट्रैक्ट्स का उपयोग कर सकता हूं यदि मैं वास्तव में एक नया प्रकार उजागर कर रहा हूं (यानी कंटेनर के रूप में संदेश प्रकार नहीं बनाते)?
मुझे पता है कि प्रश्नों का एक भारित सेट है, लेकिन मैं इसके दिल तक पहुंचने की कोशिश कर रहा हूं, और मुझे यकीन नहीं है कि प्रश्नों को अलग करने के लिए पर्याप्त उत्तर प्रदान करने के लिए पर्याप्त संदर्भ प्रदान करते हैं।
यह उत्तर समुदाय विकी क्यों है? यह एक अच्छा जवाब है और vjrobinson को उस प्रतिष्ठा को प्राप्त करना चाहिए जिसके लिए वह पात्र है। –