2011-09-12 4 views
5

WCF 및 구성 (프로그래밍 방식과 app.config를 통한 방식 모두)에서 사용할 수있는 다양한 리소스가 있습니다. 그러나이 구성의 실질적인 관리, 특히 프로덕션 환경에서 좋은 리소스를 보지 못했습니다.프로덕션 환경에서 WCF 클라이언트를 어떻게 구성합니까?

WCF는 코드를 다시 컴파일 할 필요없이 다양한 설정을 조정할 수 있도록 프레임 워크는 app.config 파일을 통해 구성 할 수 있다는 점에서 강력합니다.

은 WCF 클라이언트를 설치 , 어떻게 당신은 쉽게 올바른 서버를 가리 키도록 클라이언트를 구성합니까? 이것은 아마도 설치 후 구성 할 수있는 가장 일반적인 일입니다. 일부 컨텍스트에서는 서버 구성 요소와 클라이언트 구성 요소가있는 제품을 제공한다고 가정합니다. 고객은 어디서나 설치할 수 있습니다. xml 파일은 개발 후 구성에 강력하지만 사용자 친화적 인 것은 아닙니다. 구성 파일에 수십 개의 끝점이있을 수 있으므로 관리자 나 최종 사용자가 수동으로 모든 항목을 변경해야합니까? 프로그래밍 방식으로 모든 것을 처리 할 수 ​​있다는 것을 알고 있지만 본질적으로 모든 out-of-the-box 배관을 다시 구현하고 있습니다.

위의 질문에서보다 일반적인 것은 다음과 같습니다. 프레임 워크에서 제공하는 것을 다시 구현하지 않고 기본 UI를 통해 WCF 구성을 단순화하려면 어떻게해야합니까?

+1

정말로 config 파일을 좋아하지 않는다면이 app.config 위에 config-app을 작성할 수 있습니다. 결국 파싱하고 쓰는 것이 어렵지 않습니다. – Carsten

+1

기업 규모에 있다면 [SO-AWARE] (http : //www.tellagostudios.com/products/so-aware % E2 % 84 % A2) –

+0

@Carsten 저는 설정 앱이 조금 과잉이라고 생각합니다. 버퍼 크기 등의 낮은 수준의 설정을 조정하면 문제를 해결할 수있는 희소 한 조정 사항이됩니다. 서비스를 호스팅하는 서버 이름을 변경하는 것만 큼 간단하지만 훨씬 더 일반적입니다. – Travis

답변

3

당신은 당신이 단순히 일부 구성 값을 설정 일부 설치을 사용합니다. Visual Studio의 일부로 제공된 설치 프로젝트 또는 더 강력하고 (훨씬 복잡한) WiX을 확인하십시오. 인스톨러를 가지고 있지 않다면 이미 사용자가 모든 것을 수동으로 구성해야한다고 선택했습니다.

유일한 문제가 서비스 주소 인 경우 서비스 및 클라이언트를 단일 LAN에 배포하려는 경우 클라이언트가 네트워크에서 서비스를 찾을 수있는 WS-Discovery (available in WCF 4)를 추가 할 수도 있습니다.

+0

app.config 파일의 요소를 수동으로 교체해야하는 것은 지루하고 오류가 발생하는 것처럼 보입니다 (특히 설치 프로그램에서). 이 작업을 수행하는 방법이나 런타임에 수행하는 방법에 대한 제안 사항이 있습니까? 디스커버리는 좋은 시나리오이지만, 시나리오에서는 실행 가능하지 않습니다 (WAN상의 경우). – Travis

+0

런타임에이 작업을 수행하려면 기본 응용 프로그램의 일부 또는 기본 응용 프로그램과 함께 제공되는 두 번째 응용 프로그램의 구성 도구를 직접 작성해야합니다. 표준 WCF 구성 도구가 응용 프로그램과 함께 제공 될 수 있다고 생각하지 않습니다. –

+0

어쨌든 표준 WCF 구성 도구를 출하하고 싶지는 않을 것입니다. 이는 최종 사용자 입장에서 볼 때 악몽 일 것입니다. 본질적으로 런타임시 app.config 파일의 클라이언트 구성에 대한 엔드 포인트 호스트 이름을 바꿀뿐입니다. 그것의 소리에서 이것을하는 붙박이 방법이 없다. 채널을 만들 때 EndpointAddress 속성을 재정의하는 방법을 찾고 있습니다. 이것이 최선의 방법이라고 생각합니다. – Travis

1

이러한 설정을 편집하려면 멋진 UI를 만들고 싶다면 해당 UI의 사용자 입력을 어딘가에 저장해야하며 클라이언트에서 서비스 호출을 만들거나 설정해야합니다. 서버에서 호스팅 서비스. 개인적으로 데이터베이스에 저장하고 코드 접근 방식으로 런타임시 WCF 끝점을 구성하는 데이 코드를 사용합니다.

이 또한 몇 가지 장점을 가지고

가 모든 DB를 백업, 원격 연결 및 검사로 백업, 위험 업데이트에 등 파일을 덮어 없습니다. 당신의 설정/응용 프로그램이 다음 구성 파일도 확인하고 아마도 유일한 방법에는 데이터베이스가없는 경우

, 나는 어쨌든 레지스트리에서 아무것도 저장하지 않을 것입니다. 당신은 사용자 친화적 인 설치를 원하는 경우

+0

제 질문은 설정을 프롬프트/저장하는 방법과 런타임에 WCF에서 읽은 구성을 수정하는 방법에 대해 자세히 설명하지 않습니다. 즉, 설정을 저장 했으므로 WCF를 인식하는 방법을 배웁니다. – Travis

0

settings framework을 사용하여 엔드 포인트 주소를 저장할 수 있습니다. 설정을 쉽게 읽고 저장할 수 있으며 사용 권한에 대해 걱정할 필요가 없도록 %APPDATA% 위치에 저장됩니다. 사용자가 서버 이름을 입력 할 수있는 작은 구성 UI가 필요합니다. 서버에 간단한 Hello 서비스를 추가하여 해당 구성의 유효성을 검사하고 해당 UI에서 해당 서비스에 도달하려고 시도하십시오. 따라서 서버 주소가 맞으면 즉각적인 피드백을 사용자에게 줄 수 있습니다.

다른 옵션은 검색 프로토콜을 구현하는 것입니다. 관련 질문은 here입니다.

+0

제 질문은 설정을 프롬프트/저장하는 방법과 런타임에 WCF에서 읽는 구성을 수정하는 방법에 대해 자세히 설명하지 않습니다. 즉, 설정을 저장 했으므로 WCF를 인식하는 방법에 대해 설명합니다. – Travis

관련 문제