एक वेब सेवा के लिए गणना मूल्यों को कैसे पास करें

मेरी दुविधा, मूल रूप से, दो अनुप्रयोगों के बीच एक गणना साझा करने के लिए कैसे है।

उपयोगकर्ता वेब पर मौजूद फ्रंट-एंड एप्लिकेशन के माध्यम से दस्तावेज़ अपलोड करते हैं। यह एप्लिकेशन बैक-एंड एप्लिकेशन की एक वेब सेवा कॉल करता है और दस्तावेज़ को पास करता है। बैक-एंड ऐप दस्तावेज़ सहेजता है और दस्तावेज़ तालिका में एक पंक्ति डालता है।

दस्तावेज़ प्रकार (7 संभावित दस्तावेज़ प्रकार: चालान , अनुबंध आदि) वेब सेवा के अपलोड दस्तावेज़ विधि के पैरामीटर के रूप में पारित किया गया है। सवाल यह है कि, इस पैरामीटर के प्रकार (और संभावित मूल्य) क्या होना चाहिए?

चूंकि आपको इन मानों को दोनों अनुप्रयोगों में हार्डकोड करने की आवश्यकता है, मुझे लगता है कि यह ओ.के. है। एक वर्णनात्मक स्ट्रिंग ( चालान , अनुबंध , वर्कऑर्डर , SignedWorkOrder ) का उपयोग करने के लिए।

क्या यह पहले एप्लिकेशन में दस्तावेज़ प्रकार गणना बनाने के लिए एक बेहतर तरीका है, और इसे दूसरे एप्लिकेशन में पुन: उत्पन्न करने के लिए, और फिर उनके बीच वेब सेवा के लिए संबंधित पूर्णांक मान पास कर सकता है?

0
जोड़ा संपादित
विचारों: 1

8 उत्तर

मैं केवल .NET के बारे में बात कर सकता हूं, लेकिन अगर आपके पास एएसपीनेट वेबसाइट सेवा है, तो आप इसे सीधे एक गणना जोड़ सकते हैं।

जब आप अपने क्लाइंट एप्लिकेशन में "वेब संदर्भ जोड़ें" का उपयोग करते हैं, तो परिणामी कक्षा में उस enum शामिल होना चाहिए

लेकिन यह मेरे सिर के शीर्ष से है, मुझे पूरा यकीन है कि मैंने इसे अतीत में किया है, लेकिन मैं निश्चित रूप से नहीं कह सकता।

0
जोड़ा
@ डेव वेब सर्विसेज विधियों को समाहित करता है, इसलिए यदि एनम का उपयोग करने के कोई तरीके नहीं हैं, तो वेब सेवा परिप्रेक्ष्य से कोई संदर्भ नहीं है - इसे संदर्भित करने के लिए। मैं एक विवरण के साथ एक अलग प्रश्न पूछने की सलाह देता हूं कि आप क्या करना चाहते हैं / आप इसमें एक अपरिवर्तनीय enum क्यों चाहते हैं।
जोड़ा लेखक Michael Stum, स्रोत
'वेब संदर्भ जोड़ें' enums बना देता है, लेकिन केवल कुछ जो किसी विधि में संदर्भित हैं। मैं स्वचालित रूप से स्वचालित रूप से जेनरेट की गई संदर्भ.cs फ़ाइल में enums जोड़ सकता हूं और सभी अच्छी तरह से काम करता है। हो सकता है कि यह अलग प्रश्न है, लेकिन संदर्भ संदर्भ फ़ाइल में मैन्युअल रूप से हैकिंग किए बिना किसी संदर्भित असेंबली (लेकिन कोड में उपयोग नहीं किया गया) में सभी enums जोड़ने के लिए 'वेब संदर्भ जोड़ें' प्राप्त करने का कोई तरीका है?
जोड़ा लेखक Dave M, स्रोत

.NET में, गणना मान (डिफ़ॉल्ट रूप से) नाम के साथ xml में क्रमबद्ध होते हैं। ऐसे उदाहरणों के लिए जहां आपके पास एकाधिक मान हो सकते हैं ( झंडे ), तो यह मूल्यों के बीच एक जगह रखता है। यह काम करता है क्योंकि गणना में रिक्त स्थान नहीं होते हैं, इसलिए आप स्ट्रिंग को विभाजित करके फिर से मान प्राप्त कर सकते हैं (यानी "चालान अनुबंध साइनड वर्कऑर्डर", लुब्स के उदाहरण का उपयोग करके)।

आप XmlEnumAttribute , या EnumMember विशेषता।

0
जोड़ा

यदि आप किसी .NET पृष्ठ / एप्लिकेशन से अपनी वेब सेवा का उपभोग कर रहे हैं, तो आप सेवा का उपभोग करने वाले प्रोजेक्ट में अपना वेब संदर्भ जोड़ने के बाद गणना को एक्सेस करने में सक्षम होना चाहिए।

0
जोड़ा

इस तरह की इंटरफ़ेस सीमा पर enum s का उपयोग न करने के कुछ अच्छे कारण हैं। इस विषय पर डारे की पोस्ट पर विचार करें।

0
जोड़ा

मैंने देखा है कि VS.net से "वेब संदर्भ जोड़ें" के विपरीत "सेवा संदर्भ जोड़ें" का उपयोग करते समय, वास्तविक enum मान enum नामों के साथ-साथ आते हैं। यह वास्तव में परेशान है क्योंकि मुझे 2.0 और 3.5 क्लाइंट दोनों का समर्थन करने की आवश्यकता है। मैं 2.0 जेनरेट की गई वेब सेवा प्रॉक्सी कोड में जाने और हर बार जब मैं बदलाव करता हूं तो enum मानों को मैन्युअल रूप से जोड़ना पड़ता हूं!

0
जोड़ा

यदि आप .NET SOAP से .NET के साथ काम नहीं कर रहे हैं, तो भी आप एक गणनाकर्ता को परिभाषित कर सकते हैं बशर्ते दोनों एंडपॉइंट्स डब्लूएसडीएल का उपयोग कर रहे हों।

    
     
          
          
          
          
          
     

Its up to the WSDL -> Proxy generator tool to parse that into a enum equivalent in the client language.

0
जोड़ा

मैं अभी भी आंतरिक रूप से गणना का उपयोग करता हूं लेकिन उपभोक्ताओं से मुझे केवल नाम ही पास करने की उम्मीद होगी, न कि संख्यात्मक मूल्य।

उदाहरण के लिए बस कुछ मूर्ख उदाहरण:

public enum DocumentType
{
  Invoice,
  Contract,
  WorkOrder,
  SignedWorkOrder
}

[WebMethod]
public void UploadDocument(string type, byte[] data)
{
  DocumentType docType = (DocumentType)Enum.Parse(typeof(DocumentType), type);
}
0
जोड़ा

मैं पठनीयता और डिबगिंग के प्रयोजनों के लिए, उनके बीच एक पूर्णांक पारित करने के खिलाफ सुझाव दूंगा। मान लें कि आप अपने लॉग के माध्यम से जा रहे हैं और आप DocumentType = 4 के लिए 500 त्रुटियों का एक गुच्छा देखते हैं। अब आपको यह देखना होगा कि कौन सा दस्तावेज़ टाइप 4 है या यदि अनुप्रयोगों में से कोई एक ऐसे नंबर को संदर्भित करता है जो दूसरे में मौजूद नहीं है, तो शायद मेल नहीं किए गए संस्करणों के कारण।

यह थोड़ा और कोड है, और यह मस्तिष्क के स्थिर टाइपिंग हिस्से को थोड़ा कच्चा बनाता है, लेकिन HTTP के शीर्ष पर प्रोटोकॉल में प्राप्त ज्ञान अपारदर्शी गणनाओं पर सुस्पष्ट तारों के साथ होता है।

0
जोड़ा