2010-04-03 6 views
1

실행중인 서비스에서 프로그래밍 방식으로 계약을 체결 할 수있는 방법이 있습니까? 클라이언트 측의 참조 된 계약에서 실행중인 서비스의 계약을 비교하고 싶습니다.계약서 받기

예를 들어 Service1의 두 인스턴스가 서로 다른 구현이있는 다른 시스템에서 실행되고 있습니다. 둘 다 IService1이라는 계약을 갖고 있지만 구현이 다릅니다. IService1 (첫 번째 인스턴스)에 대한 참조가있는 Console1이 있습니다. Console1에는 2 개의 엔드 포인트 주소 모음이 있습니다. Console1은 실행중인 서비스 중 그가 사용하고있는 계약 (첫 번째 인스턴스)에 대한 올바른 서비스인지 확인하려고합니다.

내가 여기서하고 싶은 것은 프로그래밍 방식으로 주소를 사용하는 서비스 계약을 맺고 내가 가진 참조 된 계약과 비교하는 것입니다.

답변

1

서비스에서 메타 데이터를 노출하는 경우 가능합니다. 정확히 어떻게 사용되는 바인딩에 따라 달라지며, 일반적인 http 바인딩 인 경우 http://myserver/myservice.svc?WSDL을 사용할 수 있습니다. 계약을 비교하려면 일반적인 http API를 사용하여 WSDL을 다운로드 한 다음 저장된 WSDL과 비교해야합니다. 계약이 일치하지 않는

  • 경우, WCF 오류가 발생합니다 :

    또한 당신이 비교를 구현하기 전에 고려해야 할 생각 몇 가지가 있습니다.

  • 특정 네임 스페이스에 게시 된 특정 계약이 다른 버전에 존재해서는 안됩니다. 이것은 기술적 인 문제보다 일상적인 문제입니다. 동일한 계약이 다른 서비스에 의해 구현되는 경우에는 계약 변경을위한 좋은 절차가 필요합니다.
+0

프로그래밍 방식으로이 작업을 수행하려면 어떻게해야합니까 (http : //myserver/myservice.svc? WSDL)? – Lance

+0

메타 데이터가 노출되면 어떻게 사용할 수 있습니까? – Lance