सर्विसकंट्रैक्ट सेवा के अनुबंध को परिभाषित करता है - इसका आकार और रूप। यह सेवा के नाम, इसके एक्सएमएल नेमस्पेस इत्यादि को परिभाषित करता है, और यह आमतौर पर एक इंटरफेस (लेकिन कक्षा में भी लागू किया जा सकता है) जिसमें [OperationContract]
विशेषता - सेवा विधियों के साथ सजाए गए तरीके शामिल हैं।
[ServiceContract]
public interface IMyService
{
[OperationContract]
Response GetData(int someKey);
}
DataContract एक पूरी तरह से अलग जानवर है - यह एक वर्ग है कि सेवा से किसी एक पद्धति एक पैरामीटर या वापसी मान के रूप में इस्तेमाल किया जा रहा है के रूप में यह परिभाषित करने के लिए एक वर्ग से सजाया गया। यह उस वर्ग को लेबल करने के लिए तार पर क्रमबद्ध करने के लिए "चीज़" के रूप में लेबल कर रहा है। यह डब्ल्यूसीएफ रनटाइम (डेटा अनुबंध धारावाहिक) के लिए एक निर्देश है कि इस वर्ग का उपयोग डब्ल्यूसीएफ सेवा में किया जाना है।
[DataContract]
public class Response
{
[DataMember]
int Key { get; set; }
[DataMember]
string ProductName { get; set; }
[DataMember]
DateTime DateOfPurchase { get; set; }
}
तो सेवा अनुबंध और डेटा अनुबंध दो पूरी तरह से अलग अलग हिस्सों कि एक साथ खेलते हैं एक WCF सेवा काम करने के लिए कर रहे हैं - यह पसंद एक अन्य या कुछ बदल सकते नहीं है।
स्रोत
2011-01-19 05:52:28
ग्रेट स्पष्टीकरण। – Wallstrider
अच्छा! मुझे खेद है कि मैं सी # डेवलपर नहीं हूं! सी # कमाल है! और आपकी व्याख्या बहुत ही अजीब है! – Farah
ग्रेट स्पष्टीकरण! क्या कोई विशिष्ट मामला है जहां आप '[ServiceContract]' के साथ कक्षा को सजाने के लिए तैयार करेंगे या क्या इसे केवल इंटरफेस के लिए उपयोग करने की अनुशंसा की जाती है? –