Introduction
The MAS services container defines a services development and deployment model that is independent of the distributed technology it uses. This makes a service accessible from different distributed services technologies, like Web Service, CORBA, Java RMI or .NET.
Having such a container, MAS is at an advantage compared with other applications servers (like, for example, J2EE containers) that have to address all the issues related to their reference architecture (a fully J2EE-compliant container covers many more issues). This lightweight container is very practical not only for reducing the cost of installing and administering a full applications server (when really only the services implementation support functionalities it offers are to be employed) but can also be used in embedded and mobility environments, etc.
The development of this container involves actively participating in organizations related to Web Service technologies, like W3C, WS-I, OASIS and OMG.
Services Model
According to the SOA architecture, a service is a self-contained and stateless function that accepts one or more requests and returns one or more responses through a well-defined interface.
Although WDSL has been adopted as the services definition language, the SOA architecture admits other definition languages. Additionally, there are standards for converting interface definition languages. Therefore, the MAS development model can be used to implement an interface definition language-independent SOA service, and this service can also be automatically accessed through a range of distributed technologies (Web Service, CORBA, RMI, .NET…) without any changes to its implementation.
The services development and deployment pattern followed by the container is as follows:
- IDL (interface definition language) definition of the service interface (WSDL, OMG IDL, JavaRMI, .NET C#, etc.)
- IDL compilation, generating stubs, skeletons and definitions in the programming language (like C++, Java, C#, etc.)
- Service implementation: development of a class (Java or C#) that exports the operations to the operations declared in the IDL interface or to a class that dynamically handles the invocations of these operations
- Service deployment by associating the respective implementation, the service port and technologies used to an IDL-defined service type.
It is worth noting that a service is implemented just once using this approach, and what technologies can access it can be automatically can be configured at deployment time.
Architecture
To guarantee that the service implementation is separate from the technology used, a container architecture has been designed that is divided into the following levels:
- Service level: this level houses the objects that implement the service functionalities
- Container level: this level manages message sending and reception by means of an abstract model, and provides the resources needed to locate services and complete requests (requests queues, thread pools, etc.)
- Protocol level: this level is responsible for routing message exchange according to a particular protocol and translating messages to the container’s kernel format
At the protocol level, the container has been designed by defining an extendible architecture of communications layers (plug-ins) that can accept different types of communications protocols (SOAP/HTTP, IIOP, RMI/IIOP.NET, etc.). Also, although the container defines a service implementation model, there is the possibility of deploying service implementations associated with a particular technology (CORBA, EJB, etc.) at the service level.
MAS has been developed on the basis of the CORBA TIDorb container. There is experience in using an ORB as the basis for developing applications servers, for example, EJB containers. This is feasible because an ORB is not just a library that implements a communications protocol like IIOP. It is a full-blown execution environment, which can control aspects like requests queuing and completion, rational management of system resources like threads or memory, etc.
There are now products that can deploy services according to the particular development paradigm imposed by each technology, but there is a major problem as regards integrating these technologies.
To guarantee the integration of these technologies, therefore, the container should:
- Have a series of tools that it can use to translate definitions in one definition language to others (for example, WSDL to IDL).
- Each communications layer should be able to translate messages and data to the different formats associated with each technology
Product evolution lines
MAS version 2.0 for Java has now been released. It supports Web Service (WSDL 1.0) and CORBA 2.6 technologies, using the following protocols:
- SOAP/HTML (SOAP 1.1 y 1.2)
- IIOP
In conjunction with the container, we developed the AsGen tool to deploy services and the TIDWsdl WSDL-to-IDL compiler.
Future lines include:
- Development of an Eclipse plug-in for services development and deployment
- JMX specification-based Web interface container administration
- Porting to C#
- Support for WSDL 2.0
- SOAP/MoM communications layer
Related projects
- Java TIDorb
- TIDIdlc
- AsGen
- TIDWsdlc



