¿Algún buen ejemplo de usar Ninject con un servicio de Windows? No estoy seguro de qué pasa si necesito alguna extensión. Además, ¿no está seguro de cuál debería ser la Raíz de Composición? ¿Algún buen ejemplo de usar Ninject con un servicio de Windows?Usando Ninject con un servicio de Windows
Respuesta
Un servicio de Windows no difiere mucho de una aplicación de línea de comando normal con respecto a la inyección de dependencia. La raíz de composición directa es su método Main
.
La forma en que generalmente lo he hecho es crear el StandardKernel
allí con un módulo en el que se resuelven mis dependencias. A continuación, utilice kernel.Get
para resolver las dependencias de primer nivel - todo lo demás seguirá a partir de ahí:
static void Main(string[] args)
{
var kernel = new StandardKernel(new FooModule());
var barDependency = kernel.Get<Bar>();
System.ServiceProcess.ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] { new FooService(barDependency) };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}
Usando Ninject con TopShelf .. ejecutar vs instalar (iniciar) me enfrentaba a un problema extraño donde > MyService.exe run
funciona bien con el código Kernel.Bind(handlers => { var bindings = handlers.From("abc.dll") ... }
Pero cuando inicio el servicio después de la instalación mediante > MyService.exe install
que no pudo resolver los enlaces mencionados en la exploración de montaje Ninject.
Después de unas horas de romper la cabeza ...
cambiar el .From(...)
-.FromAssembliesMatching(...)
que podría iniciar el servicio con éxito.
Espero que ayude a alguien.
- 1. Ninject con la aplicación de Windows
- 2. Inyección de Dependencia con Ninject, MVC 3 y usando el Patrón de Localizador de Servicio
- 3. Usando Prism with Ninject
- 4. ¿Cómo instalar un servicio de Windows usando Qt?
- 5. Usando Ninject en un plugin como arquitectura
- 6. Problema extraño con un servicio Windows .NET
- 7. Ninject WCF Extension ArgumentNullException usando NET.TCP Binding
- 8. Iniciar un proceso con credenciales de un servicio de Windows
- 9. usando un servicio único para envolver un servicio de Windows en Linux
- 10. Burlando de un objeto con Moq, usando Ninject al hacer UnitTesting
- 11. ¿Ninject con un controlador base?
- 12. Método más rápido de comunicación con un servicio de Windows
- 13. Alternativa a HttpContext al usar NInject con un servicio WCF alojado en WAS utilizando enlace MSMQ
- 14. Console.WriteLine() dentro de un servicio de Windows?
- 15. Aplicación de consola para comunicarse con un servicio de Windows
- 16. Ninject con MembershipProvider | RoleProvider
- 17. Uso de Ninject con Membership.Provider
- 18. Inyección de dependencias en WPF usando Ninject
- 19. Programe el servicio de Windows con Quartz.NET
- 20. ¿Cómo depurar un servicio de Windows con Delphi?
- 21. ¿Cómo hacer un servicio de Windows con parámetros?
- 22. Actualización automática de un servicio de Windows
- 23. ClickOnce ¿implementar un servicio de Windows?
- 24. instalar/desinstalar un servicio de Windows
- 25. Actualizando el servicio de Windows usando Inno Setup
- 26. WCF Seguridad en un servicio de Windows
- 27. Problema al probar un servicio de Windows
- 28. Ninject Inyección de todas las instancias de un tipo genérico con ninject
- 29. Pruebas de integración con Topshelf a Iniciar un servicio de Windows C#
- 30. Reiniciar mediante programación un servicio de Windows
¿Tiene Microsoft una forma de inyectar módulos Ninject (o kernel) más arriba para que no tenga que hacer ningún servicio de localización? (No es un gran problema solo por un par de dependencias, solo curiosidad) –
No. No es que estés comenzando como una aplicación de consola. Podría hacer una aproximación de patrón de fábrica abstracta (o método de fábrica) para crear su servicio, si necesita hacerlo. –
Dan, el método principal es el punto de partida. Las soluciones para aplicaciones web, etc. son en realidad soluciones temporales porque una aplicación web no tiene un buen punto de partida. –