c# - क्या डब्ल्यूसीएफ के लिए आवश्यक डाटाकंट्रैक्ट विशेषताएँ हैं




.net wcf (3)

"क्या डब्ल्यूसीएफ के लिए डेटा कंट्रैक्ट विशेषता आवश्यक है"

तकनीकी रूप से, नहीं। यह इस बात पर निर्भर है कि आप DataContractSerializer का उपयोग करते हैं या नहीं (जो कई बाइंडिंग पर डिफ़ॉल्ट है)।

अन्य विकल्प भी हैं:

  1. वैकल्पिक धारावाहिकों पर विचार करें
  2. डेटा अनुबंध सरोगेट्स का उपयोग करने का प्रयास करें (गुणों को अभी भी कहीं भी जरूरी है , लेकिन इसका संभावित अर्थ यह है कि आप अपनी कक्षा को छू सकते हैं, अगर यह प्रासंगिक है)
  3. जब आप डेटा अनुबंध विशेषताओं के बिना कक्षाओं को क्रमबद्ध करते हैं तो serialization डिफ़ॉल्ट पर निर्भर करता है

मैं डब्ल्यूसीएफ सेवा और उसके ग्राहक को लिख रहा हूं। मैं सेवा और ग्राहक के बीच, अपने कस्टम वर्गों की वस्तुओं को भेजना / प्राप्त करना चाहता हूं।

मेरे पास 3 मॉड्यूल हैं

  • डब्ल्यूसीएफ सेवा
  • डब्ल्यूसीएफ ग्राहक
  • सामान्य वर्ग पुस्तकालय

डब्ल्यूसीएफ सेवा और ग्राहक दोनों में सामान्य वर्ग पुस्तकालय के संदर्भ हैं। मैं अपनी सभी कक्षाओं को डेटाकंट्रैक्ट विशेषताओं के साथ चिह्नित नहीं करना चाहता हूं।

तो, मेरा सवाल "क्या डब्ल्यूसीएफ के लिए डेटा कंट्रैक्ट विशेषता है?"

मैं .NET 4 और netTcp बाइंडिंग का उपयोग करता हूं।


अगर मैं सही ढंग से याद करता हूं (आईआईआरसी), यदि आप औपचारिक डेटा-अनुबंध मार्करों का उपयोग नहीं करते हैं, तो यह फ़ील्ड-सीरिएलाइज़र की तरह अभिनय करने के लिए डिफ़ॉल्ट है। यह काम करेगा, लेकिन संस्करण के लिए कम आसान है, क्योंकि निजी परिवर्तन क्लाइंट / सर्वर को तोड़ सकता है। आईएमओ आपको डेटा-अनुबंध / डेटा-सदस्य विशेषताओं के साथ हमेशा औपचारिक रूप से डब्ल्यूसीएफ प्रकारों को सजाने चाहिए। यह उनके बिना काम करेगा, लेकिन गलत कारणों से (आईआईआरसी, मूल रूप से यह औपचारिक मार्करों के बिना काम नहीं करता था )।


डेटाकंट्रैक्ट विशेषताओं का उपयोग करने की आवश्यकता नहीं है, आपकी सेवा उनके बिना ठीक काम करेगी।

ऐसा कहकर, मुझे नहीं लगता कि आपकी सेवा और क्लाइंट क्लास लाइब्रेरी साझा करना सबसे अच्छा डिज़ाइन दृष्टिकोण है। यदि आप डेटाकंट्रैक्ट्स के माध्यम से अपने प्रकार का पर्दाफाश करेंगे तो यह बहुत स्पष्ट होगा।

क्या होगा जब किसी दिन, कोई आपकी सेवा का उपभोग करना चाहता है लेकिन साझा कक्षा पुस्तकालय तक पहुंच नहीं है?





serialization