Difference between revisions of "Integration and Interoperability Facilities Framework: Client Libraries"

From Gcube Wiki
Jump to: navigation, search
(Client Libraries Framework)
Line 1: Line 1:
 
= Client Libraries =
 
= Client Libraries =
Work withing CL layer of the Integration and Interoperability framework focuses on a subset of the client libraries found within the system, those that mediate access to some of the system services. The CL Model documents best practices and guidelines for all the cross-cutting concerns that transcend the semantics of individual target services. It distinguishes the concerns that relate to CL design from those that relate to CL management and evolves two separate models for their structuring: the Design Model and the Management Model. The final objective is to promote consistency across CLs towards the Framework integration.
 
== Client Libraries Design Model ==
 
The [https://gcube.wiki.gcube-system.org/gcube/index.php/Integration_and_Interoperability_Facilities_Framework:_Client_Libraries_Design_Model Design Model] for CL addresses cross-cutting design concerns within the system libraries, that include at least the following issues: scoped calls (how scope information is to be added to client calls), secure calls (how security information is to be added to client calls), endpoint management (how services ought to be referred to, discovered, and selected), addressing, discovery, replica management, caching, asynchronous operations (how asynchronous operations ought to be implemented), callbacks, futures, notifications, streamed/bulk operations (how streamed/bulk operations ought to be implemented), fault handling: how should faults be handled.
 
* Throughout these concerns, driving design principles are: simplicity, testability, evolvability and, where appropriate, standards compliance.
 
* Consistency is more readily and conveniently achieved through shared implementations of common solutions. In this sense, the work within the framework evolution will also be concerned with the delivery of new system components that support the development of CLs. It is expected that these Support Libraries will form a framework for CL development.
 
  
== Client Libraries Management Model ==
+
Work in the CL layer of the Integration and Interoperability Framework focuses on '''client libraries'', i.e. system components that mediate access to system services: In particular:
 +
 
 +
* the [[#Design Model|design model]] codifies approaches to design issues that are common to all client libraries;
 +
* the [[#Implementation Framework|implementation framework]] provides the tools for implementing client libraries that comply with the design model;
 +
* the [[#Management Model|management model]] codifies approaches to component management issues that are common to all client libraries;
 +
 
 +
Collectively, the models and the framework promote consistency across client libraries.
 +
 
 +
== Design Model ==
 +
 
 +
The '''design model''' for client libraries identifies a core set of capabilities that all libraries ought to offer, independently from the specific semantics for target services and the technologies required to interact with those services. Furthermore, the model defines common design recipes for client libraries, all of which are based on established best practices and are motivated by goals of simplicity, testability, evolvability and, where appropriate, compliance with standards.  These include:
 +
 
 +
* the management of service endpoints, including endpoint discovery through queries, endpoint binding strategies, and endpoint address caching strategies;
 +
* the management of faults thrown by service endpoints, including fault classification and modelling within the language;
 +
* the management of call scope and client credentials;
 +
* the support for asynchronous interactions, including interactions based on polling, notifications, or data streams;
 +
* the design of state-related operations;
 +
 
 +
Read more about the design model for client libraries [[Integration_and_Interoperability_Facilities_Framework:_Client_Libraries_Design_Model|here]].
 +
 
 +
== Implementation Framework ==
 +
 
 +
The [[Integration_and_Interoperability_Facilities_Framework:_Client_Libraries_Design_Model|design model]] for client libraries identifies capabilities and patterns common to all libraries, but it does not specify how libraries provide those capabilities or implement those patterns, nor does it mandate low-level details of their interfaces.
 +
 
 +
The '''client library framework''' is a tool for the development of client libraries that comply with the model. Through code sharing, the framework reduces development costs and ensures the consistency and correctness of library implementations.
 +
 
 +
Read more about the client library framework [[Integration_and_Interoperability_Facilities_Framework:_Client_Libraries_Framework|here]].
 +
 
 +
== Management Model ==
 +
 
 
[https://gcube.wiki.gcube-system.org/gcube/index.php/Integration_and_Interoperability_Facilities_Framework:_Client_Libraries_Management_Model Management Model]: The model for CL management will address at least the following (inter-related) issues:
 
[https://gcube.wiki.gcube-system.org/gcube/index.php/Integration_and_Interoperability_Facilities_Framework:_Client_Libraries_Management_Model Management Model]: The model for CL management will address at least the following (inter-related) issues:
 
* module structure: relationship between CL modules, stub modules, and service modules
 
* module structure: relationship between CL modules, stub modules, and service modules
Line 14: Line 38:
 
* profiling and deployment: how should CLs be profiled for dynamic deployment
 
* profiling and deployment: how should CLs be profiled for dynamic deployment
 
* distribution: how should CLs be packaged for distribution
 
* distribution: how should CLs be packaged for distribution
 
== Client Libraries Framework ==
 
The [https://gcube.wiki.gcube-system.org/gcube/index.php/Integration_and_Interoperability_Facilities_Framework:_Client_Libraries_Framework CL Framework] covers the basic functionality described in the CL Model. The Framework adheres to the principles stated by the CL Model towards the Integration and Interoperability objectives.
 

Revision as of 20:30, 21 May 2012

Client Libraries

Work in the CL layer of the Integration and Interoperability Framework focuses on 'client libraries, i.e. system components that mediate access to system services: In particular:

  • the design model codifies approaches to design issues that are common to all client libraries;
  • the implementation framework provides the tools for implementing client libraries that comply with the design model;
  • the management model codifies approaches to component management issues that are common to all client libraries;

Collectively, the models and the framework promote consistency across client libraries.

Design Model

The design model for client libraries identifies a core set of capabilities that all libraries ought to offer, independently from the specific semantics for target services and the technologies required to interact with those services. Furthermore, the model defines common design recipes for client libraries, all of which are based on established best practices and are motivated by goals of simplicity, testability, evolvability and, where appropriate, compliance with standards. These include:

  • the management of service endpoints, including endpoint discovery through queries, endpoint binding strategies, and endpoint address caching strategies;
  • the management of faults thrown by service endpoints, including fault classification and modelling within the language;
  • the management of call scope and client credentials;
  • the support for asynchronous interactions, including interactions based on polling, notifications, or data streams;
  • the design of state-related operations;

Read more about the design model for client libraries here.

Implementation Framework

The design model for client libraries identifies capabilities and patterns common to all libraries, but it does not specify how libraries provide those capabilities or implement those patterns, nor does it mandate low-level details of their interfaces.

The client library framework is a tool for the development of client libraries that comply with the model. Through code sharing, the framework reduces development costs and ensures the consistency and correctness of library implementations.

Read more about the client library framework here.

Management Model

Management Model: The model for CL management will address at least the following (inter-related) issues:

  • module structure: relationship between CL modules, stub modules, and service modules
  • build outputs: what secondary artifacts are associated with CLs
  • release cycle: how are CLs released with respect to target services
  • change management: how changes in target service API should be handled
  • profiling and deployment: how should CLs be profiled for dynamic deployment
  • distribution: how should CLs be packaged for distribution