The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in IETF BCP14 (RFC2119 & RFC8174)
SPDX-FileCopyrightText: 2023 Contributors to the Eclipse Foundation See the NOTICE file(s) distributed with this work for additional information regarding copyright ownership. This program and the accompanying materials are made available under the terms of the Apache License Version 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0 SPDX-FileType: DOCUMENTATION SPDX-License-Identifier: Apache-2.0
Application layer, also known as the business logic layer, is responsible for declaration interfaces between clients and servers for features and functions, the API layer that defines the methods and topics served by a service.
In this specification we will also define core uProtocol business logic (APIs) such as subscription management, discovery, and digital twin. These interfaces are declared once, used everywhere so that the mental model for developers is consistent across different heterogeneous systems.
uProtocol supports the architecture patterns defined in the table below to implement the majority of use cases that could be required for business logic communication between clients and services.
Architecture Pattern | Delivery Policy | Description | Requirements |
---|---|---|---|
RPC |
At-least-once |
When uE requires acknowledgement from the receiver |
|
Publication |
At-most-once |
When uE wishes to publish an CE to multiple consumers (a.k.a. "fire & forget") |
|
Notification |
At-most-once |
When a uE wishes to notify a specific uE (a.k.a a publication with a destination) |
This special purpose built uEs are required to implement uProtocol and must be present on each uDevice.
uE | Ver | Description |
---|---|---|
uSubscription |
Subscription management service that is responsible for managing subscriptions between uEs to realize the publisher/subscriber design pattern. |
|
uDiscovery |
Discovery of uThings locally, within a domain, and throughout the network. Supports URI resolution (to find where something is located) |
|
uTwin |
Local cache of published events |