2009-12-21 2 views
5

Windows 서비스로 실행되는 일부 응용 프로그램을 보았지만 사용자가 실제로 어떤 일이 진행되고 있는지 볼 수있는 GUI를 제공 할 수 있습니다.Windows Service Plus GUI/C#

예를 들어 보고서를 작성하는 Windows 서비스가 있습니다. 얼마나 많은 보고서가 대기 중인지, 사용중인 RAM의 양, 평균 빌드 시간 등과 같이 관리자가보고 싶어하는 통계가 많이 있습니다.

우리가 원하는 것은 관리자가이 정보를 수집하고 표시하기 위해 창 서비스에 연결할 수있는 응용 프로그램 또는 응용 프로그램 자체가 자체 GUI를 제공하고 요청시 표시 할 수있는 방법과 같은 응용 프로그램을 볼 수 있습니다. 지금은 앱이 로그 파일을 만드는 유일한 방법입니다.

이 방법이 있습니까?

답변

8

몇 가지.

  1. Windows 서비스에 연결하고 원격을 통해 다른 응용 프로그램에 정보를 보내는 일종의 구성 요소가 있습니까? IoC 컨테이너가 있으면 장식자를 영리하게 사용할 수 있습니다.
  2. 서비스 버스, MSMQ, WCF, Growl 등을 사용하여 흥미로운 정보를 브로드 캐스트합니다. 응용 프로그램은 연결 방법을 알아야합니다.
  3. 누군가가 Windows 서비스에 연결하여 정보를 다운로드 할 수있는 HTTP 끝점 또는 기타를 노출합니다.
  4. 또는 단순히 모든 로그 파일을 읽는 단일 페이지 WinForms 응용 프로그램을 만듭니다 자주 흥미로운 결과를 표시합니다.

(즉, 마지막 하나는 지금까지 간단한 것입니다주의 -. 힌트 힌트, 그렇게)

+0

감사합니다. 나는 리모팅을 설정했다. 그것은 옵션 # 4보다 훨씬 쉬워졌습니다 ... 텍스트 파일을 파싱합니다 :) – bugfixr

0

서비스가 사용자 인터페이스와 완전히 분리되어있는 것이 이상적입니다.

그러나 IPC를 사용하면 이와 같은 정보를 볼 수 있습니다. 내 추천은 Remoting을 사용하여 서비스에서 필요한 데이터를 요청한 다음 필요에 따라 보고서 나 그래프를 별도의 응용 프로그램에 구축하는 것입니다.

+0

Remoting보다는 WCF를 제안합니다. 디자인 관점에서 볼 때 Remoting은 밀접하게 결합되어 버전 문제를 일으킬 수 있습니다 (또한 원격 끝점보다 WCF 서비스에 대한 액세스를 훨씬 쉽게 제한 할 수 있음). 기술 관점에서 볼 때 Remoting은 WCF가 대신하는 기술이 아닙니다. – itowlson

0

서비스는 UI API를 호출 할 수 없습니다 (메시지 박스의 특정 형태는 제외). 따라서 wser 인터페이스가있는 것으로 보이는 서비스는 실제로 두 가지 프로세스입니다. 서비스 프로세스는 독점적 인 백 채널을 사용하는 표준 Windows APP와 통신합니다. 명명 된 파이프, 소켓 또는 명명 된 공유 메모리의 묶음 일 수 있습니다.