2009-03-26 14 views
6

अब मैं .NET Framework (.asmx फ़ाइलों, WCF नहीं) का उपयोग कर वेब सर्विसेज के साथ घूम रहा हूं। मैं सोच रहा हूं कि उपयोगकर्ता को यह बताने का सबसे अच्छा अभ्यास क्या है कि विधि कॉल में कुछ प्रकार की व्यवसाय-त्रुटि हुई है।वेब सेवा में त्रुटि प्रबंधन के लिए सर्वोत्तम अभ्यास

मेरे छोटे से परीक्षण दर-मामला:

मैं जांच जो एक केंद्रीय सर्वर के साथ रजिस्टर करने की आवश्यकता को मापने है। प्रत्येक जांच में एक अलग भौतिक पता होना चाहिए। रजिस्टर करने के लिए, वे (एक वेब सेवा के माध्यम से) बुलाना चाहिए:

[WebMethod] 
public void RegisterReadingStation(out Guid sessionId, Int64 physicalAddress) 

अब, हस्ताक्षर पत्थर में सेट नहीं है - वास्तव में, कि क्या मैं यह पता लगाने की कोशिश कर रहा हूँ है। :) मुझे किसी भी तरह से जांच को सतर्क करने की आवश्यकता है अगर वह पहले से ही लिया गया भौतिक पता का उपयोग करके खुद को पंजीकृत करने का प्रयास कर रहा है।

  • एक SoapException जानकारी युक्त फेंक:

    तरह से मैं इसे देख, मैं कुछ संभावनाएं मिला है। हालांकि, एक स्ट्रिंग :: संदेश वास्तव में प्रोग्रामेटिक चेक करना आसान नहीं है।

  • कुछ प्रकार के मूल्य-वर्ग का उपयोग वापसी पैरामीटर (या यहां तक ​​कि सरल, एक enum) के रूप में करें। अगर मैं ऐसा करता हूं, तो मुझे लगता है कि मुझे सर्वर/क्लाइंट पर कक्षा को मैन्युअल रूप से क्रमबद्ध/deserialize करना था?

इस बारे में कोई विचार?

उत्तर

1

मुझे लगता है कि आम सहमति एक कस्टम रिटर्न कोड (पूर्णांक) का उपयोग करेगी। जब तक सेवा दस्तावेज संभव है कि संभावित रिटर्न कोड क्या हैं, यह संभव होना चाहिए।

+0

ईक, सी-दिनों में वापस। इस दृष्टिकोण के साथ समस्या यह है कि यह बहुत लचीला नहीं है। आप कस्टम-त्रुटि संदेश जैसे स्टैकट्रैक या संदेश या जोड़ नहीं सकते हैं .. मैं देख सकता हूं कि यह आसान और बहु-अनुकूल तरीका होगा हालांकि। – cwap

+0

मेरे पास वेब सेवाओं के लिए एक अधिग्रहण प्रशंसा है जो सादगी के पक्ष में गलती है। –

+0

हालांकि यह सबसे ज्यादा वोट नहीं दिया गया जवाब है, मैं इसे स्वीकार करूंगा। मुझे लगता है कि "वेबसाइटों का उपयोग करने के लिए सरल होना चाहिए" इसके पहलू, इसलिए यह है कि बीमार अब के लिए चिपक गया है :) – cwap

5

मैं प्रत्येक WebMethod से ResultSet नामक एक छोटी कक्षा लौटाता हूं, जिसमें एक int त्रुटि कोड और स्ट्रिंग त्रुटि संदेश होता है।

यह आपको त्रुटि/सफलता के लिए एक आसान जांच देता है, और कुछ विवरण गलत होने पर कुछ विवरण देता है।

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

+0

हां, मैं भी साथ जा रहा था :) – cwap

+0

लेकिन जब वेब सेवा फ़ंक्शन कर्मचारी ऑब्जेक्ट जैसे ऑब्जेक्ट को वापस करने के लिए माना जाता है तो क्या करना चाहिए जब सभी ठीक हो जाएंगे और त्रुटि होने पर त्रुटि संदेश लौटाएंगे। दो कैसे लौटें विभिन्न परिदृश्यों में एक ही समारोह से अलग वस्तुओं? –

+0

मैंने जो किया वह एक नई कक्षा थी जिसे EmployeeDataResultSet कहा जाता है, जो परिणामसेट से प्राप्त होता है। तब मैंने कर्मचारी डेटाटासेटसेट में एक संपत्ति जोड़ा जो कि कर्मचारी डेटा वर्ग है। मूल रूप से, आप अपने परिणाम डेटा में अपने कर्मचारी डेटा को समाहित करते हैं। – Moose

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