È il IServiceProvider
fondamentalmente solo un'interfaccia generica per qualsiasi contenitore IOC o è utilizzato per un framework specifico? Sto arrotolando il mio contenitore di IOC leggero e sto volendo sapere se dovrei implementarlo. Ci sono altre interfacce che dovrei implementare? Non sono davvero interessato né a MEF né a Unità. Ho usato entrambi ampiamente e in realtà non funzionano per il mio progetto attuale.Quale framework utilizza `IServiceProvider`?
risposta
IServiceProvider
è un importato (o detenuti-over forse) COM interfaccia che è destinato ad essere utilizzato per funzioni private nel contesto dell'oggetto chi si interroga per un servizio. Il termine 'Servizio' è applicato piuttosto liberamente qui, originariamente significava qualsiasi oggetto COM che poteva essere restituito in base a quale GUID è stato dato.
IServiceProvider @ MSDN (.NET reference)
IServiceProviderImpl Class @ MSDN (C++ ATL reference)
In .NET, non è necessario per la sua attuazione a meno che non si dispone di un client che supporta in modo specifico, e in molti casi non sarà necessario aggiungere un ulteriore livello di indirezione questo è implicito usando IServiceProvider
. Inoltre, puoi ideare il tuo schema per condividere oggetti comuni o implementare altri modelli di utilizzo basati su IoC/Iniezione delle dipendenze che sono più flessibili o più rigidi in base alle tue esigenze.
Un buon contesto storico per IServiceProvider
è IE Browser Plugin Spec. Qui, viene utilizzato per consentire ai componenti del plug-in di utilizzare le funzionalità dell'host del browser nel contesto. In un contesto COM, questa interfaccia è utile perché nasconde i dettagli dell'istanza e può anche essere utilizzata come parte di una costruzione di oggetti e strategia di utilizzo per evitare loop di riferimento.
Penso che sia un'interfaccia piuttosto generica, quindi puoi usarla con qualsiasi cosa. Non dovrebbe quasi nemmeno essere nella libreria di classi Framework. Per un uso specifico, Alex D. James del team WCF Data Services ha un blog a riguardo.
io non penso che abbia qualcosa a che fare con i contenitori CIO. Ho usato Unity e Autofac un bel po 'e non l'ho mai visto usato con nessuno dei due. Per quanto riguarda posizionare il proprio, vorrei suggerire di definire la propria interfaccia contenitore in modo generico più standard:
public interface IContainer
{
T Resolve<T>();
}
che è abbastanza standard con qualche variazione, ma si potrebbe anche semplicemente usare IServiceProvider se che si adatta alle vostre esigenze.
E su questa nota, a meno che questo non sia solo un esercizio accademico, potresti leggere "Iniezione di dipendenza". Mark Seemann copre ogni contenitore là fuori e un bel po 'di teoria e pratica. Cioè, lo consiglio vivamente.
https://www.amazon.com/Dependency-Injection-NET-Mark-Seemann/
Il nuovo (come di NET 4) runtime caching API utilizza anche: http://msdn.microsoft.com/en-us/library/system.runtime.caching.objectcache.host.aspx.
E anche designer di Visual Studio.
ASP.NET 5 utilizza IServiceProvider
in modalità "self-hosted", ovvero quando ospita un'applicazione ASP.NET e il runtime in un'applicazione o un servizio di console.
(un oggetto di tipo Microsoft.Framework.Runtime.Common.DependencyInjection.ServiceProvider
- che implementa IServiceProvider
- viene passato al costruttore dell'app della console.)
Pertanto, se si desidera utilizzare un contenitore IoC diverso in ASP.NET 5, è possibile implementare questa interfaccia. Oppure avvolgi l'altro contenitore IoC in una classe che implementa questa interfaccia.
ASP.NET Core (ex ASP.NET 5) usa sempre 'IServiceProvider', non solo quando" self-hosting ". – John
- 1. IServiceProvider in ASP.NET Nucleo
- 2. Quale schema utilizza Ghuloum?
- 3. Quale algoritmo utilizza python()()?
- 4. Quale porta utilizza AWS S3?
- 5. Quale linguaggio template utilizza Tumblr?
- 6. Quale motivo di progettazione utilizza Codeigniter?
- 7. Quale versione di SSL/TLS utilizza System.Web.Services.Protocols.SoapHttpClientProtocol?
- 8. Quale framework di test unitario?
- 9. Quale framework Java per imparare?
- 10. Quale framework .NET con MVC 4?
- 11. System.OutOfMemoryException che utilizza Entity Framework?
- 12. LINQ o ADO.net Entity Framework - quale imparare?
- 13. Quale algoritmo utilizza Asp.net Identity per crittografare la password?
- 14. Quale autenticazione utilizzare quando si utilizza Django Rest Framework e l'app IOS?
- 15. Quale algoritmo di espressione regolare utilizza PHP?
- 16. Quale generatore di parser utilizza CPython?
- 17. Quale funzione di hash utilizza Ruby?
- 18. Quale account di Google Play utilizza IabHelper?
- 19. Quale prodotto Google GWT utilizza UiBinder?
- 20. Quale percentuale del mondo Java utilizza Maven?
- 21. Quale libreria GUI utilizza Google Chrome?
- 22. Quale sapore POSIX di regex utilizza Perl?
- 23. Quale algoritmo utilizza Python in fractions.gcd()?
- 24. Quale algoritmo utilizza Photoshop per desaturare un'immagine?
- 25. Quale protocollo di comunicazione utilizza MySQL?
- 26. Quale numero di porta utilizza SOAP?
- 27. Quale tabella Oracle utilizza una sequenza?
- 28. Identifica quale codifica utilizza l'IPN di PayPal?
- 29. Come scoprire quale porta utilizza un processo?
- 30. Quale versione di JavaScript utilizza ASP Classic?
Bello! Grazie lo farò. – Jordan