2013-02-20 9 views
5

Jak TosShelf mówi:Czy można uruchomić wiele usług z jednej aplikacji konsolowej przez Topshelf?

"You can only have ONE service! As of 3.x Topshelf the base product no longer support hosting multiple services. "

od wersji 3.x muszę dowiedzieć się, jak zintegrować nową wersję Topshelf

. Pytanie: Czy to możliwe, aby rozpocząć wiele oddzielnych usług z jednej aplikacji konsolowej przy użyciu Topshelf? Jak to osiągnąć?

+0

myślę theres pakiet Nuget można dodać do obsługi wielu usług, ale nie mogę przypomnieć sobie imię z góry głowę, topshelf.something myślę –

+0

Byłoby wspaniale, gdyby można :) – pencilCake

+0

„Ta funkcja najprawdopodobniej wróci w postaci dodatku na nuget. " może jeszcze tego nie zrobili? nie mogłem zobaczyć jednego w nugecie przepraszam –

Odpowiedz

1

Na chwilę obecną nie istnieje metoda hostowania wielu usług w ramach jednej usługi Windows ani nie planuje się wdrożyć tę funkcjonalność. Monitorowanie i zarządzanie tymi usługami nie jest możliwe przy użyciu istniejących narzędzi, które są jednym z głównych czynników napędzających tę decyzję.

9

Topshelf nie obsługuje już tego, ale możliwym obejściem byłoby zaimplementowanie klasy do uruchomienia wielu usług.

Przykład:

// ServiceManager is used to start and stop multiple services 
hostConfigurator.Service<ServiceManager>(s => 
{ 
     s.ConstructUsingNinject(); // service1 and service2 injected into ServiceManager 
     s.WhenStarted(tc => tc.Start()); 
     s.WhenStopped(tc => tc.Stop()); 
}); 

Klasa ServiceManager wtedy wystarczy uruchomić i zatrzymać wielu usług.

public class ServiceManager 
{ 
    private readonly Service1 service1; 
    private readonly Service2 service2; 

    public ServiceManager(Service1 service1, Service2 service2) 
    { 
     this.service1= service1; 
     this.service2= service2; 
    } 

    public void Start() 
    { 
     service1.Start(); 
     service2.Start(); 
    } 

    public void Stop() 
    { 
     service1.Stop(); 
     service2.Stop(); 
    } 
} 
Powiązane problemy