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.
- Is this mex endpoint necessary for named pipes endpoint binding discovery?
- How should I add a service reference in the client app to the named pipe endpoint?
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!
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