के लिए मौजूदा भंडार का लाभ उठाना मेरे पास एक एमवीसी 3 समाधान है जो एक भंडार पैटर्न का उपयोग करके निनजेक्ट के साथ कॉन्फ़िगर किया गया है। मेरी बाइंडिंग में शामिल हैं:कंसोल एप्लिकेशन के लिए निनजेक्ट को कॉन्फ़िगर करना और मेरे एमवीसी अनुप्रयोग
kernel.Bind<IDatabaseFactory>().To<DatabaseFactory>().InRequestScope();
kernel.Bind<IUnitOfWork>().To<UnitOfWork>().InRequestScope();
kernel.Bind<IMyRepository>().To<MyRepository>().InRequestScope();
kernel.Bind<IMyService>().To<MyService>().InRequestScope();
kernel.Bind<ILogging>().To<Logging>().InSingletonScope();
मैं अपने समाधान के लिए एक सांत्वना आवेदन जोड़ा गया है और मैं एक ही भंडार और सेवाओं का लाभ उठाने के लिए चाहते हैं।
static void Main(string[] args)
{
IKernel kernel = new StandardKernel(new IoCMapper());
var service = kernel.Get<IMyService>();
var logger = kernel.Get<ILogging>();
... do some processing here
}
यह सिर्फ ठीक काम करता है, लेकिन मैं टी सही ढंग से एक सांत्वना आवेदन के लिए यह सुनिश्चित करें कि मैं Ninject को विन्यस्त कर रहा हूँ हो चाहता हूँ:
kernel.Bind<IDatabaseFactory>().To<DatabaseFactory>().InSingletonScope();
kernel.Bind<IUnitOfWork>().To<UnitOfWork>().InSingletonScope();
kernel.Bind<IMyRepository>().To<MyRepository>().InSingletonScope();
kernel.Bind<IMyService>().To<MyService>().InSingletonScope();
kernel.Bind<ILogging>().To<Logging>().InSingletonScope();
मेरे कंसोल कोड की तरह दिखता है: जैसे सांत्वना आवेदन के लिए मेरे Ninject विन्यास लग रहा है । क्या मेरे कंसोल एप्लिकेशन में मेरे सभी बाइंडिंग के लिए InSingletonScope() का उपयोग करना सही है? क्या मुझे इसे अलग-अलग कॉन्फ़िगर करना चाहिए?
कंसोल एप्लिकेशन में लूप के लिए एक सरल है जो कुछ यूआरएल के माध्यम से पुनरावृत्त करता है, सामग्री को स्क्रैप करता है, इसे संसाधित करता है और इसे डेटाबेस में सहेजने के लिए सेवाओं में भेज देता है। कोई async अनुरोध नहीं है तो मुझे लगता है कि यह इसे एकल धागा बना देगा? कौन सा दृष्टिकोण इस परिदृश्य को सबसे अच्छा फिट करता है? – Thomas
यदि आप हर बार एक ही डेटाबेस कनेक्शन का उपयोग करना चाहते हैं तो आप इनसिंगलेटनस्कोप या इनरक्वैस्टस्कोप का उपयोग कर सकते हैं। एक तुल्यकालिक ऑपरेशन के लिए जो ठीक होना चाहिए। यदि किसी भी कारण से डेटाबेस सेवा के लिए आपके अनुरोध असीमित हो जाते हैं (जो यूओडब्ल्यू परिदृश्यों में आम है) तो आप एक ही समय में दो अलग-अलग कॉलों द्वारा उपयोग किए जा रहे डेटाबेस कनेक्शन के साथ समस्याओं में भागना शुरू कर सकते हैं। यह मेरे साथ कई महीने पहले हुआ था और –
पर क्या चल रहा था, यह जानने के लिए मैं दिन बिताता हूं जब आप कहते हैं कि "डेटाबेस सेवा के लिए आपके अनुरोध अतुल्यकालिक हो जाते हैं" मुझे लगता है कि मुझे वास्तव में "कोड अतुल्यकालिक" बनने के लिए अपना कोड संशोधित करना है या है यह कुछ ऐसा है जो "हुड के नीचे" हो सकता है? – Thomas