...
Streaming/ Continuous Response
The protocol should be able to send support the server sending a partial or chunked response to the client in order to reduce the need for large buffers. It should have the ability This allows users to implement the Observer pattern . so that one party is notified of a state change in the other.
Framing
If an Object is large then client/server should be able to send that object in chunks.
...
The new protocol implementation It should perform have similar performance to the current protocol. That is, applications shouldn't take a performance hit if they switch from the old client - APIs to those based on the new protocol.
...
Should we need to add features or functionality to the client, it should be easy to add create a new version of the protocol, and allows both allow multiple versions to operate with different clients on a single server.
Authentication/Security
It must be possible to transmit the protocol over TLS. We will also support Diffie-Hellman key exchange; this should be supported (however, this is mostly just means a matter of exchanging some bytes).