[引用自spring的ppt]spring remote技术比较

Hessian

  • Lightweight binary protocol by Caucho
  • HTTP-based
  • Uses custom serialization mechanism
  • Support for several platforms
        PHP / Python / C++ / C# / Ruby / Java
  • Problematic when using for example
        Hibernate lazy loading without OSIV
  • HessianServiceExporter
  • HessianProxyFactoryBean

Burlap

  • XML-based lightweight protocol (Caucho)
  • HTTP-based
  • Uses custom serialization mechanism
  • Known support only for Java
  • Problematic when using for example Hibernate lazy loading without OSIV

Spring HttpInvoker

  • Spring-based Java-to-Java remoting
  • HTTP-based
  • Uses Java serialization just like RMI
  • Easy to setup(no HTTP tunneling as with RMI)
  • HttpInvokerServiceExporter
  • HttpInvokerProxyFactoryBean

RMI

  • Plain-and-simple RMI
  • With some additions:
        Converts checked RemoteExceptions to unchecked RemoteAccessExceptions
        Supports exposing plain Java interfaces
  • Client support for both Spring-exposed as well as convential RMI endpoints
  • RmiServiceExporter
  • RmiProxyFactoryBean

RMI-IIOP / CORBA

  • Ability to use RMI-IIOP implementation from vendor (see demo)
  • Of course with the need for stubs and skeletons
  • With a Spring-based client, still no need for java.rmi.Remote
  • JndiRmiServiceExporter
  • JndiRmiProxyFactoryBean

When to use what

  • Both client and server under control
         Both Spring: HttpInvoker, Hessian, Burlap
         Low bandwidth: Hessian, Burlap(beware of complex object graphs)
         No servlet container: RMI(-IIOP)
  • Only server under control: RMI
  • Multiple client platforms: Hessian(or web services)
  • Need for security: HttpInvoker or RMI

你可能感兴趣的:(java,spring,Hibernate,python,Ruby)