RxNetworking App
). The article Reactive Networking of Semantic-Data Library covers a description of the architecture supporting the reactive communication design pattern. The RxNetworking App
is an aggregation of Producer
and Consumer
entities derived from DataRepository
. They must provide interconnection to real-time process data, hence they are recognized as an extension of the DataRepository
class. AzureGateway
part fulfills the Consumer
role and uses out-of-band communication to push telemetry data to the cloud.Consumer
role of the RxNetworking
application. It is an example of Semantic-Data
reactive networking based on OPC UA PubSub specification. The document OPC UA PubSub Main Technology Features covers a description of selected fetuses relevant to this specification.DataRepository
concept. This workout will be described in an independent article. To get the full story and your copy check out the preprint from Research Gateway: Object-Oriented Internet - Azure Interoperability. Main purpose of this preprint it to enable an early community review. We will consider your contribution to be applied to the final version of the article.AzureGateway
implementation of the DataRepository
was derived. I would like to thank Piotr Szymczak for his inputs/inspirations, feedback, and cooperation in this respect.Consumer
role in the application:DataManagementSetup
: this class has been overridden by the PartDataManagementSetup
class and it initializes the communication and binds data fields recovered form messages to local resources.IEncodingFactory
and IMessageHandlerFactory
: have been implemented in external common libraries and Consumer
doesn't depend on this implementation - current implementation of the interfaces is localized as services using an instance of the CommonServiceLocator.IServiceLocator interface.IBindingFactory
: has been implemented in the class PartBindingFactory
that is responsible to gather the data recovered from the Message
instances pulled from the Distribution Channel
. The received data is driven to the Azure services using configured out-of-band protocol.IConfigurationFactory
: the class PartConfigurationFactory
implements this interface to be used for the configuration file opening.DataManagementSetup
implementationPartDataManagementSetup
constructor initializes all properties, which are injection points of all parts composing this role.DataManagementSetup.Start()
method is called to initialize the infrastructure, enable all associations and start pumping the data.IBindingFactory
implementationConsumer
functionality. The DataRepository
represents data holding assets in the RxNetworking App
and, following the proposed approach, the IBindingFactory
interface is implemented by an external part. It captures functionality responsible for accessing the process data represented by the LocalResources
. The LocalResources
represents the external part that has a very broad usage purpose. For example, it may be any kind of process data source/destination, and to name a few Raw Data
, OPC UA Address Space Management
, Azure
cloud-based front-end, etc.AzureGateway
functional package has been implemented based on the Consumer
concept. This particular Consumer
(PartBindingFactory
) implements the IBindingFactory
interface to gather the data recovered from the Message
instances pulled from the Distribution Channel
. The received data is driven to the Azure services using configured out-of-band' protocol. An instance of the IBindingFactory
is responsible to create objects implementing IBinding
that can be used by the Consumer
to forward the data retrieved from NetworkMessag
received over the wire to Azure services.DataRepository
and associated entities, i.e. Local Resources
, Consumer
, Producer
can be implemented as external parts, and consequently, the application scope may cover practically any concern that can be separated from the core OPC UA PubSub communication engine implementation.IConfigurationFactory
implementationUAOOI.Configuration.Networking
. In a typical scenario, this implementation should not be considered for further modification. The only open question is how to provide the name of the file containing the configuration of this role. This role uses an independent configuration file:ConfigurationDataConsumer.BoilersSet.xml
Note; This library is not considered to be published as the NuGet package.
Acknowledgment
section.