Toni,

Sorry but you were misinformed. Check out the package org.eclipse.core.runtime.dynamichelpers, and the class ExtensionTracker etc. Extensions certainly can be installed an uninstalled dynamically.

A reason for this misconception is that, prior to Eclipse 3.0, the low level runtime was non-OSGi based and could not handle dynamic installation and uninstallation of bundles. The OSGi Service Layer would also be non-dynamic if it didn't have the Module Layer and Lifecycle Layer beneath it.

I would really like to discuss the specific concern of scalability, rather than extensions vs services in general terms.

Regards,
Neil



On 30 Apr 2007, at 11:35, Toni Menzel wrote:

The last thing I heard from "Eclipse Extension Registry" is that it does not provide dynamic bindung/unbinding at all. It greatly benefits from caching bindings initially found but "polls" the resources as needed (lazy resource provisioning). But when it comes to really attach/detach OSGI Services the whole registry needs a rebuild ("rebuild" might be wrong.. but at least it is what is force for example when starting eclipse with -clean option) This lack of dynamic behaviour makes this registry not comparable to osgi services in my opinion. (i've heard that this is a concept from pre-osgi times at eclipse 2.x)

if someone has more experience with this extension registry, please clarify. I would like to know more about it, too ;-)
regards,
Toni

Neil Bartlett schrieb:
All,

A criticism that I have heard about the OSGi Service Layer, particularly in discussions where it is compared with the Eclipse Extension Registry, is that services "do not scale".

I would like to pin down exactly what is meant by this, and try to quantify:

    a) How bad the problem is, if it exists
b) Whether the problem can be fixed by an implementation, or is intrinsic to the design c) Whether and how the Eclipse Extension Registry achieves better scalability.

The problem I have is that "scalability" can mean so many things. For example it might mean that service registry lookup time becomes unfeasible when the total number of services becomes very large. It's difficult to see how a single lookup could be worse than linear, so presumably the problem here is when lookups must be done repeatedly -- and if this is the case, would some form of caching or indexing help? Alternatively the problem might the dynamic "churn" that the Spring-OSGi guys are so concerned about, i.e. when dependent services are added and removed so quickly that a significant amount of time is spent merely reacting to ServiceListener events rather than doing useful work. But surely the same problem would affect extensions?

It seems to me that one potential difference is scoping. In Eclipse, an extension point defines a search scope, and the definer of the extension point tends scans the registry for extensions contributed to that particular point. This means an O (n) operation, with n being the number of extensions contributed to the extension point.

With OSGi services, one can simulate a scope simply by adding a registration property to the service. If the service registry knew that this property was being used for scoping, then it could create an index for it. However, the registry does not have such knowledge, so in theory it needs to perform an O(n) search where n is the size of the entire registry. However this is only a guess; I haven't examined the source code or performed any benchmarks.

Would anybody like to comment on whether and why they think that OSGi services either do or do not scale?

Thanks,
Neil
_______________________________________________
OSGi Developer Mail List
[email protected]
http://www2.osgi.org/mailman/listinfo/osgi-dev

_______________________________________________
OSGi Developer Mail List
[email protected]
http://www2.osgi.org/mailman/listinfo/osgi-dev

_______________________________________________
OSGi Developer Mail List
[email protected]
http://www2.osgi.org/mailman/listinfo/osgi-dev

Reply via email to