명명 된 파이프 바인딩을 통해 WCF 서비스를 노출시킵니다
-
06-07-2019 - |
문제
소개 :
며칠 전에 Windows 서비스에서 호스팅 된 WCF 서비스를 성공적으로 구현했습니다. StackoverFlow의 커뮤니티가 저를 도왔습니다 여기서 WSDL 노출. 다시 한번 감사드립니다. 그러나 최근에 나는 이번 서비스에 대한 또 다른 잠재적 클라이언트가 서비스와 같은 기계에 위치하고 있음을 알게되었으며, 이로 인해 Pipesbinding이라는 이름의 다른 엔드 포인트를 추가해야한다고 생각합니다.
명명 된 파이프는 제가 염려하는 한 기계 내 통신을위한 최상의 솔루션 인 것 같습니다. 제발 이것이 잘못되면 나를 수정하십시오.
문제:
동일한 서비스/계약에 대해 다른 엔드 포인트를 노출시켜야하지만 이번에는 NetNamamePipeBinding을 사용합니다. 그러나 클라이언트의 서비스 참조를 추가 할 수있는 방법을 이해하지 못합니다. 어리석게도 추가 한 후
<endpoint address="net.pipe://localhost/OfficeService"
binding="netNamedPipeBinding"
contract="netBridge.Development.OfficeService.IWordService"
bindingConfiguration="localBinding" />
Net.pipe : // .... URL을 입력하는 동일한 기계에있는 Windows Forms 응용 프로그램에 서비스 참조를 추가하려고했습니다. 작동하지 않았습니다. 필요하지 않다고 생각했기 때문에 MEX (메타 데이터 교환) 엔드 포인트를 일찍 제거했다고 언급해야합니다.
- 이 MEX 엔드 포인트는 명명 된 파이프 엔드 포인트 바인딩 발견에 필요합니까?
- 클라이언트 앱에서 이름이 지정된 파이프 엔드 포인트에 서비스 참조를 추가해야합니까?
해결책
현지 교착 상태에 대해 궁금하지만, 당신의 엔드 포인트는 괜찮아 보인다 ...
가장 쉬운 옵션은 서비스 엔드 포인트와 일치하도록 지명 된 파이프 클라이언트의 엔드 포인트 구성 만 변경하는 것입니다. 클라이언트가 클라이언트 구성 파일에서 유일한 엔드 포인트 인 한 클라이언트는 신경 쓰지 않아야합니다. 그렇지 않으면 엔드 포인트에 이름을 추가하고 프록시 객체를 새로 올릴 때 클라이언트가 특정 이름을 선택하도록해야합니다.
행운을 빕니다!
다른 팁
MEX 종말점은 WSDL이 구축 된 HTTP 위치를 제공하므로 개발 중에 필요합니다. WSDL은 클라이언트가 명명 된 파이프, TCP/IP 또는 기타 항목을 통해 서버와 통신하는 방법을 클라이언트에게 설명합니다. 클라이언트 앱이 이름이 지정된 파이프 바인딩에 프록시를 구축하고 구성을 설정하면 MEX 엔드 포인트가 더 이상 필요하지 않습니다. 따라서 원하는 경우 환경을 통해 배포하기 전에 MEX 종말점을 제거 할 수 있습니다.