Assemblies - Service Compostions
A PalCom Assembly is an organized collection of 2nd Order Resources composed in such a way as to deliver all or part of some application functionality.
- A PalCom Assembly is hosted by one or more Nodes.
- A PalCom Assembly consists of one or more 2nd Order Resources.
- A PalCom Assembly contains zero or more Synthesized Services.
- A PalCom Assembly has an Assembly Descriptor.
- A PalCom Assembly is usable by an Actor.
- A PalCom Assembly is a kind of 2nd Order Resource.
The PalCom Assembly is the primary point of interaction between a user and a PalCom system and consists of an organized collection of 2nd Order Resources.
The organization is typically some orchestrated composition of services exposed as Synthesized Services, that may, or may not, be set at deployment time and may, or may not, change dynamically over time.
It is recommended, but not mandated, that an assembly define only one Synthesized Service in order to restrict complexity.
An assembly is typically deployed according to a template that defines the resource composition, but without any specific resource instantiations initially bound. Additionally, a composition may be fixed for the duration of the assembly instantiation, or it may change dynamically, both in terms of the individual resources and the way in which they are composed.
The baseline functionality of the assembly should remain stable throughout its lifetime in order to offer a guarantee that originally expected functionality remains available at all times.
In addition to the composition template, the specification of what an assembly is intended to achieve, how it will achieve it, what preconditions are necessary and what output and/or post-conditions will be affected, is contained in an assembly’s Assembly Descriptor.
An assembly may be distributed over multiple physical devices, i.e., Nodes, and if so will include the definitions of Communication Channels required to connect the remote parts.
A PalCom Service contains a PalCom Runtime Component coupled with the means to remotely communicate with other services, e.g., announcement, discovery, invocation. A PalCom Service is self-contained, can maintain state and is always expected to execute on a PalCom Runtime Environment.
- A PalCom Service reifies a Service.
- A PalCom Service executes on a PalCom Runtime Environment.
- A PalCom Service contains one or more PalCom Runtime Components.
PalCom Services are the primary unit of distributed computation available to the creators and users of palpable applications. They contain PalCom Runtime Components, can be composed into Synthesized Services, and are the primary constituents of PalCom Assemblies. PalCom Services can only be executed on PalCom Runtime Environments.
When instantiated, a PalCom Service can be advertised, discovered and accessed from local and remote locations if at least one means of remote communication is available via a Communication Channel.
Each PalCom Service is considered to be self-contained in that any functionality expressed by the interface signature is available within the service itself.
Dependence on other services is only present at the level of preconditions as specified in the interface contract. Services are reactive, or indeed proactive, to received events that conform to its published interfaces.
A PalCom Service can be either stateless or stateful depending on usage requirements. Stateless implies that session specific state is not maintained across multiple invocations of a service and stateful implies that it is.
When possible it is recommended that services are implemented as stateless in order to minimize impact on the performance and scalability of the corresponding PalCom System.
A PalCom Service can optionally belong to one of two sub-categories. A PalCom Service is migratable, if it has been programmed to be able to capture its state (if it has any), such that the instance of the service can be moved from one Node to another.
Contrary, a PalCom Service is said to be indigenous if it is bound to the underlying hardware platform in such a way that it can only run on this particular device. A PalCom Service does not have to be neither migratable nor indigenous.
A PalCom Service can either be a classic reactive service, or may be capable of autonomous, proactive behaviour, or some combination thereof.
An Assembly Descriptor describes the organization of a PalCom Assembly in terms of its constituent elements, what the assembly is intended to achieve, how it will achieve it, what preconditions are necessary and what output and/or post-conditions will be affected.
- An Assembly Descriptor belongs to a PalCom Assembly.
- An Assembly Descriptor contains one or more Resource Descriptors.
- An Assembly Descriptor defines one or more Synthesized Services.
An Assembly Descriptor describes everything about a PalCom Assembly that a consumer of the assembly needs to know concerning how to make use of it and what to expect in terms of functionality.
A PalCom Assembly consists of an organized collection of various other PalCom elements.
An Assembly Descriptor describes this organization, especially in terms of the static, dynamic, passive and active nature of individual elements and their functional relationships to one another.
This implies that an Assembly Descriptor will contain definitions of Synthesized Services that will be offered by the corresponding PalCom Assembly and one or more Resource Descriptors, or references to them.
A Synthesized Service is a service interface created by the composition of two or more Services as described by an Assembly Descriptor and contained in the corresponding PalCom Assembly.
- A Synthesized Service is a composition of one or more Services.
- A Synthesized Service is defined in an Assembly Descriptor.
- A Synthesized Service is a kind of 2nd Order Resource.
- A Synthesized Service is contained by a PalCom Assembly.
A Synthesized Service is the primary means by which a PalCom Assembly exposes functionality created by the composition of two or more Services. It is essentially a service interface described by an Assembly Descriptor that defines the entry point into a composition of Services.
A Synthesized Service therefore only offers new functionality by virtue of the composed services that it represents offering the equivalent to, or in some cases more
Than, the ”sum of the constituent parts”.
In addition, every Synthesized Service is a kind of 2nd Order Resource and as such has a Resource Descriptor that describes its characteristics in the same manner as a normal Service.
An assembly example
A simple PalCom Assembly is shown above with PalCom Nodes and one Non-PalCom Node interacting via remote Communication Channels.
Within PalCom Node A can be seen the expected elements: The PalCom Runtime Environment, the Middleware Management, the Communication Layer, several PalCom Components and two PalCom Services. The Middleware Management intersects all components and services, serving them with resource and contingency management facilities. The PalCom Runtime Environment resides logically below all PalCom Components and PalCom Services offering the means to manage and execute them.
PalCom Node B is much the same as PalCom Node A, with a slightly different Component/Service population.
The only noticeable difference is the presence of a Synthesized Service, which is defined within the overarching XYZ Assembly and deployed as a nominal service containing the logic for composing the other member Services of the assembly to create some defined aggregated functionality.
The final Node is a Non-PalCom Node consisting of a set of Non-PalCom Services, but as indicated no further assumptions can be made concerning the internal operation of that Node.
One of the PalCom Services in PalCom Node A is shown as an executing combination of three PalCom Components (in fact Runtime Components).
The other PalCom Service in this node is shown as containing only a single component. It is possible for Components to have multiple instantiations with Runtime Environments, each of which reside in a different PalCom Service.
Shown bridging all three nodes is the PalCom Assembly which, in the snapshot, consists of the two PalCom Nodes, a selection of PalCom Services and a Synthesized Service.
One of the Non-PalCom Services is also included in the assembly. This particular composition may of course change with time, if so allowed by the assembly type and configuration.
A PalCom Assembly is deployed according to an Assembly Descriptor that defines the 2nd Order Resources present within the assembly (which will be primarily Services) and how these Services can be composed to offer aggregated behavior through Synthesized Service interfaces.
The Assembly Descriptor can also contain some scripting defining how to create, modify and execute the assembly.
So essentially Assembly Descriptors contain a means of composition and a means of coordination. Composition is the ability to specify and scope a set of PalCom 2nd Order Resources that contribute toward the behavior of a PalCom Assembly.
Coordination describes the interaction of those resources within the context of a PalCom Assembly.