2011-05-06 3 views
3

Windows 서비스가 실행되는 동안 설정을 어떻게 변경합니까?Windows 서비스 실행과 상호 작용합니까?

한 디렉터리에서 다른 디렉터리로 파일을 처리한다고 가정 해 보겠습니다. 다음 파일 (서비스가 실행되는 동안)에 대한 출력 및 작업을 선언 할 수 있기를 바랍니다. 웹 사이트 (SQL 테이블 또는 XML/TXT 파일)를 통해 원격으로 편집 할 수 있다면 완벽 할 것입니다.

서비스를 다시 시작하지 않고도 가능한가요? 모든 파일 읽기 작업에 대해 ""서비스를 작성하고 설정 파일에서 출력 할 수 있습니까?

저는 이제 Windows Communication Foundation을 피하고 싶습니다.

+0

WCF를 피하기 위해 부끄러운 일이 있습니다. 그것은 서비스와의 풍부한 의사 소통을 거의하지 않을 것입니다. –

답변

3

당신은 또한 Windows 서비스를 썼습니다 가정하면, 서비스에 사용자 지정 명령을 보낼 수 있습니다. 컨트롤러 쪽에서는 ServiceController.ExecuteCommand()을 사용하여 명령을 보냅니다. 서비스 클래스에서 ServiceBase.OnCustomCommand()을 대체하여 명령을 처리합니다.

그러나 이것은 행동을 유발하는 데 도움이됩니다. 외부 메소드 (예 : 공유 구성 파일)를 사용하여 작업의 세부 사항을 전달해야합니다.

+0

+1. – Phil

2

yosh - 제안한 두 가지 옵션이 작동하면 폴더를 처리하기 전에 서비스에서 settings.xml 파일을 반복적으로 읽을 수 있습니다. 서비스를 다시 시작하지 않고도 원격 조정할 수 있습니다.

+0

파일 시스템 폴링? – Phil

1

많은 옵션이 있습니다. COM, 소켓, 명명 된 파이프, 공유 메모리와 같은 많은 프로세스 간 통신 메커니즘을 사용하여 관리 인터페이스에 "설정 다시 읽기"명령을 제공 할 수 있습니다.

또는 서비스에서 구성 파일 변경을 감시하도록 설정할 수도 있습니다. Win32 API에서 관련 함수는 FindFirstChangeNotification()입니다. 관리되는 등가물이 있는지 확실하지 않은 경우 - 최악의 경우 - P/Invoke를 사용하십시오.

0

데이터베이스를 사용하여 정보를 저장하고 검색,하지만 당신은 이미 데이터베이스를 사용하지 않는이

개인적으로 추천 할 것 등을, 새 테이블을 설정에 연결하는 잔인한 수 있습니다 * .config로 재생하고 OpenExeConfiguration을 사용하십시오. 또한 해당 설정에 액세스/수정할 수있는 메소드 몇 개를 노출 한 다음 값이 필요할 때마다 사용하십시오.

마지막으로 처리 할 시간이되었을 때 쿼리 할 수있는 값을 저장하고 검색하는 값을 가진 XML 파일을 가질 수 있습니다 (심지어 XmlSerializer을 활용할 수도 있음).

관련 문제