Service Bus provides both Brokered and Relayed messaging models. With using Topics/Queues you are essentially sending and receiving message to/from the broker. So you can use APIs/protocols that the broker supports. As an example you can use the NetMessagingBinding
from your service/client to send and receive messages through the queue. There is no contract here other than what you put in the BrokeredMessage
body and properties values. The application on either end can decode/decipher that info as needed.
In the case of Relayed messaging however you are making a end-to-end connection between the client and the service with Service Bus serving as the proxy in-between for auth, location-transparency and even load-balancing. So here you can use from a variety of RelayBindings
such as NetTcpRelayBinding
or webHttpRelayBinding
but then both the client and the service need to be available at the same time. Here you need the service and clients to be using the same contract.