<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements.  See the NOTICE.txt file distributed with this work for
additional information regarding copyright ownership.  The ASF licenses this
file to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License.  You may obtain a copy of
the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
License for the specific language governing permissions and limitations under
the License.
-->
<document>
  <properties>
    <title>Web Grid</title>
    <author email='Sean.Kelly@jpl.nasa.gov'>Sean Kelly</author>
  </properties>
  <!-- Sirius Isness - Irrational Substance -->
  <body>
    <section name='Web Grid'>
      <p>The OODT <a href='/grid/'>grid services</a>
	(<a href='/grid-product/'>product</a>
	and <a href='/grid-profile/'>profile</a> services) use CORBA
	or RMI as their underlying network transport.  However,
	limitations of CORBA and RMI make them inappropriate for
	large-scale deployments.  For one, both are procedural
	mechanisms, providing a remote interface that resembles a
	method call.  This makes streaming of data from a service
	impossible, because there are limitations to the sizes of data
	structures that can be passed over a remote method call.
	Instead, repeated calls must be made to retrieve each block of
	a product, making transfer speeds horribly slow compared to
	HTTP or FTP.  (Block-based retrieval of profiles was never
	implemented, resulting in out of memory conditions for large
	profile results, which is another problem.)
      </p>
      <p>Second, both CORBA and RMI rely on a central name registry.
	The registry makes an object independent of its network
	location, enabling a client to call it by name (looking up its
	last known location in the registry).  However, this requires
	that server objects be able to make outbound network calls to
	the registry (through any outbound firewall), and that the
	registry accept those registrations (through any inbound
	firewall).  This required administrative action at
	institutions hosting server objects and at the institution
	hosting the registry.  Often, these firewall exceptions would
	change without notice as system adminstrators changed at each
	location (apparently firewall exceptions are poorly documented
	everywhere).
      </p>
      <p>Further, in the two major deployments of OODT (PDS and EDRN),
	server objects have almost never moved, nullifying any benefit
	of the registry.  This project, OODT Web Grid, avoids the
	prolems of CORBA and RMI by using HTTP as the transport
	mechanism for products and profiles.  Further, it provides a
	password-protected mechanism to add new sets of product and
	profile query handlers, enabling seamless activation of
	additional capabilities.
      </p>
    </section>
    <section name='Documentation'>
      <p>Further documentation on Web Grid is forthcoming.  In the
	mean time, check out these <a href='./slides.pdf'>presentation
	slides</a>.  (Don't worry, they're not in PowerPoint format.)
      </p>
    </section>
  </body>
</document>
