2014-07-16 14 views
8

Một số dịch vụ windows có thể chia sẻ một quy trình. Trong C#, chúng sẽ bắt đầu là:Kiến trúc dịch vụ windows từ .Net quan điểm

ServiceBase.Run(new MyService1(), new MyService2()); 

Gọi phương thức chạy chặn chuỗi nơi main() thực thi. Đồng thời các sự kiện của dịch vụ được xử lý. Vậy họ bị xử tử ở đâu?

Họ có sử dụng Cuộc gọi thủ tục không đồng bộ trong quy trình "chính" không chỉ bị chặn mà còn ở chế độ chờ cảnh báo không? Nếu đúng như vậy, việc chia sẻ quy trình cho nhiều dịch vụ có nhược điểm về hiệu suất. Các trình xử lý có chạy trong các luồng riêng biệt không? Chúng được thực hiện bên ngoài quá trình có chứa các cuộc gọi Run()?

+2

Bạn đã hỏi 7 câu hỏi. Bạn sẽ phải pare nó xuống * một *. –

+2

@HansPassant Câu hỏi 2-5 chỉ là làm rõ đầu tiên. Tôi đã xóa 6, 7. – SerG

+2

http://msdn.microsoft.com/en-us/library/windows/desktop/ms685967%28v=vs.85%29.aspx –

Trả lời

0

Trong Windows, nhiều dịch vụ có thể chia sẻ một quy trình đơn lẻ bằng cách sử dụng loại dịch vụ SERVICE_WIN32_SHARE_PROCESS. .NET phải sử dụng loại dịch vụ này để đăng ký nhiều dịch vụ trong một tiến trình trên Windows.

Mọi dịch vụ đã đăng ký đều có tên và địa chỉ điểm nhập gốc được đại diện bởi cấu trúc SERVICE_TABLE_ENTRY. .NET sẽ xây dựng một SERVICE_TABLE_ENTRY cho mỗi dịch vụ được chuyển đến phương thức ServiceBase.Run và gọi hàm StartServiceCtrlDispatcher với các thông tin này.

Để nhận thông báo về trạng thái dịch vụ, điểm nhập cảnh (ServiceMain khi được triển khai bởi ServiceBase lớp) phải gọi RegisterServiceCtrlHandlerEx để nhận thông báo. Các thông báo này được gửi bằng APC. Một lưu ý phụ, API NotifyServiceStatusChange cũng sử dụng APC.

0

Điều bạn có thể làm sau đây là kiến ​​trúc dịch vụ cửa sổ và cách các ứng dụng dịch vụ được tích hợp trong chúng.

Hiện đã là một bài viết rất tốt về chủ đề đó trong MSDN, which can be found here.

Nó không chỉ giải thích như thế nào Windows tương tác với các dịch vụ, cách thức hoạt động cơ sở dữ liệu dịch vụ (ít nhất là một phần).

Bài viết cũng giải thích cách dịch vụ hệ điều hành hoạt động và đưa ra một số gợi ý về dịch vụ lưu trữ trong IIS (dịch vụ thông tin Internet).

Các vấn đề liên quan