Choosing the message type
While Channels are used to establish a pipeline between client and server message objects are resposible for encoding all required information before it can be transmitted trough the cahnnel and decoding it back. So the message must match for a client-server applications pair to function, as well as channel.
Remoting SDK provides no implementation divercity of classes implementing the same messaging protocol, the choice of the messages is determined by the usage scenario. Needless to say that implementations of the same messaging protocol across different platforms are fully compatible. Let's take a close look at possible use cases. Also check the implementation availability for different editions.
Message Use Cases
RemObjects-only Environment
Both the client and the server are applications built with Remoting SDK or Data Abstract, no third party access required. The best choice in this case is BinMessage, RO's proprietary messaging format. It is quite traffic-efficient and supports message compression for large messages. Notice: currently this is the only messaging protocol supporting Callback events.
Using TCP Channel or Super channels ends up with RemObjects-only environment because no third party applications are expected to use those communication protocols. The only exception is Remoting SDK for JavaScript use which may require JSON Messaging.
Third Party Access
Either client application needs to access third party servers or RemObjects-based server needs to be accessible with third party clients. In this case common messaging protocols have be used, choose one depending on your needs:
- SOAP Message - the most complex but the most flexible protocol,
XML
-based, has a number of options to configure. Beware of significant traffic overhead and somewhat limited SOAP specification support. - XML-RPC Message - it is
XML
-based as well but a way simpler in the cost of flexibility. - JSON Message - a simple text based protocol, despite it's simplicity it is capable of transferring complex data structures. Callback events support for this protocol is being developed.
- PostMessage - is a simple text-based messaging format that is compatible with the way HTML Forms are posted back to the server via HTTP. Mainly used for debugging purposes.
Smart Services
The Smart Services functionality for Remoting SDK servers allows simultaneous use of the efficient BinMessage protocol for Remoting SDK based clients and provide a compatible common protocol for third party ones. Actually it is not a dilemma which message to prefer: use any number of those together. This functionality mainly targets HTTP Channels but can be used with TCP ones with Server MultiMessage if necessary.
More Reading
- Messages overview
- BinMessage - available in all editions
- JSON Message - currently not available in Cocoa and Java editions
- SOAP Message - currently not available in Java and JavaScript editions
- XML-RPC Message - Delphi and .NET only
- PostMessage - Delphi and .NET only