Next: 2 API Descriptors List
Up: 7 <
Previous: Contents
  Contents
Subsections
In the Grid community the demand for real applications using the
emerging Grid infrastructure is steadily increasing. Over the last
years much of the Grid Middleware advanced from pure experimental
and research state to mature and widely supported software systems.
The complexity of theses systems, both in terms of administration
and application usability, remains high. One of these aspects, the
usability for application programmers, is the focus of Grid
Application Toolkit as developed in the EU GridLab project.
The purpose of the Grid Application Toolkit (GAT) is to provide a
complete application oriented abstraction layer to the
underlying Grid middleware. Application oriented here means, that
the toolkit provides those functionality (capabilities) the
application programmer needs. Such capabilities are often composed
of several Grid operations, and may involve more than one Grid
service, different protocols etc. Exactly that complexity should
be hidden from the application programmer.
For example, the simple read access to a remote file may involve
interaction with a replica location service, a data transport
service, a GridFTP service, a resource management service, and a
security service. It may involve communcation via LDAP/LDIF, GRAM,
HTTP, and GSI, as protocols or protocol extensions.
All the application programmer should see are calls very much like:
fileCopy (source, destination);
Although that example is somewhat too simple, it surely illustrates
the motivation for the present work. The API specified in this
document is supposed to deliver a similar level of abstraction to
the application programmer.
One of the major strengths and major challanges of the Grid is its
diverse nature in terms of technology used. The range of
available Grid services is wide, and constantly growing. Although
the Global Grid Forum (GGF) aims at a global standardization for
these services, that efforts will take time; will not cover all
Grid aspects; will not necessarily simplify usage of Grid
middleware (on application level); and will not cover all Grid
middleware systems (as research projects, propretiary systems
etc.).
The GAT is designed to handle that diversity of Grid middleware.
The API exposed to the application is, as far as possible,
independent of the Grid middleware incarnation used.
In general terms, the capabilities provided by the GAT API
implementation, a library, are handled by the GAT Engine. The GAT
Engine picks from currently available adaptors, which implement
that specific capability. The adaptors are lightwight modular
software elements which interface to the specific Grid middleware
to be used. The technical reasoning for this design is outlined
in the GAT Technical Specification [2].
As described, the GAT consists of a library -- the GAT
Engine -- which implements the GAT API, and which all
applications utilize; and a set of adaptors which provide
the bindings between the called in the
application and the underlying providers, e.g. Grid services.
The GAT API can be split into four parts:
- GAT Application API
This is the API which provides the ``Grid''
. It is called by applications which want
to utilise the Grid infrastructure. This API part is very
high level, and application oriented.
- GAT Application Utility API
This API provides helper calls to support interaction
between the application and the GAT Engine, and to support
the exploitation of the GAT Application API.
- GAT Adaptor Registration API
This is the mirror of GAT Application API and is the way in
which adaptors provide those functions.
- GAT Adaptor Utility API
These are the additional functions an adaptor needs to
interact with the GAT Engine and possibly with other
adaptors and utility libraries.
This document provides a language-independent, object-oriented
description of the GAT Application API, and the GAT Application
Utility API, based upon a set of . It is the
second in a sequence of two language-independent API documents.
The first is the GAT API SPECIFICATION [1]
After acceptance of the this API specification, language-specific
specifications will be developed. These will include language
specific GAT Adaptor Registration and Utilities APIs as well as
language of the APIs described in this
document.
This document does not detail any GAT implementation. In
particular, the expected behaviour of the GAT Engine in respect to
adaptor selection, fail safety etc. is not fully specified. A
later document will cover this.
As the GAT is an adaptation layer, it cannot enforce security in
lower-level components -- the adaptors and the capability
providers they use.
However, the GAT API will provide functions which allow the
application to specify credential information to the underlying
adaptors. Adaptors may use these information to authenticate to
services and to delegate security, as determined by the underlying
security model of these services.
Generally, all GAT calls should have asynchronous equivalents.
However, this version of the API does not provide a general scheme
for asynchronous GAT implementations, and touches that topic only
on rare occasions (Streamable) -- such functionality will be, at
a general level, added in a later version.
All GAT calls are reentrant (thread safe), unless noted otherwise.
This document consists of three sections. Section
lists all the , with brief
summaries of each, section details the GAT
Application API, and details the GAT
Application Utility API. Section describes
classes used but not provided by the GAT.
Section provides a glossary about the terms
used in this document.
Throughout the GAT API description in this document a number of
examples are listed. That listing is provided in pseudocode, and
is not supposed to represent real code.
The GAT Application API description is annotated with some
sections explaining the separate API subsystems. These subsystems
are loosely coupled and related API objects and calls, but do not
define any particular substructure in the API -- their nature is
purely illustrative.
This document is still a draft -- the API is currently being
developed on. However, this document should be taken as a good
indication of the final API.
Follow up versions and complementary documents cover:
- GAT asynchronous calls
- GAT error states
- GAT security aspects
- GAT Engine specification
- GAT object serialisation specification
- GAT language bindings (Java, C, C++, Fortran), inclusive
GAT Adaptor Registration and Utility API
The keywords ``MUST'', ``MUST NOT'', ``REQUIRED'', ``SHALL'',
``SHALL NOT'', ``SHOULD'', ``SHOULD NOT'', ``RECOMMENDED'',
``MAY'', and ``OPTIONAL'' in this document are to be interpreted
as described in RFC 2119 [4].
Keywords in set in sans serif in this document are to be
interpreted as described in the The Unified Modelling Language
Reference Manual [5]. In addition, all figures in this
document are written using the UML syntax and
vocabulary [5].
Next: 2 API Descriptors List
Up: 7 <
Previous: Contents
  Contents
Andre Merzky
2004-05-20
|