वर्तमान में हम बहस कर रहे हैं कि क्या डब्लूसीएफ चैनल पर दोषों को फेंकना बेहतर है या नहीं, एक संदेश से स्थिति या प्रतिक्रिया का संकेत देने वाला संदेश गुजर रहा है।डब्ल्यूसीएफ - दोष/अपवाद बनाम संदेश
दोष डब्लूसीएफ से अंतर्निहित समर्थन के साथ आते हैं जहां आप अंतर्निहित त्रुटि हैंडलर का उपयोग कर सकते हैं और तदनुसार प्रतिक्रिया दे सकते हैं। हालांकि, यह ओवरहेड लेता है क्योंकि .NET में अपवाद फेंकना काफी महंगा हो सकता है।
संदेशों को यह निर्धारित करने के लिए आवश्यक जानकारी हो सकती है कि अपवाद फेंकने के ऊपरी हिस्से के बिना आपकी सेवा कॉल के साथ क्या हुआ। हालांकि संदेश का विश्लेषण करने और इसकी सामग्री के बाद क्रियाओं को निर्धारित करने के लिए इसे दोहराए गए कोड की कई पंक्तियों की आवश्यकता होती है।
हम एक सामान्य संदेश वस्तु हम अपनी सेवाओं में प्रयोग कर सकते हैं बनाने में एक चाकू ले लिया, और यह है कि क्या हम साथ आया है:
public class ReturnItemDTO<T>
{
[DataMember]
public bool Success { get; set; }
[DataMember]
public string ErrorMessage { get; set; }
[DataMember]
public T Item { get; set; }
}
सब मेरी सेवा कॉल इस आइटम वापस, मैं लगातार जांच कर सकते हैं "सफलता" संपत्ति यह निर्धारित करने के लिए कि क्या सब ठीक हो गया है। मेरे पास घटना में एक त्रुटि संदेश स्ट्रिंग है जो इंगित करती है कि कुछ गलत हो गया है, और यदि आवश्यक हो तो एक सामान्य आइटम जिसमें डीटीओ होता है।
अपवाद जानकारी को केंद्रीय लॉगिंग सेवा में लॉग इन करना होगा और सेवा से वापस नहीं भेजा जाना चाहिए।
विचार? टिप्पणियाँ? विचार? सुझाव?
कुछ आगे स्पष्टीकरण मेरे सवाल पर
एक मुद्दा मैं आ रही गलती अनुबंध के साथ व्यापार के नियम संचार कर रहा है।
पसंद है, अगर कोई लॉग इन करता है, और उनका खाता लॉक है, तो मैं इसे कैसे संवाद करूं? उनका लॉगिन स्पष्ट रूप से विफल रहता है, लेकिन यह "खाता लॉक" कारण के कारण विफल रहता है।
तो मैं कार्य करें:
ए) एक बूलियन उपयोग करते हैं, संदेश खाते के साथ दोष फेंक बंद कर दिया
बी) प्रासंगिक जानकारी
मैं सहमत नहीं हैं। चूंकि डब्ल्यूसीएफ भाषा-अज्ञेयवादी (कुछ रूप में, कम से कम) माना जाता है, इसलिए आप इस बात की गारंटी नहीं दे सकते कि तार के नीचे एक अपवाद वस्तु को पारित करने से बग समस्याएं उत्पन्न नहीं होंगी। जावा क्लाइंट्स FaultContract ऑब्जेक्ट प्रकार इंटरऑपरेबिलिटी सुनिश्चित कर सकता है क्योंकि यह ओएएसआईएस चश्मे का हिस्सा है। – ZombieSheep
.NET दोष अनुबंधों के अपवाद का अनुवाद करता है। मेरे उत्तर में जोड़े गए लिंक को देखें। –
मैं हमेशा इस धारणा के तहत था कि एक अपवाद फेंकने वाला अनावश्यक ओवरहेड। आपकी पोस्ट से मुझे दुख की बात है कि गुमराह किया गया है। इस पोस्ट को एवरवर के रूप में चिह्नित करने से पहले, मैं कुछ और राय प्राप्त करना चाहता हूं। लेकिन आपके इनपुट पर विचार करते हुए, लगता है कि गलती अनुबंध बेहतर विकल्प – WebDude