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 persistent 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: HTTP BASIC Authentication, Identity Context based on Bosch IoT Permissions, JSON Web Token (JWT) issued by the Bosch IoT Permissions service, Bosch-ID or Google
✔ Technical client authentication using cryptographic signature
see WebSocket binding
Equivalent available in open source Eclipse Ditto The complete protocol is defined in Eclipse Ditto.

… over AMQP

Criteria Description
Programming language Almost any programming language, as long as an AMQP client is available.
Connection paradigm Connection-oriented
with a persistent 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.)

… over MQTT

Criteria Description
Programming language Almost any programming language, as long as an MQTT client is available.
Connection paradigm Connection-oriented
with a persistent 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 authenticatio
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.)

… to Apache Kafka

Criteria Description
Programming language Almost any programming language, as long as Kafka supports it.
Connection paradigm Connection-oriented with a persistent 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.)

… 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)
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.)
Imprint Legal info Privacy statement