Wcf – Expose a WCF Service through a Named Pipes binding

named-pipesnetnamedpipebindingservice-discoverywcf

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?

Best Answer

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!

Related Topic