====== Protocol Buffers ====== [[dido:99_annexes:annex-b-terms-and-definitions:start|Return to Terms and Definitions]] ===== Discussion ===== Protocol Buffers are a Google language-neutral, platform-neutral, extensible mechanism for serialising structured data. Protocol Buffers use ''.proto'' definition files to describe structured data. The Protocol Buffers compiler generates language-specific code that supports reading, writing, serialising, and deserialising structured data across files, streams, and network connections. Protocol Buffers do not define peer-to-peer, client-server, brokered, or publish-subscribe communication. Protocol Buffers define a structured-data serialisation mechanism. The selected communication technology defines the communication topology. Table 1. Protocol Buffer usage in different messaging systems. ^ Technology use ^ Topology ^ | Protocol Buffers in a file | No network topology | | Protocol Buffers over HTTP/REST | Usually client-server | | Protocol Buffers with gRPC | Usually client-server RPC | | Protocol Buffers in Kafka | Producer-broker-consumer | | Protocol Buffers in DDS payloads | DDS governs the data distribution topology | | Protocol Buffers over custom sockets | Application-defined topology | In the Financial Systems [[dido:99_annexes:annex-b-terms-and-definitions:a:archetype|Archetype]] document set, Protocol Buffers belong to implementation and platform-specific mapping concerns. Protocol Buffers do not define logical [[dido:99_annexes:annex-b-terms-and-definitions:f:financial_node|Nodes]], logical [[dido:99_annexes:annex-b-terms-and-definitions:c:communication_endpoint|Communication Endpoints]], logical information structures, logical [[dido:99_annexes:annex-b-terms-and-definitions:r:runtime_plane|Runtime Planes]], or logical interaction patterns. An implementation profile maps selected logical information structures and selected exchange mechanisms to Protocol Buffers definitions, generated language bindings, runtime libraries, and serialised data when Protocol Buffers serve as the selected data serialisation technology. **Protocol Buffers do not replace DDS transport, DDS discovery, DDS Quality of Service, DDS Topics, DDS DataWriters, DDS DataReaders, or DDS data-distribution behavior. Protocol Buffers may serve as a serialisation choice within an implementation profile when another communication technology provides the communication behavior.** ===== Definition ===== //language-neutral, platform-neutral, extensible mechanism for defining, generating, serialising, and deserialising structured data// ===== Source ===== Generalised from Google Protocol Buffers documentation and its use as an implementation mapping concern in [[fxdemo:04-part:start]]. ===== Note ===== Protocol Buffers are not a transport, communication middleware, logical information structure, logical [[dido:99_annexes:annex-b-terms-and-definitions:c:communication_endpoint|Communication Endpoint]], logical [[dido:99_annexes:annex-b-terms-and-definitions:f:financial_node|Node]], [[dido:99_annexes:annex-b-terms-and-definitions:r:runtime_plane|Runtime Plane]], DDS Topic, DDS Domain, message bus, programming language, deployment environment, governance model, or [[dido:99_annexes:annex-b-terms-and-definitions:e:evidence|Evidence]] model. ===== Example ===== An implementation profile maps selected FX Demo logical information structures to ''.proto'' message definitions and generated language bindings when Protocol Buffers serve as the selected serialisation mechanism.