Replies: 4 comments 3 replies
-
IMHO, communication mechanism can be classified into two kinds:
In uProtocol, we have I think this is the trade-off between complexity and performance. Maybe it's more related to how we utilize the request and response in the real scenario. If we don't expect high performance on this kind of message type, it's fine to use a simpler way to transmit data instead, which is easier for developers to understand and maintain. Let me loop @Mallets and @sashacmc for more insightful opinions. |
Beta Was this translation helpful? Give feedback.
-
FWIW I think it's reasonable to use the pub/sub paradigm for now unless and until we really feel the need for speed ™️ At that point we can add that further sophistication. |
Beta Was this translation helpful? Give feedback.
-
Mirroring the questions I asked on the SDV slack: Is this how we want to proceed? Should we publish PRs for the language libraries stripping out queries for alpha.4? Should I clean up this draft PR and move forward with the change? |
Beta Was this translation helpful? Give feedback.
-
Switched over to issue #233. We will use Zenoh for pub/sub only for L1 transport. Once that is working well, we can consider using it for queryables as an optimization layer |
Beta Was this translation helpful? Give feedback.
-
I've been looking at the Zenoh transport implementations and have some questions about the complexity therein. From what I am seeing, the implementations are handling each of the layer 2 messaging modes through different Zenoh transport mechanisms. For example, RPC requests and responses are handled through the query system. However, this seems to be going beyond what is actually required by uProtocol. Transports are only required to provide the layer 1 capabilities in the uProtocol spec - they just need to get messages sent from a source to any applicable listeners. The transport doesn't need to implement special behavior at layer 2 within a transport since layer 2 operations can be handled in transport-independent code on top of layer 1.
Additionally, in separating out transport operations based on layer 2 messaging types, several critical use cases in uProtocol (such as recording, playback, logging) won't work as expected without additional changes in the core Zenoh implementation.
Is there a particular advantage in handling each message type differently?
It seems like each sent message could simply be published to topic formed from its source / sink addresses, and registered listeners can subscribe to those topics. That would meet all of the requirements of uProtocol, and considerably reduce the complexity of the transport implementations.
Beta Was this translation helpful? Give feedback.
All reactions