Jump to: navigation, search

Difference between revisions of "Servus"

 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
<h2>Introduction</h2>
+
=Introduction=
  
<p>Servus* is a proposed open source component under the [http://www.eclipse.org/modeling/emft/ Eclipse Modeling Framework Technologies] (EMFT)  project. The component’s purpose is to promote EMF to a central role in the design and evolution of Web Services, mainly by creating mappings from Ecore based models to [http://www.w3.org/TR/wsdl Web Services Description Language] (WSDL) and code artifacts.</p>
+
The main focus of the Servus component is to allow developers to design and evolve Web Services (WS) using Ecore based models, by providing mappings between those models and Web Services artefacts, such as WSDL descriptions, WS client stubs and WS server skeletons. Read the [[Servus_Proposal | proposal]] for a full description of the project scope and look at the [[#Documentation | Documentation]] section for additional information.
  
<p>This proposal is in the Project Proposal Phase (as defined in the [http://www.eclipse.org/projects/dev_process/development_process.php Eclipse Development Process] document) and is written to declare its intent and scope. This proposal is written to solicit additional participation and input from the Eclipse community. You are invited to comment on and/or join the component. Please send all feedback to the [news://news.eclipse.org/eclipse.technology.emft eclipse.technology.emft] newsgroup.</p>
+
=New & Noteworthy=
  
<h2>Background</h2>
+
=Current Tasks=
 +
* ''08/2008'' - creating an explicit server model and obsoleting the annotations.
 +
* ''07/2008'' - currently implementing JAX-WS code generation.
 +
* ''06/2008'' - WSDL version 1 to Ecore mapping is completed, but some features are still missing (WSDL validation, model cleanup, model wrapping and extensive tests); the implementation will now focus on using the generated models to generate code and go back to WSDL, so that the semantics of the service models can be better validated.
 +
* ''05/2008'' - implementing WSDL version 1 to Ecore mappings.
 +
* ''04/2008'' - creating infrastructure and committing POC to CVS.
  
<p>The [http://www.eclipse.org/modeling/emf/ Eclipse Modeling Framework] (EMF) represents a pragmatic approach to model-driven development that focuses on incremental adoption, highly customizable code generation, implementation of common standards and development of infrastructure to work with models in the form of frameworks and tools. Recent years have also seen the emergence of Web Services technologies that allow to publish, discover and invoke services in a platform independent fashion over the internet, and the Service Oriented Architecture (SOA) as a means to modularize functionality as services and build ad-hoc applications from existing services.</p>
+
=Documentation=
  
<p>Many Java-based projects support Web Services in different ways. WS engines, such as [http://ws.apache.org/axis2/ Apache Axis2] and [http://incubator.apache.org/cxf/ CXF], provide minimal code generation and thus some WSDL&hArr;Java mapping, but with little or no support for customizations and incremental generation. The [http://www.eclipse.org/webtools/ Eclipse Web Tools Platform] (WTP) project provides a WSDL editor,
+
'''Overview'''
but the manipulation occurs in terms of WSDL concepts, without raising the abstraction level. Still, developers are constantly having to deal with the complexity of a multitude of standards that constitute the Web Services stack (WSDL, SOAP, JAX-WS, JAX-B, etc), facing platform interoperability problems and dealing ad-hoc with evolution.</p>
+
  
<p>The purpose of this component is to take advantage of EMF capabilities to address limitations of development using current Web Services technologies, creating a bridge between Model-driven and Web Services technologies and promoting EMF to a central role in the task of designing and evolving Web Services.</p>
+
[[Servus_Proposal | Servus Component Proposal]]
  
<h2>Component Description</h2>
+
[[Servus_Architecture | Functionality and Architecture Overview]]
  
<p>
+
'''Resources'''
The main focus of the Servus component is to allow developers to design and evolve Web
+
Services (WS) using Ecore based models, by providing mappings between those models and Web
+
Services artifacts, such as WSDL descriptions, WS client stubs and WS server skeletons. In the
+
following we describe the component’s scope in the form of a set of artifacts, depict the value added
+
by these artifacts and sketch an initial roadmap for the implementation. The scope is an initial
+
attempt and may be incremented as we receive feedback from the community.
+
</p>
+
  
 +
[[Servus_API | API Documentation]]
  
<h4>Servus Scope</h4>
 
  
<p>
+
'''Development'''
The following list of artifacts constitutes the component’s scope:
+
</p>
+
  
<ul>
+
[[Servus_Status | Development Status, Features and Limitations]]
<li>An implementation of an EMF-based WSDL Data Binding.</li>
+
<li>A mapping Ecore&hArr;WSDL for each WSDL version (currently 1.1 and 2.0).</li>
+
<li>Mappings Ecore&hArr;Client Stubs, i.e., Java code implementing Web Service clients.</li>
+
<li>Mappings Ecore&hArr;Server Skeletons, i.e., Java code implementing Web Service servers.</li>
+
<li>Support for refactoring the Ecore model and reflect changes in other artifacts.</li>
+
</ul>
+
  
<p>The Servus component must have a modular architecture, so that it is possible to implement
+
[https://bugs.eclipse.org/bugs/enter_bug.cgi?product=EMFT Report a bug]
mappings to different Web Service engines and frontends in addition to the default ones (as
+
specified in the Roadmap). The following items are NOT in the scope of the project:</p>
+
  
<ul>
+
=Team=
<li>Mappings to a complete Web Services stack - we concentrate on the mappings to the “frontend”
+
(client stubs and server skeletons), WSDL and WSDL data bindings.</li>
+
<li>A full fledged refactoring engine - while Servus could take advantage of such an engine,
+
it is not the scope to produce one, as it would be a project in its own.</li>
+
</ul>
+
  
 
+
[http://swen.uwaterloo.ca/~ttonelli Thiago Tonelli Bartolomei], Project Lead
<h4>Added Value</h4>
+
 
+
<p>The mentioned artifacts will promote Ecore models as pivotal in the design and evolution of
+
Web Services. We see the following primary advantages:</p>
+
 
+
<ul>
+
<li>By having an EMF-based WSDL Data Binding, developers can reuse their application’s data
+
model implemented as an Ecore model across Web Services.</li>
+
<li>By mapping the Ecore model to different versions of WSDL we can support evolution between
+
WSDL versions. For example, we reverse engineer a WSDL 1.1 version of a service and generate
+
a similar WSDL 2.0 version.</li>
+
<li>By having the Ecore model as the pivotal model developers concentrate on “what the services
+
do“, while ”how it is done“, i.e., implementation details, get hidden (including details of the
+
several standards in use).</li>
+
<li>By using EMF’s code generation capabilities it is possible to support incremental generation
+
and customization of generated artifacts.</li>
+
<li>By having mappings to different artifacts, such as WSDL, client stubs and server skeletons, we
+
assist developers in many scenarios, like creating an application that uses an existing published
+
service (WSDL&rArr;Ecore&rArr;Client Stubs), creating a new service and publishing it, integrating
+
different services, and so on.</li>
+
<li>By creating refactoring support in the model level, EMF-Servus aids Web Service evolution, for
+
example, by regenerating artifacts based on a different service interface.</li>
+
</ul>
+
 
+
 
+
<h4>Roadmap</h4>
+
 
+
<p>The roadmap for the implementation is composed of 5 initial ”loosely defined“ development
+
stages. The project’s goals are very ambitious in some aspects, such as incremental compilation and
+
evolution support. Therefore, the goal of this roadmap is to bring as much simplified functionality as
+
soon as possible, so that we gather a community around the project and prepare the infrastructure
+
for the most challenging tasks.</p>
+
 
+
<p><b>Stage 1</b></p>
+
<ul>
+
<li>EMF CXF DataBinding</li>
+
</ul>
+
 
+
<p>We propose using Apache CXF Web Services engine as the initial target engine, because it aims
+
at standardization and provides an extensible API. This stage will create a DataBinding extension
+
to the CXF engine that uses EMF.</p>
+
 
+
<p><b>Stage 2</b></p>
+
<ul>
+
<li>WSDL 1.1&hArr;Ecore</li>
+
<li>Ecore&rArr;CXF (JAX-WS) Client Stubs</li>
+
<li>Ecore&rArr;CXF (JAX-WS) Server Skeleton</li>
+
</ul>
+
 
+
<p>We propose the use of JAX-WS as the main target frontend. JAX-WS defines standard ways
+
of developing client and server portions of Web Services and is supported by CXF. This stage
+
will create a full mapping between WSDL 1.1 and Ecore models, and allow the generation of
+
Client Stubs and Server Skeletons from the model. Artifacts generation will initially focus on using
+
Eclipse’s <a href="http://www.eclipse.org/modeling/m2t/">Model2Text Project</a> engines.</p>
+
 
+
<p><b>Stage 3</b></p>
+
<ul>
+
<li>WSDL 2.0&hArr;Ecore</li>
+
</ul>
+
 
+
<p><b>Stage 4</b></p>
+
<ul>
+
<li>Ecore&lArr;CXF (JAX-WS) Client Stubs</li>
+
<li>Ecore&lArr;CXF (JAX-WS) Server Skeleton</li>
+
</ul>
+
 
+
<p><b>Stage 5</b></p>
+
<ul>
+
<li>Support for refactoring</li>
+
</ul>
+
 
+
 
+
 
+
<h2>Organization</h2>
+
 
+
<h4>Initial Committers</h4>
+
 
+
<ul>
+
<li><a href="http://swen.uwaterloo.ca/~ttonelli">Thiago Tonelli Bartolomei</a>, Project Lead and Commiter
+
<ul>
+
<li>Ph.D Candidate with the <a href="http://gsd.uwaterloo.ca">Generative Software Development Lab</a>,
+
<a href="http://www.uwaterloo.ca">University of Waterloo</a>, Canada, and
+
<a href="https://www-927.ibm.com/ibm/cas/index.shtml">IBM CAS</a> Ph.D Fellow with
+
<a href="https://www-927.ibm.com/ibm/cas/toronto/index.shtml">Toronto Labs</a>.</li>
+
</ul>
+
</li>
+
</ul>
+
 
+
<br>
+
<p><i>* &quot;<a href="http://en.wikipedia.org/wiki/Servus">Servus</a>&quot; is a greeting commonly used around the regions
+
of the former Austro-Hungarian Empire meaning "I am your servant" or "At your service".</i><br>
+
</p>
+
<br>
+

Latest revision as of 09:49, 27 August 2008

Introduction

The main focus of the Servus component is to allow developers to design and evolve Web Services (WS) using Ecore based models, by providing mappings between those models and Web Services artefacts, such as WSDL descriptions, WS client stubs and WS server skeletons. Read the proposal for a full description of the project scope and look at the Documentation section for additional information.

New & Noteworthy

Current Tasks

  • 08/2008 - creating an explicit server model and obsoleting the annotations.
  • 07/2008 - currently implementing JAX-WS code generation.
  • 06/2008 - WSDL version 1 to Ecore mapping is completed, but some features are still missing (WSDL validation, model cleanup, model wrapping and extensive tests); the implementation will now focus on using the generated models to generate code and go back to WSDL, so that the semantics of the service models can be better validated.
  • 05/2008 - implementing WSDL version 1 to Ecore mappings.
  • 04/2008 - creating infrastructure and committing POC to CVS.

Documentation

Overview

Servus Component Proposal

Functionality and Architecture Overview

Resources

API Documentation


Development

Development Status, Features and Limitations

Report a bug

Team

Thiago Tonelli Bartolomei, Project Lead