2013-02-20 15 views
5

diyor ki:o TopShelf birer konsol uygulaması çoklu servisleri başlatmak mümkün mü? TosShelf olarak

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

sürüm 3.x itibariyle ben TopShelf yeni sürümü nasıl entegre anlamaya ihtiyacımız

Soru:. mümkün mü başlatmak için TopShelf kullanarak tek konsol uygulaması birden fazla ayrı hizmetler? Nasıl bir tek pencere hizmetinde birden fazla hizmet barındırmak için bir yöntem olmadığı an itibariyle?

+0

Ben Nuget paket birden çok hizmet işlemek için ekleyebilirsiniz gidecekseniz düşünüyorum ama "Bu özellik i –

+0

harika olurdu düşünmek topshelf.something, başımın üstü kapalı adını hatırlayamıyorum büyük olasılıkla nuget üzerine bir eklenti şeklinde geri dönecek. " belki daha yapmadılar mı? i gerçekten 'yükleyin-paket topshelf -version sadece kütüphanenin ver öncesi 3.0 kapmak istiyorum belki Nuget üzgün – pencilCake

+0

:) eğer –

cevap

1

Bunu başarmak ne de getirecek planlar var olabilir Bu işlevselliği uygulayın. İzleme ve bu hizmetleri yönetmek bu karar için birincil sürücüleri biridir mevcut araçları ile mümkün değildir.

9

Topshelf artık bu destekler, ancak olası bir eser etrafında birden hizmetlerini başlatmak için bir sınıf uygulamak olacaktır.

Örnek:

// 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()); 
}); 

ServiceManager sınıfı sonra sadece başlangıç ​​ve birden fazla hizmet dururdu.

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(); 
    } 
} 
İlgili konular