I try to use netTcpRelayBinding and azure service bus to make my service scalable. I need to use this binding both on server and client sides. Its implemented in Microsoft.ServiceBus.dll so I should deploy this .dll to clients. But it requests .NET framework Full Profile. But on client side can be only .NET framework Client Profile. And I'm absolutlly sure that installing Full Profile on client side is a bad idea. Is there any workaround?
The Service Bus client implemented in Microsoft.ServiceBus.dll has a dependency on a range of capabilities that are not available in the Client Profile, most notably the ability to host services is absent from the client profile, which is a requirement for the Relay to function. If the applications you want to install are ONLY clients, you can use the regular NetTcpBinding to talk to relay endpoints with two caveats:
a) You need to turn off Relay security using RelayClientAuthenticationType.None (see http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.servicebus.relayclientauthenticationtype.aspx) OR you need to acquire and add your own token, which is what the Service Bus assembly does for you and that's a bit complicated without that code and I don't think we have a public sample for that yet.
b) You need to specify two addresses on the ChannelFactory - the EndpointAddress needs to use the sb: prefix and the Via Uri needs to use the net.tcp: prefix