एएसपी.नेट एमवीसी 3 एक निर्भरता इंजेक्शन सेवा प्रदान करता है जो लागू करने के लिए आप जो भी निर्भरता संकल्प चुनते हैं। निनजेक एमवीसी 3 प्लगइन अपने फ़ंक्शन में बहुत आसान है क्योंकि यह सब करना चाहिए System.Web.Mvc.IDependencyResolver में परिभाषित प्रकार-रिज़ॉल्यूशन विधियों को कार्यान्वित करना और अनुरोधित प्रकार को वापस करने के लिए उचित निंजा विधियों को कॉल करना।
चाहे आप अपना खुद का आईडी निर्भरता रीसोलवर का उपयोग करना चुनते हैं और इसे निनजेक्ट (या किसी अन्य निर्भरता इंजेक्शन फ्रेमवर्क) पर मैप करते हैं, या आप स्वतंत्र रूप से उपलब्ध निंजा एमवीसी 3 प्लगइन का उपयोग करना चुनते हैं, ज्यादातर एक मामूली भेद है।
यहां एक पूर्ण-कार्यात्मक उदाहरण है जो हाथ से लुढ़का हुआ, निनजेक्ट-संगत आईडी निर्भरता रीसोलवर जैसा दिख सकता है। Ninject MVC 3 प्लगइन मौलिक बहुत समान होगा:
public class NinjectDependencyResolver : IDependencyResolver
{
private readonly IKernel _kernel;
public NinjectDependencyResolver(IKernel kernel) {
_kernel = kernel;
}
public object GetService(Type serviceType) {
return _kernel.TryGet(serviceType, new IParameter[0]);
}
public IEnumerable<object> GetServices(Type serviceType) {
return _kernel.GetAll(serviceType, new IParameter[0]);
}
}
यहां प्रमुख मुद्दा है कि ASP.NET MVC एक पूर्ण निर्भरता इंजेक्शन ढांचे प्रदान नहीं करता है; यह केवल एएसपी.नेट एमवीसी अनुरोध पाइपलाइन (नियंत्रक संकल्प, दृश्य संकल्प, आदि) में विशिष्ट बिंदुओं पर एक आईओसी कंटेनर (यानी निंजा) के माध्यम से एक आवश्यक प्रकार के उदाहरण को पुनः प्राप्त करने के लिए आवश्यक परत प्रदान करता है।
नोट: यदि मैंने उपयोग की जाने वाली शब्दावली में से कोई भी सटीक नहीं है, तो कृपया मुझे सूचित करें।
स्रोत
2011-03-01 20:51:31
@ रीमो ग्लोर - वेब.एमवीसी एक्सटेंशन और Ninject.MVC3 के बीच क्या अंतर है? – chobo2
यह वही है। हमने NuGet पैकेज Ninject.MVC3 का नाम रखा क्योंकि यह पहले अस्तित्व में था। –
@ रेमो ग्लोर - तो यह वही बात है? – chobo2