Relation between service consumer and service provider

The division in Client and Server parts can be how on the picture:

part description
Service interface Descriptor for invocation, method signatuture with parameter und return type.
Service implementation Implementation from the services on the server.
Crispy library Library to easy communication with the services.
Communication library Library for to useful technology.
Server (intern) Server in the intranet. I can control the libraries.
Server (extern) The server is in the internet (WWW), he is beyond our control.

architecture

How Crispy work

How is Crispy work? On the image you can see a graphical description of the work from Crispy. It is a classic Client - Server communication, where the data (paramter and the result) become marshalling and unmarshalling. For the marshalling, the most technology require, that the transfer object implement the interface java.io.Serializable. If it is not wanted, you can transform the transfer object to a simple data structure with the method net.sf.crispy.util.Converter.makeSimple on the client side. Before you call the service on the server side you make the original object structure from the client with the method net.sf.crispy.util.Converter.makeComplex.

architecture

Communication

Client:

  1. The ServiceManager create a dynamic or static proxy object to make the communication with the server.
  2. Call a method of the proxy object.
  3. The call can optional transform the paramter (e.g. net.sf.crispy.util.Converter.makeSimple).
  4. The proxy object serialize (marshall) the call.
  5. The framework (technology) send the call to the server.

Server:

  1. The server get the request.
  2. The server deserialize (unmarshall) the client call.
  3. When the client has transform the parameter, than transform the server they back (e.g. net.sf.crispy.util.Converter.makeComplex).
  4. The server execute the method on the service implementation and send back the result to the client.

Transformation

Optional you can transform data on the client side, before they transfer (send to the server). On the server side transform back, before call the service method.

Complex Java Object are transform to the java.util.Hashtable. By the Hashtable are the keys the attribute names from the Java Object and the Hashtable values are the attribute values. Relationship are mapped to the java.util.Vector. A example you can see on the image.

transformation