2009-12-21 85 views
5

Tôi đã thấy một số ứng dụng chạy dưới dạng dịch vụ cửa sổ nhưng vẫn có thể cung cấp GUI cho phép người dùng xem những gì đang diễn ra.Windows Service Plus GUI/C#

Ví dụ: chúng tôi có dịch vụ cửa sổ tạo báo cáo. Có một số thống kê mà quản trị viên muốn xem, chẳng hạn như số lượng báo cáo được xếp hàng đợi, số lượng ram được sử dụng, thời gian tạo trung bình, v.v.

Điều chúng tôi muốn làm là cung cấp cách để quản trị viên thấy điều này - chẳng hạn như ứng dụng có thể kết nối với dịch vụ cửa sổ để thu thập và hiển thị thông tin này ... hoặc có thể cách ứng dụng tự cung cấp GUI của riêng nó và hiển thị nó khi được yêu cầu. Ngay bây giờ, điều duy nhất ứng dụng tạo ra một tệp nhật ký.

Có cách nào để thực hiện việc này không?

Trả lời

8

Một số.

  1. Có một số loại thành phần gắn vào dịch vụ cửa sổ của bạn và gửi thông tin đến ứng dụng khác thông qua truy cập từ xa. Nếu bạn có một thùng chứa IoC, một người sử dụng trang trí thông minh có thể làm điều đó
  2. Sử dụng xe buýt dịch vụ, MSMQ, WCF, Growl hoặc một cái gì đó tương tự để phát sóng thông tin thú vị. Ứng dụng chỉ cần biết cách móc vào.
  3. Hiển thị điểm cuối HTTP hoặc thứ gì đó mà ai đó có thể kết nối và tải xuống thông tin trên dịch vụ cửa sổ
  4. Hoặc đơn giản là tạo một ứng dụng WinForms một trang đọc tệp nhật ký. thường xuyên và hiển thị kết quả thú vị.

(Chú ý rằng người cuối cùng đến nay là đơn giản nhất -. Gợi ý gợi ý, làm điều đó)

+0

Cảm ơn - Tôi đã thiết lập lại từ xa. Nó đã kết thúc được dễ dàng hơn rất nhiều so với tùy chọn # 4 sẽ có được ... phân tích cú pháp các tập tin văn bản hút :) – bugfixr

0

Dịch vụ lý tưởng hoàn toàn tách biệt với Giao diện người dùng vì nhiều lý do tôi sẽ không tham gia.

Tuy nhiên, bạn có thể sử dụng một số cách thức IPC để xem thông tin như thế này. Đề xuất của tôi là sử dụng tính năng Remoting để yêu cầu dữ liệu cần thiết từ dịch vụ và sau đó xây dựng bất kỳ báo cáo hoặc biểu đồ nào khi cần thiết vào một ứng dụng riêng biệt.

+0

Tôi muốn đề xuất WCF thay vì Remoting. Từ một quan điểm thiết kế, Remoting được kết hợp chặt chẽ và có thể gây ra vấn đề versioning (cũng dễ dàng hơn nhiều để hạn chế truy cập vào các dịch vụ WCF hơn các điểm cuối remoting); từ quan điểm công nghệ, Remoting là một công nghệ khờ dại, thay thế bởi WCF. – itowlson

0

Dịch vụ không được phép thực hiện cuộc gọi UI API (trừ một hình thức cụ thể của hộp thông báo). Vì vậy, các dịch vụ dường như có giao diện wser thực ra là hai quy trình. Quá trình dịch vụ đang giao tiếp với một Windows APP tiêu chuẩn bằng cách sử dụng một số loại backchannel độc quyền. Có thể là một đường ống có tên, một ổ cắm hoặc một bộ nhớ được chia sẻ có tên.

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