2011-01-25 15 views
5

मुझे किसी विशेष वेब सेवा में प्रकट होने वाली वेब विधियों के संग्रह के लिए एक रैपर लिखने की आवश्यकता है। यह एक ही सेवा में इस नई रैपर विधि को छूने के लिए समझ में आता है क्योंकि यह उसी प्रकार की वस्तु को प्रभावित कर रहा है।उसी वेब सेवा से वेब विधियों को कॉल करना

इनमें से अधिकतर वेब विधियां केवल पतली विधियां हैं जो अन्य फ़ाइलों में स्थिर विधियों को कॉल करती हैं, जो ठीक है, लेकिन इन स्थिर विधि कॉल से पहले उनके पास कुछ सुरक्षा तर्क भी हैं। प्रत्येक विधि कॉल से पहले सुरक्षा तर्क को फिर से बनाने के बजाय, मैं लपेटना चाहता हूं, क्या यह अन्य वेब विधियों को स्थानीय रूप से उसी सेवा के अंदर से कॉल करना संभव है, या यह बुरा अभ्यास है?

यहाँ एक उदाहरण है:

[WebMethod] 
public int SmallMethod1(int a) 
{ 
    //SecurityLogic 
    return AnObject.StaticMethod1(); 
} 

[WebMethod] 
public int SmallMethod2(int b) 
{ 
    //SecurityLogic 
    return AnObject.StaticMethod2(); 
} 

[WebMethod] 
public int WrapperMethod(int c) 
{ 
    return AnObject.StaticMethod1() + AnObject.StaticMethod2(); 
} 

उत्तर

4

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

कहा करने के बाद कि एक परीक्षण के नजरिए से मैं यह कर नहीं बल्कि सुझाव है:

[WebMethod] 
public int WrapperMethod(int c) 
{ 
    return AnObject.WrapperMethod(c) 
} 

यह, बल्कि AnObject.StaticMethod1() + AnObject.StaticMethod2() के लिए परीक्षण पुन: बनाने की कोशिश कर रहा से आप परीक्षण है कि परीक्षण WrapperMethod सीधे (AnObject में समझाया) लिखने की अनुमति होगी आपके यूनिट परीक्षणों में - यह जल्दी गन्दा हो जाता है क्योंकि अब आपके पास दो अलग-अलग स्थानों में एक ही तर्क है।

+0

परीक्षण पहलुओं पर महान अंक। धन्यवाद! –

0

बिलकुल नहीं। उस तर्क को समाहित करना एक बहुत अच्छा विचार है। आपके पास AnObject.WrapperStaticMethod() हो सकता है।

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