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

From Gcube Wiki
Jump to: navigation, search
(Client Libraries)
(Design Model)
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
= Client Libraries =
 
= Client Libraries =
  
The CL layer of the Integration and Interoperability Framework focuses on '''client libraries''', i.e. the set of system components that mediate access to system services. In particular, the layer defines:
+
The CL layer of the Integration and Interoperability Framework focuses on the design, implementation, and management of '''client libraries''', i.e. system components that mediate access to system services from within client Java runtimes.  
 +
 
 +
In particular, the layer defines:
  
 
* a [[#Design Model|design model]] that codifies approaches to design issues which are common to all client libraries;
 
* a [[#Design Model|design model]] that codifies approaches to design issues which are common to all client libraries;
* an [[#Implementation Framework|implementation framework]] that provides developers with the support required to implement client libraries that comply with the design model;
+
* an [[#Implementation Framework|implementation framework]] that provides the support required to implement client libraries which comply with the design model;
* a [[#Management Model|management model]] that identifies approaches and technologies for the management of client libraries components;
+
* a [[#Management Model|management model]] that identifies technologies and best practices for client library management, including testing, building, and distribution;
 
+
Collectively, models and framework promote effectiveness and consistency for the management, implementation, and use of client libraries.
+
  
 
== Design Model ==
 
== 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 '''design model''' for client libraries identifies a core set of capabilities that all libraries are required to offer, regardless of specific service semantics and client-side technology stacks.
 +
The model defines also common solutions to design issues that recur across their APIs, where the solutions are based on best practices and are motivated by goals of simplicity, testability, evolvability and standards compliance. Topics that fall within the scope of model include:
  
* the management of service endpoints, including endpoint discovery through queries, endpoint binding strategies, and endpoint address caching strategies;
+
* the local model of service endpoints;
* the management of faults thrown by service endpoints, including fault classification and modelling within the language;
+
* the discovery of service endpoints;
* the management of call scope and client credentials;
+
* the fault-tolerant binding to service endpoint replicas;
* the support for asynchronous interactions, including interactions based on polling, notifications, or data streams;
+
* the caching of service endpoints addresses across interactions;
* the design of state-related operations;
+
* the classification, modelling, and handling of interaction failures;
 +
* the handling of call scope and client credentials;
 +
* the design of asynchronous interactions, including interactions based on polling, notifications, and data streams;
  
 
Read more about the design model for client libraries [[Integration_and_Interoperability_Facilities_Framework:_Client_Libraries_Design_Model|here]].
 
Read more about the design model for client libraries [[Integration_and_Interoperability_Facilities_Framework:_Client_Libraries_Design_Model|here]].
Line 23: Line 26:
 
== Implementation Framework ==
 
== 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 design model for client libraries identifies capabilities and patterns common to all libraries. However, it does not specify how libraries provide those capabilities or implement those patterns, nor does it define the 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.
+
The '''client library framework''' is a set of components that support 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]].
+
Learn how to use the client library framework [[Integration_and_Interoperability_Facilities_Framework:_Client_Libraries_Framework|here]].
  
 
== Management Model ==
 
== 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:
+
Moving beyond design and implementation issues, the '''management model''' for client libraries focuses on the overall management of client libraries as system components. In particular, the model identifies best practices and/or tools in the following areas:
* module structure: relationship between CL modules, stub modules, and service modules
+
 
* build outputs: what secondary artifacts are associated with CLs
+
* the boundary of client library components, including their relationship to service components and, where applicable, service stubs library components;
* release cycle: how are CLs released with respect to target services
+
* the building of client libraries, including interactive builds and continuous integration builds;
* change management: how changes in target service API should be handled
+
* the profiling of client libraries as system components;
* profiling and deployment: how should CLs be profiled for dynamic deployment
+
* the packaging of client libraries for distribution purposes;
* distribution: how should CLs be packaged for distribution
+
* the testing of client libraries, including unit testing and integration testing;
 +
 
 +
Read more about the management model for client libraries [[Integration_and_Interoperability_Facilities_Framework:_Client_Libraries_Management_Model|here]].

Latest revision as of 23:33, 21 May 2012

Client Libraries

The CL layer of the Integration and Interoperability Framework focuses on the design, implementation, and management of client libraries, i.e. system components that mediate access to system services from within client Java runtimes.

In particular, the layer defines:

  • a design model that codifies approaches to design issues which are common to all client libraries;
  • an implementation framework that provides the support required to implement client libraries which comply with the design model;
  • a management model that identifies technologies and best practices for client library management, including testing, building, and distribution;

Design Model

The design model for client libraries identifies a core set of capabilities that all libraries are required to offer, regardless of specific service semantics and client-side technology stacks. The model defines also common solutions to design issues that recur across their APIs, where the solutions are based on best practices and are motivated by goals of simplicity, testability, evolvability and standards compliance. Topics that fall within the scope of model include:

  • the local model of service endpoints;
  • the discovery of service endpoints;
  • the fault-tolerant binding to service endpoint replicas;
  • the caching of service endpoints addresses across interactions;
  • the classification, modelling, and handling of interaction failures;
  • the handling of call scope and client credentials;
  • the design of asynchronous interactions, including interactions based on polling, notifications, and data streams;

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. However, it does not specify how libraries provide those capabilities or implement those patterns, nor does it define the low-level details of their interfaces.

The client library framework is a set of components that support 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.

Learn how to use the client library framework here.

Management Model

Moving beyond design and implementation issues, the management model for client libraries focuses on the overall management of client libraries as system components. In particular, the model identifies best practices and/or tools in the following areas:

  • the boundary of client library components, including their relationship to service components and, where applicable, service stubs library components;
  • the building of client libraries, including interactive builds and continuous integration builds;
  • the profiling of client libraries as system components;
  • the packaging of client libraries for distribution purposes;
  • the testing of client libraries, including unit testing and integration testing;

Read more about the management model for client libraries here.