InfoQ

News

CRISPY, a New Remoting Framework

Posted by Boris Lublinsky on Jun 03, 2009

Community
SOA
Topics
Web Services
Tags
Services ,
Web services ,
Distributed Programming

 

In his new article entitled CRISPY Web services Sachin Mahajan discusses a new framework called CRISPY (Communication per Remote Invocation for different kinds of Services via ProxYs) - a unified API for remote invocation over a wide number of transports including: RMI, EJB, JAX-RPC, REST, XML-RPC, direct Java invocation, etc. All calls can execute synchronously or asynchronously. According to CRISPY project web site, CRISPY:

... works by using properties to configure a service manager, which is then used to invoke the remote API. CRISPY is a simple Java codebase with an API that sits between your client code and the services your code must access. It provides a layer of abstraction to decouple client code from access to a service, as well as its location and underlying implementation. The special on this idea is, that these calls are simple Java object calls (remote or local calls are transparent).

The main advantages of CRISPY are

  • .. easy to use.
  • ...minimal to configure.
  • You can call a remote method from Java object, like a local call.
  • You don't need to know, how the (remote) technology work.
  • You can easy change the technology (for example from XML-RPC to RMI).
  • The services don't know a remote-interface or a RemoteException (how RMI).
  • The parameter can be a complex object (in parts without programming a Serializabler (Marshalling) or Deserializabler (Unmarshalling)).

CRISPY also provides a fine invocation control through interceptors and/or modifiers. Interceptors can be invoked both before and after method invocation and can be used, for example, for logging, call timing, etc. Modifiers can be also invoked before or after method invocation. They can be used for transformation/extension/enrichment of invocation parameters, for example, adding security headers, transformation/extension/enrichment of execution results.

Main components of the CRISPY framework include:

 

  • ServiceManager - It is a factory to create the service.
  • Properties - To configure the Service Manager.
  • Service Interface - Plain java class.
  • Proxy/Executor - All calls from Service Interface are delegated to Proxy/Executor.

CRISPY can be also combined with other popular frameworks. A list of currently implemented integrations include SpringFramework, HiveMind (Jakarta), PicoContainer (codehaus), OSGi, AspectJ, etc.

A discussion at TheServerSide.com compares CRISPY to Apache WSIF, Spring remoting and other frameworks providing similar capabilities - a unified invocation model over multiplicity of transports.

CRISPY can be used in many cases requiring decoupling of the client code from invocation protocols and service locations.

An Argument on Distributed Computing by Geoffrey Wiseman Posted Jun 3, 2009 10:51 PM
Re: An Argument on Distributed Computing by Peter Veentjer Posted Jun 4, 2009 3:46 AM
New my @!%* by Richard Featherstone Posted Jun 4, 2009 6:12 AM
  1. Back to top

    An Argument on Distributed Computing

    Jun 3, 2009 10:51 PM by Geoffrey Wiseman

    Ah, another remoting framework that wants to argue with a note on distributed computing.

  2. Back to top

    Re: An Argument on Distributed Computing

    Jun 4, 2009 3:46 AM by Peter Veentjer

    I agree with you, don't treat remote objects as local ones. I have been helping a customer with performance problems, and one of the causes was a chattiness "we didn't know that object was a remote object".

    But on the other side: it is nice that if you do a remote call, no implementation specific details get in your code. That is one of the things I like about the remoting architecture of Spring for example.

  3. Back to top

    New my @!%*

    Jun 4, 2009 6:12 AM by Richard Featherstone

    In my book 3 years old ain't new

Educational Content

Brian Marick on 4 Challenges and 5 Guiding Values of Agile Software Development

Brian Marick takes us through a quick tour of the most important values and challenges to adopting Agile successfully (they aren't the typical challenges and values we hear in the community).

Are You a Software Architect?

The line between development and architecture is tricky. Does it exist at all? Is an ivory tower actually needed? There's a balance in the middle, but how do you move from developer to architect?

Agile – A Way of Life and Pragmatic Use of Authority

The word 'authority' sometimes produces an allergic response in hard-line agilists. Freedom and authority – both are bad if misused and both are good if used in right spirit for a noble cause.

Getting Started with Grails, Second Edition

"Getting Started with Grails" brings you up to speed on this modern web framework. Companies as varied as LinkedIn, Wired, and Taco Bell are all using Grails. Are you ready to get started as well?

Using ITIL V3 as a Foundation for SOA Governance

Those familiar with only ITIL V2 often scoff at the thought that ITIL could serve as a governance framework for SOA. With ITIL V3, the focus of the framework shifted towards service-orientation.

Adrian Colyer on AspectJ, tc Server and dm Server

SpringSource CTO Adrian Colyer discusses AspectJ, SpringSource's dm Server and tc Server products, OSGi and Scrum.

Adam Wiggins on Heroku

Heroku's Adam Wiggins talks about Rails, Background Jobs, Add-Ons, Ruby, and how Heroku manages to work around Ruby's inefficiencies using Erlang and other languages.

SOA as an Architectural Pattern: Best Practices in Software Architecture

For Grady Booch the foundation of a good architecture is patterns, SOA being just one of many patterns. In this Second Life presentation, Booch attempts to bring more clarity on what architecture is.