Web Service Interfaces to Earth System Modeling Framework Components
Participants
Kathy Saint/ESMF Core Team, Gerhard Theurich/ESMF Core Team, Cecelia DeLuca/ESMF Core Team
For questions on this project, please contact curator@list.woc.noaa.gov.
Motivation
The climate and weather communities are increasingly being asked to interface with regional projects. The coupling within a climate model is very different from that which occurs within smaller multidisciplinary studies. Historically, the ESMF team has focused on more tightly coupled models with high frequency and high volume data exchanges but with the advent of this work, we have begun to focus on smaller systems that run on distributed, often Windows-based platforms with reduced data exchange. Our motivation is to enable ESMF to interface with these loosely coupled applications and to make it easier to run ESMF components on systems like the TeraGrid or in workflows that include visualization and data processing.
Web services are a technology that can be attached to both loose and tightly coupled applications, minimizing their differences by leveraging the Internet as a means of bridging geographic and communication barriers. Web services can be written in Java, which is a platform-independent programming language. This addresses the challenge of dealing with different operating systems. Additionally, web services follow standard protocols that are universally accepted across browsers and web server configurations. They are the equalizer for the loosely coupled application.
Approach
ESMF's approach to solving the loose coupling problem is to create a socket interface library that allows any networked ESMF component to be available as a web service. This is accomplished through a series of Java classes that provide the following:
- Access to the networked ESMF component via a java socket client
- A servlet that provides a web-based interface for selecting and executing the component services
- A registrar application that the components use to register themselves with the servlet
System Architecture
The figure above describes the software architecture for the component services. Each of the boxes represents an executable, and the color represents the language it's written in (red = Java, blue = Fortran, and green = C++). The boxes within an executable are the libraries/modules involved in making a component web accessible.
The Application executable is the wrapper for the Component to turn it into a service, and the libnetesmf library provides the interface for the service.
The Tomcat executable is the servlet implementation that provides access to the Component using web technologies. The ESMF Webapp is the servlet that provides the web interface, and uses the Component Connector library to communicate with the Component service on the backend.
The Registrar allows a Component Service to register itself with the web interface, so that the Webapp can dynamically discover the available services. The Component List XML file is just a simple database of available Component Services.
Caveats
This work very preliminary and has limitations. In particular, the current implementation provides the capability to remotely access the functionality of an ESMF component, but does not provide a way to move data between components on different systems. This functionality is currently in development and is planned for implementation in a future release of ESMF.
References
- A description of the architecture via graphs (Download PowerPoint)
- Interface and Class guide
- User's Guide
