2013-02-20 29 views
5

Như TosShelf nói:Có thể khởi động nhiều dịch vụ từ một ứng dụng Console bằng Topshelf không?

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

như các phiên bản 3.x tôi cần phải tìm ra cách để tích hợp phiên bản mới của Topshelf

Câu hỏi:. Có thể bắt đầu nhiều dịch vụ riêng biệt từ một Ứng dụng Bảng điều khiển bằng cách sử dụng Topshelf? Làm cách nào để đạt được điều đó?

+0

Tôi nghĩ theres một gói NuGet bạn có thể thêm để xử lý nhiều dịch vụ nhưng tôi không thể nhớ tên ra khỏi đỉnh đầu của tôi, tôi nghĩ rằng topshelf.something –

+0

Sẽ là tuyệt vời nếu bạn có thể :) – pencilCake

+0

"Tính năng này rất có thể sẽ trở lại dưới hình thức thêm trên nuget. " có lẽ họ chưa thực hiện nó? tôi không thể nhìn thấy một trong nuget xin lỗi –

Trả lời

1

Hiện tại không có phương pháp lưu trữ nhiều dịch vụ trong một dịch vụ cửa sổ đơn lẻ. thực hiện chức năng này. Việc giám sát và quản lý các dịch vụ này là không thể với các công cụ hiện có là một trong những trình điều khiển chính cho quyết định này.

9

Topshelf không còn hỗ trợ điều này nhưng một công việc có thể xung quanh sẽ là triển khai một lớp để bắt đầu nhiều dịch vụ.

Ví dụ:

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

Lớp ServiceManager sau đó sẽ chỉ bắt đầu và ngừng nhiều dịch vụ.

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(); 
    } 
} 
Các vấn đề liên quan