Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mac (or c++) connection to binary WCF

I've got a WCF service being hosted using TCP/IP (netTcpBinding):

var baseWcfAddress = getWcfBaseUri();
host = new ServiceHost(wcfSingleton, baseWcfAddress);

var throttlingBehavior = new System.ServiceModel.Description.ServiceThrottlingBehavior();
throttlingBehavior.MaxConcurrentCalls = Int32.MaxValue;
throttlingBehavior.MaxConcurrentInstances = Int32.MaxValue;
throttlingBehavior.MaxConcurrentSessions = Int32.MaxValue;
host.Description.Behaviors.Add(throttlingBehavior);

host.Open();

I'd like to write a Mac client in Objective C or C++. Are there any existing classes that can facilitate the connection to my WCF service? If not, what are my steps & options to making it happen?

like image 802
bugfixr Avatar asked Jun 23 '11 19:06

bugfixr


1 Answers

Every binding starting with net is considered as not interoperable. Even pure .NET client without WCF is not able to communicate with the service without enormous effort by reimplementing whole binary protocol and encoding. You should probably start with:

  • .NET Message Framing protocol
  • .NET Binary Format: XML Data Structure

Your option for Mac is using Mono which should have support for netTcpBinding.

Your real option for Objective-C / C++ on Mac is creating interoperable WCF service exposing data over HTTP. If you are not the owner of the service you can create routing WCF service which will be bridge between interoperable HTTP and netTCP.

Edit:

One more thing - if the service uses netTcpBinding with default configuration it is secured with windows security. I expect that it can be another show stopper on Mac.

like image 97
Ladislav Mrnka Avatar answered Oct 21 '22 19:10

Ladislav Mrnka