Expose a WCF Service through a Named Pipes binding

ε祈祈猫儿з 提交于 2019-11-26 16:28:20

问题


Intro:

I successfully implemented a WCF Service hosted in a Windows Service a few days ago. The community here at StackOverflow helped me with the WSDL exposure here. I thank you once again. However recently I found out that there is another potential client for this service this time located on the same machine as the service and this lead me to think I should add another endpoint with the namedPipesBinding.

Named pipes seem to be the best solution for intra-machine communication as far as I am concerned. Please correct me if this is wrong.

Problem:

I need to expose another endpoint for the same service/contract but this time using a netNamedPipeBinding. However I really don't understand how do I can then add a service reference from a client. Foolishly after adding

<endpoint address="net.pipe://localhost/OfficeService"
          binding="netNamedPipeBinding"
          contract="netBridge.Development.OfficeService.IWordService"
          bindingConfiguration="localBinding" />

I have tried to add a service reference in a Windows Forms Application located on the same machine typing the net.pipe://.... url. It didn't work. I must mention I have removed the mex (MetaData Exchange) endpoint earlier because I considered it not necessary.

  1. Is this mex endpoint necessary for named pipes endpoint binding discovery?
  2. How should I add a service reference in the client app to the named pipe endpoint?

回答1:


Your endpoint looks fine, although I'm curious about what's in localBinding...

Sounds like the easiest option is to just change the endpoint configuration on the named pipes client to match your service endpoint. The client shouldn't care as long as it's the only endpoint in the clients config file. Otherwise you'll have to add names to your endpoints and have the client pick a specific one when you new-up the proxy object.

Good luck!




回答2:


the mex endpoint is necessary during development as it provides an http location where the wsdl is built. the wsdl describes to the client how to communicate with the server through named pipes, or TCP/IP, or anything else. once the client app has built the proxy to the named pipes binding and set up the configuration, the mex endpoint is no longer necessary. hence, the mex endpoint can be removed prior to deployment through the environments if desired.



来源:https://stackoverflow.com/questions/184878/expose-a-wcf-service-through-a-named-pipes-binding

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!