मैं डब्ल्यूसीएफ में अपने इंटरफ़ेस के कार्यान्वयन को इंजेक्ट करना चाहता हूं लेकिन मैं डब्ल्यूसीएफ के ग्राहक में निर्भरता इंजेक्शन के अपने कंटेनर को प्रारंभ करना चाहता हूं। तो मैं अपनी सेवा के प्रत्येक ग्राहक के लिए एक अलग कार्यान्वयन कर सकता हूं।निर्भरता इंजेक्शन wcf
उत्तर
जब आप का उपयोग svcutil.exe या विजुअल स्टूडियो, कई प्रकार के स्वत: जनरेट एक ग्राहक इंटरफ़ेस हो जाएगा में से एक में सेवा संदर्भ जादूगर जोड़ें। आइए इसे IMyService
पर कॉल करें। भी स्वत: जेनरेट किए गए इंटरफ़ेस को IMyServiceChannel
जैसे कुछ कहा जाएगा जो IMyService और IDisposable लागू करता है। अपने शेष ग्राहक एप्लिकेशन में इस अमूर्तता का प्रयोग करें।
जब से तुम एक नया चैनल बनाने और इसे फिर से बंद करने के लिए सक्षम होना चाहते हैं, तो आप लागू कर सकते हैं एक सार फैक्टरी:
public interface IMyServiceFactory
{
IMyServiceChannel CreateChannel();
}
अपने क्लाइंट अनुप्रयोग के बाकी में, आप IMyServiceFactory पर निर्भरता ले जा सकते हैं:
:public class MyClient
{
private readonly IMyServiceFactory factory;
public MyClient(IMyServiceFactory factory)
{
if (factory == null)
{
throw new ArgumentNullException("factory");
}
this.factory = factory;
}
// Use the WCF proxy
public string Foo(string bar)
{
using(var proxy = this.factory.CreateChannel())
{
return proxy.Foo(bar);
}
}
}
आपको लगता है कि WCF के ChannelFactory<T>
एक कार्यान्वयन के रूप में लपेटता IMyServiceFactory का एक ठोस कार्यान्वयन बना सकते हैं
अब आप MyServiceFactory में IMyServiceFactory को मैप करके अपने DI कंटेनर को कॉन्फ़िगर कर सकते हैं। यह इस प्रकार से महल विंडसर में किया है:
container.Register(Component
.For<IMyServiceFactory>()
.ImplementedBy<MyServiceFactory>());
बोनस की जानकारी: यहाँ how to wire up a WCF service with a DI Container है।
आप एक अंतरफलक है कि WCF से संबंधित नहीं है है:
यहाँ मैं अपने प्रश्न से समझते हैं। आइए इसे कॉल करें IInterface
आपके पास एक डब्ल्यूसीएफ क्लाइंट है जो एक सेवा का उपयोग करता है। आइए सेवा अनुबंध पर कॉल करें: IService
आप सर्विस क्लाइंट क्लास चाहते हैं जो डिफ़ॉल्ट रूप से IService लागू करता है जब आप IInterface को लागू करने के लिए सेवा संदर्भ भी जोड़ते हैं।
यदि यह मामला है, तो आप इस तथ्य का उपयोग कर सकते हैं कि सेवा क्लाइंट क्लास को आंशिक रूप से चिह्नित किया गया है।
बस सेवा क्लाइंट के लिए एक और आंशिक घोषणा करें और आपको आवश्यक इंटरफ़ेस जोड़ें (आपको यह सुनिश्चित करना होगा कि नामस्थान ऑटो-जेनरेट कोड और आपके कोड के बराबर हैं)। इसे कुछ दिखना चाहिए:
namespace [ServiceClient Namespace]
{
public partial class ServiceClient : IInterface
{
}
}
आशा है कि इससे मदद मिलेगी।
- 1. WCF निर्भरता इंजेक्शन और अमूर्त कारखाने
- 2. निर्भरता इंजेक्शन
- 3. निर्भरता इंजेक्शन?
- 4. निर्भरता इंजेक्शन
- 5. निर्भरता इंजेक्शन
- 6. निर्भरता इंजेक्शन का उपयोग करके निर्भरता इंजेक्टर इंजेक्शन
- 7. एंड्रॉइड और निर्भरता इंजेक्शन
- 8. एमवीवीएम और निर्भरता इंजेक्शन
- 9. कोणीय - रनटाइम निर्भरता इंजेक्शन?
- 10. निर्भरता इंजेक्शन सर्वोत्तम अभ्यास
- 11. वेबफॉर्म और निर्भरता इंजेक्शन
- 12. @ कैशेबल ब्रेक निर्भरता इंजेक्शन
- 13. निर्भरता इंजेक्शन और कारखाने
- 14. निर्भरता इंजेक्शन स्टार्टअप प्रदर्शन
- 15. एमएसटीएस्ट टेस्टमेडेंस निर्भरता इंजेक्शन
- 16. लूप में निर्भरता इंजेक्शन
- 17. आलसी निर्भरता इंजेक्शन
- 18. निर्भरता इंजेक्शन विकल्प
- 19. एमवीपी निर्भरता इंजेक्शन
- 20. निर्भरता इंजेक्शन कंटेनर (PHP)
- 21. जावास्क्रिप्ट में निर्भरता इंजेक्शन?
- 22. निर्भरता इंजेक्शन: एएसपीएक्स पेज
- 23. परीक्षणों में निर्भरता इंजेक्शन
- 24. एंगुलरजेस को निर्भरता इंजेक्शन
- 25. रूबी निर्भरता इंजेक्शन पुस्तकालय
- 26. एकता (निर्भरता इंजेक्शन): RegisterType
- 27. कैसे निर्भरता इंजेक्शन
- 28. ग्रूवी निर्भरता इंजेक्शन
- 29. निर्भरता-इंजेक्शन परिपत्र निर्भरता को हल करने
- 30. एकता [निर्भरता] इंजेक्शन और विरासत
ठीक है, लेकिन मैं कक्षा में एक कस्टम कार्यान्वयन सेवा में इंजेक्ट करने के लिए कैसे करता हूं? उदाहरण: सार्वजनिक इंटरफ़ेस ISendMail {seng (स्ट्रिंग विषय, स्ट्रिंग संदेश, स्ट्रिंग); }। मैं प्रत्येक क्लाइंट के लिए अलग-अलग वर्ग को लागू करना चाहता हूं और क्लाइंट में मैं डब्ल्यूसीएफ सेवा में इस कार्यान्वयन को इंजेक्ट करता हूं। टीक्स –
कोड साइक्लोमैटिक जटिलता या किसी अन्य चर्चा शब्द को प्रदर्शित नहीं कर सकता है, लेकिन मुझे क्या पता है कि, अपने वर्तमान रूप में लिया गया है, यदि आपके पास रुचि रखने वाली कुछ सेवाओं से अधिक है तो इसे हुक अप करने की आवश्यकता है। बड़ी परियोजनाओं, आईएमओ पर सार्थक होने के लिए एक और सामान्य दृष्टिकोण की आवश्यकता है। – brumScouse
आप उस शब्द का उपयोग करते रहेंगे। मुझे नहीं लगता कि इसका मतलब है कि इसका मतलब क्या है। –