2010-02-16 15 views
6

के दौरान xsds में प्रकारों के लिए कक्षाएं उत्पन्न करने का कोई तरीका नहीं है हमारे पास सी # में स्कीमा में प्रकारों के लिए एक केंद्रीय प्रबंधित ऑब्जेक्ट मॉडल है। हम चाहते हैं कि एंटरप्राइज़ में हर कोई एक webservice क्लाइंट या सेवा कार्यान्वयन के दौरान wsdl/svcutil से प्रत्येक बार जेनरेट किए गए किसी भी व्यक्ति का उपयोग करने के बजाय ऑब्जेक्ट मॉडल का उपयोग करें।wsdl.exe/svcutil.exe - वेब सेवा या क्लाइंट पीढ़ी

क्या कोई पैरामीटर (कोई अन्य तरीका) wsdl/svcutil है जो थिली निष्पादन के दौरान स्कीमा प्रकारों के लिए कक्षाएं उत्पन्न नहीं करता है?

उत्तर

0

यदि आप सेवा कॉन्फ़िगरेशन फ़ाइल से मेक्सिको एंडपॉइंट को हटाते हैं, तो क्लाइंट ऐप प्रॉक्सी ऑब्जेक्ट्स को खोजने और उत्पन्न करने में सक्षम नहीं होगा।

  1. DLLs के एक सामान्य सेट है कि सेवा, और datacontracts/साझा ऑब्जेक्ट मॉडल है बनाएँ:

    सही ढंग से इस स्थिति को संभालने के लिए अगर मैं अपने प्रश्न समझ में एक तरह से निम्न करने के लिए है।

  2. जब आप एक नई सेवा बनाते हैं तो कॉन्ट्रैक्ट दृश्य स्टूडियो के बजाय सामान्य डीएल में अनुबंधों का उपयोग करके एक सेवा बनाएं।
  3. सर्वर कॉन्फ़िगरेशन फ़ाइल से MEX एंडपॉइंट निकालें (यह अनिवार्य रूप से प्रॉक्सी पीढ़ी को तोड़ देगा)।
  4. क्या आपका ग्राहक सामान्य डीएलएल का उपयोग करता है और मैन्युअल रूप से क्लाइंट साइड पर चैनल बनाता है (चैनल फैक्ट्री आदि के माध्यम से ...)।

इस दृष्टिकोण में आप wsdl.exe/svcutil.exe का उपयोग नहीं करते हैं क्योंकि आप अनिवार्य रूप से wsdl को छोड़कर हैं। आप कनेक्शन संदर्भों को मैन्युअल रूप से प्रबंधित नहीं करते हैं, इसलिए आप कनेक्शन संदर्भ नहीं जोड़ते हैं।

संपादित करें: इस दृष्टिकोण के बाद, ग्राहक अभी भी wsdl.exe/svcutil.exe के माध्यम से प्रॉक्सी ऑब्जेक्ट्स उत्पन्न करने का प्रयास कर सकता है, लेकिन उन्हें wsdl से सही जानकारी नहीं मिलेगी। वे अनिवार्य रूप से एक गैर-कार्यशील/अपूर्ण प्रॉक्सी उत्पन्न करेंगे।

+0

wsdl/svcutil.exe निष्पादन के दौरान इसे नियंत्रित करने का कोई तरीका है? मेरे पास एक wsdl है जो कुछ xsds आयात करता है और मैं कमांड प्रॉम्प्ट से wsdl.exe या svcutil.exe का उपयोग कर एक सेवा इंटरफ़ेस उत्पन्न करना चाहता हूं। Wsdl.exe/svcutil.exe के निष्पादन के दौरान , क्या मैं xsds में प्रकारों के लिए कक्षाएं उत्पन्न नहीं कर सकता? –

+0

WSDLs मौजूद कारणों का एक हिस्सा उन ऑब्जेक्ट स्कीमा को परिभाषित करने के लिए आवश्यक है जो उनके साथ संवाद करने के लिए आवश्यक हैं। Wsdl.exe और svcutil.exe इन ऑब्जेक्ट्स के लिए कक्षाएं उत्पन्न करने के लिए डिज़ाइन किए गए हैं, मुझे नहीं लगता कि इसे रोकने का कोई तरीका है। –

+0

जेरेमी, यह सच है अगर ग्राहक नहीं जानता कि सेवा के साथ संवाद कैसे करें। यदि डेवलपर्स को वास्तविक अनुबंध डीएलएस तक पहुंच है, तो उन्हें डब्लूएसडीएल की जरूरत नहीं है। वे एक ही डीएलएस का उपयोग कर अनुबंध पर सहमत हैं। –

3

मुझे यह लागू करने के लिए किसी भी विशिष्ट सेटिंग या कमांड लाइन स्विच के बारे में पता नहीं है - आप क्या कर सकते हैं, लेकिन यह ज्यादातर प्रशिक्षण और प्रशिक्षण द्वारा लागू करने का मामला है, कक्षा पुस्तकालय (असेंबली, डेवलपर्स के साथ DLL), और यकीन है कि हर किसी का संदर्भ देता है आम वर्ग पुस्तकालय और ("उन्नत" पृष्ठ पर "जोड़ें सेवा संदर्भ" संवाद में डिफ़ॉल्ट सेटिंग्स को छोड़ देता है कि बनाने के) अकेले:

alt text http://i45.tinypic.com/11b68sh.png

यहाँ, आप परिभाषित करते हैं कि डब्ल्यूसीएफ किसी भी संदर्भित असेंबली में किसी भी प्रकार का पुन: उपयोग कर सकता है - इसलिए यदि आपके डेवलपर सामान्य डेटा अनुबंध लाइब्रेरी का नियमित संदर्भ जोड़ते हैं, तो डब्ल्यूसीएफ उन टी का उपयोग करेगा उन्हें फिर से बनाने के बजाय ypes।

लेकिन फिर से - यह केवल "प्रबंधन द्वारा जांच और जांच" दृष्टिकोण है - मुझे इसे लागू करने के किसी भी तकनीकी तरीके से नहीं पता है।

3

मेरा मानना ​​है कि क्या आप के लिए देख रहे हैं: svcutil.exe /r your-dtos.dll

/संदर्भ: - निर्दिष्ट विधानसभा में संदर्भ प्रकार के। ग्राहकों को उत्पन्न करते समय, का उपयोग इस विकल्प को निर्दिष्ट करने के लिए करें कि में मेटाडेटा आयात किए जाने वाले प्रकार हो सकते हैं।(शॉर्ट: /आर)

मेरी राय में WCF प्रॉक्सी, endpoint चैनल, सेवा संचालन और डीटीओ पेलोड ही उत्पन्न ग्राहक प्रॉक्सी में की तंग युग्मन एक प्रमुख डिजाइन दोष है।

  • एक ही वेब सेवा ग्राहक (यानी Soap11, Soap12, एक्सएमएल, JSON) करने में सक्षम हो:

    यह वही है मुझे प्रेरित मेरे open web services framework जहाँ मैं अंत बिंदु और पेलोड जो की अनुमति देता है दसगुणा में हल करने के लिए है किसी भी वेब सेवा पर कॉल करें।

  • यह मुझे किसी भी वेब सेवा क्लाइंट
  • में एक ही डेटाकंट्रैक्ट डीटीओ उदाहरण का उपयोग करने देता है। इसमें कई फायदे हैं जिनमें बिना किसी अतिरिक्त कॉन्फ़िगरेशन के कई अलग-अलग अंत बिंदुओं पर एक ही वेब सेवा का खुलासा करने में सक्षम होना शामिल है। इस प्रकार मेरी सेवा के प्रत्येक उपभोक्ता के लिए अनुकूलित वेब सेवा एंडपॉइंट प्रदान करना। जैसे अंतर और दृढ़ता प्रकार के ग्राहकों के लिए
    • एक्सएमएल,
    • अजाक्स ग्राहकों के लिए
    • JSON,
    • डबल्यूएसडीएल के वातावरण है कि कोड उत्पन्न पसंद करते हैं के लिए (यानी फ्लेक्स बिल्डर, VS.NET 'जोड़ें सेवा संदर्भ' आदि)

मेरी कंपनी में हम विकसित किया है वेब सेवाओं विभिन्न ग्राहकों की एक संख्या से कहा जाता है के सैकड़ों यानी अजाक्स, फ्लैश/ActionScript, सी ++, Silverlight, ASP.NET और विभिन्न अंतिमबिंदुओं के माध्यम से एक ही वेब सेवा को कॉल करने में सक्षम होने है बचाया अनगिनत घंटे

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