Differences - protocol binding
… over WebSocket
Criteria | Description |
---|---|
Programming language | Almost any Web oriented programming language, e.g. Java, JavaScript, .NET |
Connection paradigm | Connection-oriented with an always open and managed connection with only one-time handshake overhead for lowest latency and highest throughput. |
Channel security | WSS WebSocket over Transport Layer Security |
Message exchange pattern | non-blocking request - asynchronous response |
Authentication mechanism | ✔ User authentication using a JSON Web Token (JWT) issued by Suite Auth, Bosch-ID, Google, your custom OAuth2 provider. See Authenticate as a user ✔ Technical client authentication using a JSON Web Token (JWT) issued by Suite Auth, Bosch-ID, Google, or your custom OAuth2 authorization provider. See Authenticate as a technical client |
Equivalent available in open source Eclipse Ditto | The complete protocol is defined in Eclipse Ditto. |
Horizontal scaling | WebSockets do not allow horizontal scaling. Every connected WebSocket will receive all events and messages which it is allowed to receive depending on the provided authentication. |
… over AMQP
Criteria | Description |
---|---|
Programming language | Almost any programming language, as long as an AMQP client is available. |
Connection paradigm | Connection-oriented with a managed connection, which can be opened or closed on demand. |
Channel security | AMQPS AMQP over Transport Layer Security |
Message exchange pattern | non-blocking request - asynchronous response |
Authentication mechanism | ✔ User authentication (with username and password) |
Equivalent available in open source Eclipse Ditto | The complete protocol is defined in Eclipse Ditto. Additionally, for AMQP messages Ditto provides payload mapping functionality. (You can map incoming messages to Eclipse Ditto conform payload and vice versa.) |
Horizontal scaling | ✔ Can be scaled horizontally by configuring the client count of the connection. Messages and events will be dispatched by a round robin mechanism to the different clients. |
… over MQTT
Criteria | Description |
---|---|
Programming language | Almost any programming language, as long as an MQTT client is available. |
Connection paradigm | Connection-oriented with a managed connection, which can be opened or closed on demand. |
Channel security | SSL MQTT over Transport Layer Security |
Message exchange pattern | non-blocking request - asynchronous response |
Authentication mechanism | ✔ User authentication (with username and password) ✔ Client certificate authentication |
Equivalent available in open source Eclipse Ditto | The complete protocol is defined in Eclipse Ditto. Additionally, for MQTT messages Ditto provides payload mapping functionality. (You can map incoming messages to Eclipse Ditto conform payload and vice versa.) |
Horizontal scaling | ✔ Can be scaled horizontally by configuring the client count of the connection. Messages and events will be dispatched by a round robin mechanism to the different clients. |
… to Apache Kafka
Criteria | Description |
---|---|
Programming language | Almost any programming language, as long as Kafka supports it. |
Connection paradigm | Connection-oriented with a managed connection, which can be opened or closed on demand. |
Channel security | SSL over Transport Layer Security |
Message exchange pattern | non-blocking request (no response supported as of today) |
Authentication mechanism | ✔ User authentication (with username and password) |
Equivalent available in open source Eclipse Ditto | The complete protocol is defined in Eclipse Ditto. Additionally, for outgoing HTTP messages Ditto provides payload mapping functionality. (You can map outgoing messages to Eclipse Ditto conform payload.) |
Horizontal scaling | ✔ Can be scaled horizontally by configuring the client count of the connection. Messages and events will be dispatched by a round robin mechanism to the different clients. |
… to HTTP endpoint
Criteria | Description |
---|---|
Programming language | Almost any programming language capable of starting an HTTP server. |
Connection paradigm | Connectionless protocol: for each outgoing message one HTTP request is done. |
Channel security | HTTPS HTTP over Transport Layer Security |
Message exchange pattern | blocking request - response |
Authentication mechanism | ✔ User authentication (with username and password) ✔ Client certificate authentication |
Equivalent available in open source Eclipse Ditto | The complete protocol is defined in Eclipse Ditto. Additionally, for outgoing HTTP messages Ditto provides payload mapping functionality. (You can map outgoing messages to Eclipse Ditto conform payload.) |
Horizontal scaling | ✔ Can be scaled horizontally by configuring the client count of the connection. Messages and events will be dispatched by a round robin mechanism to the different clients. |