XFire

Home
Bug/Issue Reporting
Download
FAQ
Get Involved
License
News
Stack Comparison
Support
User's Guide
XFire Team

M5

Javadocs
Reports

M6-SNAPSHOT

Javadocs
Reports

Developers

Developer Space
CVS
Building
Architecture
Interesting Projects
Release Process

This scrap page is here to describe some thoughts on the XFire service model.

Currently, the ObjectService interface has Operations. The standard Service does not. This means that you cannot do operation-based web services without being based on an object, We could create an interface that falls in between these two, and that contains the operations-based methods. I'm thinking about calling this interface WebService, but I'm open for a better name. Another way to tackle this is to split the Service into a couple of classes (see below).

Dan suggested looking at the Indigo object model. I've attached a bit of UML which describes this model (graph.png).

I think that we can certainly learn things from it. For instance, we should separate the service class into two elements:

  • A service contract (Let's call it ServiceInfo for now)
  • A service endpoint (make up from a the contract, and some binding information)

The ServiceInfo class is assembled using a ServiceInfoAssembler, similarly to the ServiceFactory now. The difference being that the ServiceAssembler interface just has one method: create(), and no overloaded methods. There are various implementations for this interface (one based on Annotations, another based on Reflection, or on a XML file), but there is little similar code, hence a very small interface.

I've created a JIRA issue to track progress: http://jira.codehaus.org/browse/XFIRE-55.

I've updated the service model UML, to reflect the current state of affairs (servicemodel.pdf). The darker yellow classes are currently not implemented, but show how future expansions might fit into the model.


graph.png (image/png)
servicemodel.pdf (application/pdf)
servicemodel.pdf (application/pdf)
servicemodel.pdf (application/pdf)
servicemodel.pdf (application/pdf)