Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DistributeMe In 7 Slides

DistributeMe In 7 Slides

A very brief introduction on DistributeMe

Leon Rosenberg

October 05, 2010
Tweet

More Decks by Leon Rosenberg

Other Decks in Programming

Transcript

  1. DistributeMe
    in 7 Slides and a Sentence
    by Leon Rosenberg
    anotheria.net 2009-2010
    Freitag, 12. April 13

    View Slide

  2. What is DistributeMe
    ‣ DistributeMe is the compile- and run-time utility
    for distributing java programs via interfaces.
    Freitag, 12. April 13

    View Slide

  3. In a Monolith
    Service Interface
    Service Implementation
    Client
    knows, uses
    implements
    Service Factory
    creates
    uses, directly
    or indirectly,
    via DI or
    MetaFactory
    calls
    Freitag, 12. April 13

    View Slide

  4. Distributed
    Service Interface
    Service Implementation
    Client
    knows, uses
    implements
    Service Factory
    creates
    uses, directly
    or indirectly,
    via DI or
    MetaFactory
    Service Stub
    implements
    Service Skeleton
    knows, uses
    Stub Factory
    creates
    uses, directly
    or indirectly,
    via DI or
    MetaFactory
    calls calls
    calls
    Freitag, 12. April 13

    View Slide

  5. ClientVM ServerVM
    Deployed
    Service Interface
    Service Implementation
    Client
    knows, uses
    implements
    Service Factory
    creates
    uses, directly
    or indirectly,
    via DI or
    MetaFactory
    Service Stub
    implements
    Service Skeleton
    knows, uses
    Stub Factory
    creates
    uses, directly
    or indirectly,
    via DI or
    MetaFactory
    calls via rmi calls
    calls
    Freitag, 12. April 13

    View Slide

  6. Code Authoring
    Service Interface
    Service Implementation
    Client
    knows, uses
    implements
    Service Factory
    creates
    uses, directly
    or indirectly,
    via DI or
    MetaFactory
    Service Stub
    implements
    Service Skeleton
    knows, uses
    Stub Factory
    creates
    uses, directly
    or indirectly,
    via DI or
    MetaFactory
    calls calls
    calls
    code written
    by developer
    code written
    by developer
    generated
    code
    Freitag, 12. April 13

    View Slide

  7. ClientVM
    ClientVM
    Complete
    Server alpha VM
    Service1 Impl
    Client A
    Service1 Factory
    creates
    uses
    Service1 Stub
    Service1 Skeleton
    Stub1 Factory
    creates
    uses
    calls via rmi calls
    calls
    Client B Service2 Stub
    Stub2 Factory
    creates
    uses
    calls
    Client C Service1 Stub
    Stub1 Factory
    creates
    uses
    calls
    Server beta VM
    Service2 Impl
    Service2 Factory
    creates
    uses
    Service2 Skeleton
    calls
    Registry VM
    RegistryWebApp
    calls via rmi
    calls via rmi
    uses
    lookup registry
    Freitag, 12. April 13

    View Slide

  8. Server Arch
    ApplicationServer 001
    ServiceVM A
    service 1
    ServiceVM B
    service2
    ServiceVM C
    service4
    ...
    ApplicationServer n
    service3
    ...
    ServiceVM Q
    service 11
    ServiceVM R
    service3
    service12
    ...
    RegistryServer
    RegistryTomcat VM
    registry.war
    Client 001
    ClientTomcat VM
    ClientA.war
    Client 025
    ClientTomcat VM
    ClientB.war
    Client 076
    Client VM
    ClientC.jar
    Client 123
    Client VM
    ClientD.jar
    Client VM
    ClientE.jar
    ...
    ... ...
    C l i e n t S i d e S e r v e r S i d e
    Freitag, 12. April 13

    View Slide

  9. InCode
    @DistributeMe()
    public interface EchoService{
    long echo(long parameter) throws EchoServiceException;
    }
    Service Interface
    Service Implementation
    public class EchoServiceImpl implements EchoService{
    @Override
    public long echo(long parameter) {
    return parameter;
    }
    }
    Client
    public static void main(String a[]) throws Exception{
    EchoService service = ... omitted;
    long param = 123;
    long echo = service.echo(param);
    System.out.println(“Service replied: “+echo);
    }
    public class EchoServiceFactory {
    public EchoService create(){
    return new EchoServiceImpl();
    }
    }
    Service Factory
    package org.distributeme.test.echo; http://svn.anotheria.net/opensource/distributeme/trunk
    Freitag, 12. April 13

    View Slide