2009-10-22 2 views
0

나는 C#에서 자동으로 시작되고 A-okay를 실행하는 아주 간단한 Windows 서비스를 작성했습니다. 나는 서비스가 명령 행 입력을 받아들이도록하는 가장 좋은 방법을 궁금해했다. 그것은 항상 같은 사용자 (admin)로부터 왔을 것이고 서비스 자체는 완전히 신뢰할 수있다 (LocalSystem).C#으로 작성된 표준 Windows 서비스의 명령 줄 입력을 받아들이는 간단한 방법은 무엇입니까?

디자인 패턴 용어에 대해 조금 알고 있습니다.이 간단한 서비스를 통역사 스타일의 패턴으로 포장해야합니까? 너무 복잡합니까? 프로그램의 진입 점을 통해이를 수행 할 수있는 방법이 있습니까? (만약 내가 그냥 문자열 [] args 걸릴 수있는 간단한 콘솔 애플 리케이션을하고있는 것처럼?)

기본적으로 콘솔을 통해 발행 할 수있는 매우 구체적인 문법 (특정 명령)을 받아 들여야하며, 다양한 보안 문제를 피하기 위해).

설명이 필요한 경우 알려 주시면 제안 (또는 솔루션)을 보내 주셔서 감사합니다.

+0

일반적으로 서비스의 전체 POINT는 명령 줄 입력이 필요하지 않거나 필요하지 않습니다. 아마도 당신이하려는 일에 대해 좀 더 분명하다면 우리는 더 잘 도울 수 있습니다. – Berry

+0

명령 줄에서 호출 할 때 서비스로 실행되는 동일한 인스턴스와 상호 작용해야합니까? 아니면 완전히 독립적이며 독립된 인스턴스 일 수 있습니까? –

+0

베리 (Berry) - 서비스 자체는 기본적인 감시 장치이며, 몇 가지 프로그램을 계속 실행하는 역할 만합니다. 어떠한 이유로 든 종료되면 다시 시작됩니다. 이 작업은 다중 스레드 방식으로 수행됩니다. 그것은 이미 (권한 측면에서) 매우 강력하기 때문에, 실제로 실행하는 동안 의미있는 방식으로 로컬 라이 제이션을 수행 할 필요가 있습니다. 생각? 그리고 감사합니다. – asteroid

답변

1

콘솔 응용 프로그램에서 내 서비스가 변경 사항을 폴더를 모니터링하여 확인할 수있는 구성 파일을 수정하도록함으로써이 작업을 수행했습니다.

+0

좋은 생각이지만, 이것은 서비스 측면에서 구성 파일의 매개 변수를 점검하기 위해 많은 로직을 필요로한다고 상상해보십시오. 완전히 틀릴 수도 있습니다. 그래도 나는이 길을 가야 할 수도 있습니다. – asteroid

+0

글쎄, 논리를 두 곳 모두에 넣을 것이다. 즉, 콘솔 앱으로 형식을 엉망으로 만들지 않고 소비하는 서비스이므로 실행하는 동안 폭발하지 않는다. –

1

대신 프로젝트에 App.Config 파일을 추가 할 수 있습니다. Windows 서비스는 yourapp.exe.config와 같은 폴더에서 app.config에 액세스 할 수 있습니다.

.net의 구성은 문법 및 사용자 정의 이점과 관련하여 체계적으로 구성됩니다.

App.config를 사용하면 설치 설정을 변경하지 않아도됩니다.

당신이 설명한 것을에서
1

, 이것은 당신이 찾고있는 무엇 :

Create and communicate with an Unattended Windows Service using .NET

OnCustomCommand 이벤트는 응용 프로그램이 정수 값을 전달하여 실행중인 서비스와 상호 작용할 수 있습니다. 서비스가 ServiceController의 ExecuteCommand를 방법을 사용하여 당신이 그것에 정수 명령을 보낼 시작되면

...

.

+0

정말 유용하지만 정수 수용 만이이 경우에 그렇게 잘 작동하지 않을 것입니다. – asteroid

관련 문제