문제

나는 Windows 서비스 그리고 나는 다른 사람들을 다루는 가장 좋은 방법이 무엇인지 궁금했습니다. 설정 (사용자 및 응용 프로그램 수준). 문제는, 나는 사용 가능한 모든 옵션에 완전히 익숙하지 않기 때문에 원칙적으로 .NET 자신의 것을 선호합니다. 시스템 설정 (configurationManager.Refreshsection ( "AppSettings")은 유혹적으로 보이지만, 나는 여전히 전체 그림 주위에 머리를 감싸지 못하고 있습니다. 즉, 어디에 있습니까? app.config 주어진 서비스에 저장된 파일.

그래서 여러분을위한 내 질문은, 주어진 Windows 서비스에 대한 사용자 편이 구성 세부 정보를 저장하는 가장 좋은 방법은 무엇입니까? 피드백에 미리 감사드립니다.

도움이 되었습니까?

해결책

흠 ... '사용자 편집 가능한'Windows 서비스의 구성 설정 ...

명심해야 할 것은 Windows 서비스가 백그라운드에서 실행되므로 사용자가 상호 작용할 수있는 직접적인 방법이 없다는 것입니다. 내가이를 해결하기 위해 한 일은 WCF를 사용하여 Windows 서비스와 통신하는 별도의 프론트 엔드 애플리케이션을 만드는 것입니다. 이러한 방식으로 '사용자 편집 가능한'구성 설정은 Windows 서비스가 아닌 프론트 엔드 애플리케이션 설정의 일부로 지속됩니다. 설정은 사용자가 변경할 때 일련의 WCF 메시지를 사용하여 Windows 서비스에 간단히 전달됩니다.

필자의 경우 프론트 엔드 애플리케이션에 노트를 추가하고 논리를 추가하여 최소화 될 때 앱을 작업 표시 줄에서 제거 할 수 있도록 논리를 추가했습니다. 작업 관리자가 '최소화 될 때 숨기기'옵션을 켜면 동일한 방식으로 작동합니다. 이를 통해 사용자는 완전히 독립적 인 두 가지 프로세스이지만 서비스와 직접 상호 작용하는 환상을 제공합니다.

편집하다:

귀하의 의견에 따라 WCF는 단순히 메시징 API입니다. 메시지는 일반적으로 DataContract 및 Datamember 속성으로 장식 된 클래스로 정의됩니다. ServiceContract 및 OperationContract 속성은 WCF 서비스 인터페이스를 정의합니다. 이들이 정의되면 Windows 서비스 내에서 WCF 서비스를 작성하고 호스팅하는 것이 쉽습니다. Visual Studio 2008이 있다면 VS2008이 자동화 할 수있는 클라이언트 측 프록시를 만드는 것은 스냅입니다.

이 모든 것이 완료되면 프론트 엔드 앱은 단순히 클라이언트 측 프록시 인스턴스를 인스턴스화하고 해당 프록시의 메소드를 호출합니다. 각 방법이 호출되면 WCF 프레임 워크는 WCF 서비스에 메시지를 직렬화하고 메시지를 보내도록 관리합니다. 그런 다음 예외를 포함한 모든 응답을 프록시로 돌려옵니다. 클라이언트 측 (예 : 프론트 엔드 앱)의 관점에서 단순히 함수를 호출했습니다. 그것이 WCF의 아름다움입니다! 연결을 관리 할 필요가없는 경우를 제외하고는 소켓 프로그래밍과 매우 유사합니다. WCF는 당신을 위해 모든 배관을 처리합니다.

물론,이 모든 것은 최소한 .NET 3.0을 사용할 수 있다고 가정합니다. Visual Studio 2008을 사용하고 있다면 모양이 좋습니다. 다음은 시작하는 데 도움이되는 몇 가지 자습서입니다.

기본 개념이 다운되면 Juval Lowy 's를 보는 것이 좋습니다. 웹 사이트. 조금 더 진보적이지만보기에 매우 도움이되는 무료 WCF 관련 다운로드가 많이 있습니다. 너무 멀리 파고 들기 전에 WCF 개념을 먼저 이해하십시오.

다시 말하지만, 이것의 요점은 사용자가 Windows 서비스의 다양한 측면을 구성하도록 돕는 것입니다. 이 작업을 수행하기 위해 프론트 엔드 GUI를 제공하지 않으면 App.Config 파일 자체를 수동으로 조작하는 것이 어떻게 부족한 지 잘 모르겠습니다.

도움이 되었기를 바랍니다.

다른 팁

구성 매개 변수를 저장하기 위해 단일 이름/값 사전이 필요한 경우 App.Config가 가장 간단한 답변입니다. 솔루션에서는 "app.config"라고 불리지만 빌드되면 실행 파일 + ".config"의 이름으로 이름이 바뀌 었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top