views:

7339

answers:

3

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?
+4  A: 

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!

James Bender
@James Bender : I will look tomorrow (01:11 AM here) at the config in the production environment and I will try to use the mex endpoint for discovery/add service reference. I will post further information about the config file and others. Thanks for the support ;)
Andrei Rinea
No problem. I would still use SVCUTIL to generate your deployment proxies. I've had .... "unpredictable" results with "Add Service Reference..." It's on my blog if you want to take a look (www.jamescbender.com)
James Bender
+2  A: 

This looks like it might be helpful:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1383464&amp;SiteID=1

Brian
+1  A: 

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.