| Hi Johannes,
 On 7/31/2012 7:37 AM, Konstantinidis, Johannes wrote:
 
 
      
      
      
      
        Hi all,    can you tell me the
            difference between the hello.host/consumer and the
            hello.host/consumer.rs examples, please?   Of course, I see the
            different source code, but to me both examples seem to have
            the same result, only reached in two different ways: The rs example seems to
            do the things explicitly, that are done magically by the
            non-rs example (I only tried the non-rs example so far and
            just looked at the source code).
               The same confusion with
            the three "getting started" links [1], [2], [3] related to
            Remote Services: to me [1] seems like non-rs, [3] like rs
            and [2] like something in between. Maybe one or more are
            outdated? Can you give me a hint what to use and about the
            advantages of the different approaches?  Ok...a brief explanation.
 
 ECF has a 'remote services API'...which provides direct access to
    runtime API for interacting with the ECF IContainer,
    IRemoteServiceContainerAdapter and other ECF interfaces.  This API
    is in org.eclipse.ecf.remoteservice and org.eclipse.ecf.core
    plugins.  It's transport-independent, and allows quite a lot of
    customization/extension for the behavior of existing providers (e.g.
    generic, r-osgi, restlet, etc)...and, of course, allows the modular
    creation and customization of providers.
 
 ECF also has an implementation of the OSGI remote services
    specification.  The OSGI remote services specification is actually
    implemented *on* the ECF remote services API...meaning that new
    providers that implement the ECF remote services API will
    automatically work as a complete OSGi remote services
    implementation.   This is kind of nice for those interested in
    creating new providers, because it makes it very easy to create new
    providers (reuse/extend existing providers)...and then any code that
    uses the OSGi remote services will 'just work' with a new provider.
 
 No need for anyone to re-implement the OSGi remote services/RSA
    specifications.  It can only be done/maintained once (in true
    modular fashion :), and we (ECF committers) will do this for you.
 
 This is described graphically...with a layering diagram...on this
    page [1].
 
 Historically, the ECF remote services API existed before the OSGi
    RS/RSA spec existed...and when the OSGI spec came out it just made
    sense to use ECF remote services as the basis of our OSGi remote
    services implementation.
 
 Now...back to the examples.
 
 The .rs examples actually expose the ECF remote services API usage
    (currently in a simple/trivial way...but nonetheless it's there).
 
 The non-rs examples only use the OSGi remote services API...and ECF
    remote service containers are created and used automatically by
    RSA.   As per the OSGI RSA specification...and ECF's RSA
    implementation [2]...RSA's topology manager makes decisions about
    how/when to export a remote service as it's registered.   The ECF
    topology managers create container(s)...if necessary...and export
    services...again using the ECF remote service API.
 
 The take away with the examples is that the non-rs example is OSGI
    remote services only, while the .rs example exposes the ECF remote
    service API at the application level...to allow for deeper
    customization.   That...and there's no point in deleting/deprecating
    example code :-).
 
 Hope this helps.  I will take a look at the doc links to check for
    whether things are now out of date.  There may be...as like I said
    the ECF remote service API predated the OSGi specifications...and so
    there may be wrong or confusing links at this point.
 
 Thanks,
 
 Scott
 
 
 [1] http://wiki.eclipse.org/OSGi_4.2_Remote_Services_and_ECF
 [2] http://wiki.eclipse.org/Remote_Services_Admin
 
 
 
 |