There are two primary differences between web services and the GPG 
paradigm: reflection and dynamic binding.

1. reflection

In web services, if I tell you that I have a port type named "IService" 
under the namespace "urn:foo.soap", there is no way you can know the port 
type's definition unless I give you its WSDL file.  There is no 
authoritative definition of the type either - anyone can create a new WSDL 
file to give a random definition to that port type.  Knowing a type's name 
alone is not enough to know what it is.

In contrast, if I tell you that I have an abstract interface named 
"imop:foo.com/IService", the name is associated with a globally unique 
definition - the one you can reflect from foo.com using IMOP.  Knowing the 
name alone is enough to know what it is, no matter where you are in the 
world.  I believe this is essential to facilitate interoperability in a 
large-scale open system.

2. dynamic binding

With the reflection capability, our programs can interact with unknown 
remote resources at runtime.  For example:

import imop:foo.com/IService;
...
   void func( IService obj ) {
      obj.foo();
   }

At runtime, I can pass any unknown remote reference, say 
"imop:bar.com/MyObject", to the method, and the runtime system will be able 
to use reflection to decide whether to accept it as an argument:

   // pseudo code
   ref = imop:bar.com/MyObject;
   if ( ref  instanceof  imop:foo.com/IService )
      assign_ref_to_obj();
   else
      throw_runtime_exception();

We use interface types this way everyday in our Java programs, but we are 
yet able to do the same thing in a distributed system.  It is not obvious 
to me that how we can do this with web services.

Hope this help :-)


Stefan

-- 
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/javaposse/-/H3qXFOxWBXkJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to