2011-01-19 11 views
22

जहां तक ​​मेरा knw -Datacontract और servicecontract अंतर

ServiceContract इंटरफ़ेस/वर्ग के लिए इस्तेमाल किया जा सकता है, जबकि DataContract केवल क्लास, Struct और Enums

इस से

अलावा के लिए इस्तेमाल किया b कर सकते हैं - क्या कर रहे हैं अन्य मतभेद ख/डब्ल्यू इन 2? जब डेटाकंट्रैक्ट और सर्विस कंट्रैक्ट का उपयोग किसी एप्लिकेशन में किया जाना चाहिए?

कोई भी नमूना या लिंक भी करेगा। अग्रिम धन्यवाद।

उत्तर

62

सर्विसकंट्रैक्ट सेवा के अनुबंध को परिभाषित करता है - इसका आकार और रूप। यह सेवा के नाम, इसके एक्सएमएल नेमस्पेस इत्यादि को परिभाषित करता है, और यह आमतौर पर एक इंटरफेस (लेकिन कक्षा में भी लागू किया जा सकता है) जिसमें [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 सेवा काम करने के लिए कर रहे हैं - यह पसंद एक अन्य या कुछ बदल सकते नहीं है।

+2

ग्रेट स्पष्टीकरण। – Wallstrider

+5

अच्छा! मुझे खेद है कि मैं सी # डेवलपर नहीं हूं! सी # कमाल है! और आपकी व्याख्या बहुत ही अजीब है! – Farah

+1

ग्रेट स्पष्टीकरण! क्या कोई विशिष्ट मामला है जहां आप '[ServiceContract]' के साथ कक्षा को सजाने के लिए तैयार करेंगे या क्या इसे केवल इंटरफेस के लिए उपयोग करने की अनुशंसा की जाती है? –

संबंधित मुद्दे