डेटा अनुबंध/संदेश अनुबंध से आंतरिक व्यावसायिक वस्तुओं को अलग करने का मुख्य कारण यह है कि आप अपने ऐप में आंतरिक परिवर्तनों को सेवा अनुबंध को बदलने के लिए आंतरिक परिवर्तन नहीं चाहते हैं। यदि आप वर्जन वाली वेब सेवाओं (कार्यान्वित इंटरफेस के 1 से अधिक संस्करणों के साथ) बना रहे हैं तो आपके पास अक्सर डेटा अनुबंध/संदेश अनुबंध ऑब्जेक्ट्स के 1 से अधिक संस्करण वाले आपके ऐप्स व्यवसाय ऑब्जेक्ट का एक संस्करण होता है।
इसके अलावा, जटिल एंटरप्राइज़ एकीकरण परिस्थितियों में आपके पास अक्सर एक कैननिकल डेटा प्रारूप (डेटा और संदेश अनुबंध) होता है जो कई अनुप्रयोगों द्वारा साझा किया जाता है, जो प्रत्येक एप्लिकेशन को अपने आंतरिक ऑब्जेक्ट मॉडल में कैननिकल डेटा प्रारूप को मैप करने के लिए मजबूर करता है।
यदि आप डेटा अनुबंध/संदेश अनुबंध आदि को अलग करने के लिए एक उपकरण चाहते हैं, तो माइक्रोसॉफ्ट की वेब सर्विसेज सॉफ्टवेयर फैक्टरी http://msdn.microsoft.com/en-us/library/cc487895.aspx देखें, जिसमें डब्ल्यूसीएफ प्लंबिंग को हल करने के लिए कुछ अच्छी व्यंजन हैं।
उत्साह के संबंध में, डब्ल्यूसीएफ स्वचालित रूप से फाल्टएक्सप्शन में सभी अपवादों को लपेटता है, जिन्हें वायर-फॉर्मेट दोषों के रूप में क्रमबद्ध किया जाता है।
जेनेरिक फॉल्ट अपवादों को फेंकना भी संभव है जो आपको धारावाहिक गलती के साथ अतिरिक्त विवरण निर्दिष्ट करने की अनुमति देता है।
[FaultContract(typeof(AuthenticationFault))]
[FaultContract(typeof(AuthorizationFault))]
StoreLocationResponse StoreLocation(StoreLocationRequest request);
दोनों AuthenticationFault और AuthorizationFault प्रकार अतिरिक्त विवरण का प्रतिनिधित्व धारावाहिक और पर भेजा जा करने के लिए: चूंकि दोष एक वेब सेवा आपरेशन द्वारा फेंका अपने अनुबंध का हिस्सा हैं यह एक अच्छा विचार आपरेशन घोषणा पर दोष घोषित करने के लिए है तार और निम्नानुसार फेंक दिया जा सकता है:
throw new FaultException<AuthenticationFault>(new AuthenticationFault());
यदि आप अधिक जानकारी चाहते हैं तो चिल्लाओ; मैं इतनी देर तक इस सामान को सांस ले रहा हूं और सांस ले रहा हूं, मैं लगभग एक जीवित कर रहा हूं;)