I have scenario where I need to host a web service (WCF) on Azure Service Bus and expose it to be consumed by cross platform clients (.NET or java or any other). What different protocols can cater this scenario? I was considering a pure XML format with a predefined xsd or REST or SOAP or even a JSON data pack. I am considering a basicHttpRelayBinding to expose the contract. Please advice.
REST gives you the ultimate portability, because the URLs are very intuitive to debug and it is easy to create such interfaces on any platform. JSON is basically an optional extension of this route to handle more complex types in a unified way; of course, REST clients work best when the interfaces are designed to be as simple as possible, with or without JSON.
SOAP is an elegant possibility for interfacing to Java, assuming you use the HTTP binding as opposed to the TCP binding. However, you may run into platforms where SOAP toolkits are not available or reliable and all the beauty of SOAP will start working against you.