throbber
Computer
`
`Networks
`
`and
`
`ISDN
`
`Systems
`
`30 (1998)
`
`509-5
`
`18
`
`Intermediaries: new places for producing and manipulating Web
`content
`Rob Barrett *- ’ , Paul P. Maglio ’
`Research
`CenteK
`650 Harryv Rd., San Jose, CA 95120, USA
`
`IBM Aitmdtw
`
`Abstract
`
`We propose a new approach to programming Web applications that increases the Web’s computational power, the Web’s
`flexibility, and Web programmer productivity. Whereas Web servers have traditionally been responsible for producing
`all content. intermediaries now provide new places for producing and manipulating Web data. We define intermediaries
`as computational elements that lie along the path of a Web transaction. In this paper, we describe the fundamental
`ideas behind intermediaries and provide a collection of example applications. We also describe WEX, an implemented
`architecture for building intermediaries that we have used to construct many applications, including personal histories,
`password management, image distillation, collaborative filtering, targeted advertising, and Web advising. 0 1998 Published
`by Elsevier
`Science
`B.V.
`All
`rights
`reserved.
`
`Kqwvrds:
`
`Intermediaries; Programmable proxies; Server API
`
`1, Ilmduction
`
`The current model of the Web gives the Web
`server the full responsibility and privilege of defin-
`ing the information
`that the browser will display.
`Displayed information may include text, images, dy-
`namic pages and interactive applications. Yet one en-
`tity, the server? maintains complete control over the
`content that is delivered to the browser. Therefore,
`the server is the only place for computing content.
`In this paper, we describe how to enhance the com-
`putational power of the Web by extending content
`computation beyond the server. We define interme-
`diuries as computational elements that lie along the
`
`author.
`* Corresponding
`’ E-mail:
`{ barrett,pmaglio]
`
`@aImaden.ibm.com
`
`path of Web transactions. They may operate on Web
`data as the request is sent from the browser, passes
`through
`firewalls and proxies,
`is satisfied by the
`generation of a document, and as the document is re-
`turned to the browser. Intermediaries have access to
`Web data at all these points, and are able to observe,
`respond to requests, and modify both the request and
`the resulting documents.
`two
`from
`Intermediaries
`can be differentiated
`other forms of non-server computation, applets and
`browser plugins. Applets allow computation
`to be
`performed on the client, but the actual executed code
`is determined by the server that delivered both the
`references to the code and the code itself. Seen an-
`other way, applets affect only
`the particular page
`on which the server chose to place them. Browser
`plugins render new content
`types or replace default
`
`0169-7552/98/$19,00
`fl/
`S~l69-75S~(98)00084-1
`
`@ 1998 Published
`
`by Elsevier
`
`Science
`
`B.V. All
`
`rights
`
`reserved.
`
`Oracle Exhibit 1005, page 1
`
`

`
`510
`
`R. Burrett.
`
`PP Maglio/Computer
`
`Netwrk.~
`
`and
`
`ISDN
`
`Systems
`
`30
`
`(1998)
`
`509-518
`
`to
`rendering engines, but do not allow a browser
`control the content that is rendered. In this case too,
`the server controls the content.
`for pro-
`Intermediaries
`represent a new model
`gramming Web-based applications.
`In
`this model,
`the usual case of a server delivering a document to a
`browser is but one type of Web transaction. An in-
`termediary running on the client may respond to the
`browser request directly, producing personal, Web-
`accessible applications for a particular user. An inter-
`mediary running on a Workgroup server may respond
`to requests, producing a collaborative Web-space. In
`addition to merely producing documents,
`intermedi-
`aries can modify documents produced elsewhere, al-
`lowing annotation, personalization, highlighting, and
`the integration of information
`from multiple sources.
`Intermediaries are a new way of thinking about Web
`applications
`that provides much greater freedom
`for
`design and implementation
`than traditional server-
`based Web programming.
`Many applications
`fit the intermediary model of
`Web programming. Consider just a few:
`Web personalization
`Our work on intermediaries was motivated by
`an interest in personalizing
`the Web, that is, in
`changing
`the Web’s behavior depending on the
`particular user and that user’s history of browsing
`[ 11. Based on explicit
`instructions or on obser-
`vations of a user’s browsing,
`intermediaries can
`formulate a model of the user and then alter what
`the user sees to personalize the browsing experi-
`ence. For example, pages can be annotated with
`user notes or customized
`links, alerts to related
`Web pages can appear, or new resources, such as
`personal search engines, can be added.
`Document caching
`feature of current
`Document caching, a common
`Web browsers, can easily be cast in the interme-
`diary mold.
`If the caching function
`is separated
`from
`the browser and implemented by an in-
`termediary,
`the browser becomes simply a URL
`requester.
`In
`this case, the intermediary
`cache
`checks its store of pages to see whether
`the re-
`quest can be satisfied locally or whether
`it must
`be sent to another intermediary or to the server.
`Figure 1 illustrates
`this application. One benefit
`of this approach
`is that the cache can be shared
`among multiple browsers or multiple people. An-
`
`I. A
`Fig.
`termediary.
`is
`forwarded
`document.
`mediary
`browser.
`
`issued
`is
`request
`requested
`If
`the
`the
`server
`to
`The document
`that personalizes
`
`to a caching
`the browser
`from
`in
`the
`cache.
`document
`is not
`intermediary,
`which
`produces
`passes
`through
`a customization
`the document
`and
`then
`returns
`
`in-
`it
`the
`inter-
`to the
`
`it
`
`is that different caching strategies
`other benefit
`can be implemented without affecting
`the rest of
`the system.
`Content distillation
`is in con-
`Another obvious role for intermediaries
`tent distillation
`[2]. The idea is that the same
`content can be represented at different
`levels of
`detail. For example,
`images can be stored at
`different
`resolutions and colour depths, or with
`different degrees of lossy compression. A distill-
`ing intermediary
`transforms
`the original content
`obtained
`from
`the server to optimize
`for trans-
`mission speed, browser display capabilities, or
`browser computational
`limitations. Slow dial-in
`connections provide a compellingreason
`for in-
`vestigating such schemes. The increasing popu-
`larity of devices with small displays, such as the
`PalmPilot
`‘, provide another.
`Protocol extension
`The simplicity and power of the HTTP protocol is
`responsible for much of the Web’s success. With
`simplicity, however, comes limitations.
`Interme-
`diaries allow many protocol extensions without
`altering deployed browsers and servers. For ex-
`ample, HTTP is not well-suited
`for long-latency
`wireless links. An intermediary can translate an
`HTTP
`transaction
`into a more efficient proto-
`col before delivering
`it across a wireless
`link
`to another
`intermediary
`that transforms
`it back
`to HTTP. Likewise, new security structures or
`other enhancements can be added to an existing
`protocol simply by using a pair of translating
`intermediaries.
`
`’ http://www.usr.com/palmpilot/
`
`Oracle Exhibit 1005, page 2
`
`

`
`R. Barrett,
`
`PP Maglio/Cornputer
`
`Networks
`
`and
`
`ISDN Sysiems
`
`30
`
`(1998)
`
`509-518
`
`.il
`
`I
`
`These examples illustrate how intermediaries add
`new computational power
`to the Web. Because in-
`termediaries allow for computational processes at all
`points along the stream of a transaction, and because
`these processes can be dynamically
`reconfigured
`for
`each particular
`transaction,
`the Web becomes cus-
`tomizable and extensible far beyond familiar scenar-
`ios. Moreover,
`the intermediaries approach breaks
`the servers’ monopoly on producing Web content.
`In what follows. we present our framework
`for in-
`termediary-based
`computation
`in detail. First, we
`show how
`the familiar view of
`the Web can be
`transformed by the introduction of the intermediary
`concept. Second. we describe our general archi-
`tecture for composing
`intermediary
`functions
`from
`basic building blocks. Third, we present details of
`our implementation of this architecture. And finally,
`we discuss related work and the future of our ap-
`proach.
`
`2. The move to intermediaries
`
`the
`from
`is derived
`The intermediary approach
`common browser-proxy-server model.
`In conven-
`tional
`thinking,
`the function of the browser
`is to
`initiate a request via an HTTP (or other protocol)
`connection
`to a proxy (or Internet service provider).
`Alternatively, we can think of the browser as issuing
`a conceptual
`request that is handled by an implicit
`intermediary. The implicit
`intermediary handles the
`request by making the appropriate HTTP connection
`for the browser (see Fig. 2). In making
`this inter-
`mediary
`function explicit, a new place for adding
`programmability
`appears. For instance, this client-
`side intermediary could choose to satisfy the request
`immediately
`from a cache. execute some local code
`to produce a dynamic page, access remote resources
`through another protocol. or simply make the appro-
`priate HTTP connection as browsers normally do.
`By splitting the issuing of the request from the mak-
`ing of the HTTP connection, we have increased the
`flexibility of the Web.
`Now consider the proxy. Normally a proxy trans-
`parently transmits a request to the appropriate server
`and returns
`the resulting document. Some proxies
`add simple functions such as caching. But there is no
`reason why the proxy cannot be a full-fledged
`inter-
`
`i j-cl I
`
`I ,
`i
`
`intermediary
`acting as sewi
`
`browser with
`intermediary
`
`’
`
`to a
`connects
`the browser
`Web model,
`the standard
`‘2. In
`Fig.
`its store. This
`connection
`retrieves
`a document
`from
`and
`server
`is done
`through
`an
`“implicit
`intermediary”
`which
`take>
`the
`requested
`URL
`and
`retrieves
`the document
`from
`the server. We
`extend
`this model
`by adding
`fully
`programmable
`intermediaries
`(“I”)
`at
`the
`client
`and mid-stream.
`The
`server
`is
`recast
`as an
`intermediary
`that produces
`documents
`response
`to
`requests.
`though
`it could
`also
`continue
`forwarding
`the
`request
`to other
`intermediaries.
`
`in
`
`response. In this case,
`mediary with a configurable
`some requests might simply be passed transparently,
`but others might access Workgroup
`resources or
`groupware
`functions. Furthermore,
`the proxy could
`examine retrieved documents
`for viruses or screen
`them in other ways before allowing
`them through
`the firewall. Likewise,
`if connections
`to the proxy
`are made via slow links, content distillation can be
`performed at this point. Again.
`the capabilities of
`the Web are clearly increased by introducing pro-
`grammability
`into the proxy.
`interme-
`Servers are simply a special case of
`diaries. A server is responsible
`for producing
`the
`document
`that satisfies a request. Therefore. an in-
`termediary
`that produces a document
`in response to
`a request is acting as a server. Because this is just
`one of the possible functions of an intermediary. an
`intermediary
`is more powerful
`than a server.
`By pushing on the common browser-proxy-server
`model. we have uncovered programmable
`interme-
`diaries at the client, proxy and server. The inter-
`mediary view
`is a generalization of
`the current
`Web model that increases the Web’s flexibility and
`power.
`
`Oracle Exhibit 1005, page 3
`
`

`
`si2
`
`R. Barrett,
`
`El? Maglio/Computer
`
`Networks
`
`and
`
`ISDN
`
`Swem
`
`30 (1998)
`
`509-518
`
`3. Architecture
`
`Intermediaries promise a more powerful and flex-
`ible mechanism for programming Web applications.
`Yet many of the details of intermediaries are quite
`complex. They must handle protocol details, rare
`error conditions, common perversions of specifica-
`tions and myriad other special cases. A number
`of monolithic
`intermediary-based applications have
`been built by different groups, but
`the potential
`will not be realized unless they are made easier
`to program. To solve this problem, we have de-
`signed an intermediary architecture
`that takes care
`of the details of intermediary plumbing, allowing the
`application programmer
`to concentrate on the data
`manipulations necessary for particular applications.
`Our architecture
`for
`intermediaries
`is known
`as Web Browser
`Intelligence3
`(WBI, pronounced
`“Webby”;
`[I]). WBI is a programmable proxy server
`that was designed for easy development and deploy-
`ment of intermediary applications. Our goal was to
`produce a programming platform
`that can be used
`to implement all sorts of intermediaries,
`from simple
`server functions to complex
`image and page editing
`and distributed applications. The WBI architecture
`has been used by more than 20 programmers
`for
`numerous projects including
`intelligent agents, Web
`mapping, password management, document
`format
`conversion, collaborative
`filtering, and knowledge
`management.
`
`In WBI, intermediary applications are constructed
`from five basic building blocks: request editors, gen-
`erators, document editors, monitors, and autonomous
`functions
`(see Fig. 3). We refer
`to these collec-
`tively as MEGs, for Monitor/Editor/Generator.
`Table
`I describes these different elements and their func-
`tions. Monitors observe transactions without affect-
`ing them. Editors modify outgoing
`requests or in-
`coming documents. Generators produce documents
`in response to requests. Autonomous
`functions
`run
`independently of any transaction and perform back-
`ground tasks.
`
`’ hftp://wwwcssrv.almaden.ibm,com/wbi/
`
`~~i~~r~
`
`generators
`
`document
`editcws
`
`monitors
`
`autonomous
`
`5 building
`from
`are constructed
`functions
`Intermediary
`3.
`Fig.
`a rule
`that specities
`Each
`is connected
`to WBI
`through
`blocks.
`type of
`transactions
`it should
`be
`involved
`in. For example,
`what
`a monitor
`could
`have
`a rule
`that
`specifies
`that
`it only wants
`monitor
`JPEG
`images
`delivered
`through
`the HTTP
`protocol.
`
`to
`
`3.2. WBI operation
`
`these
`
`follows
`
`WBI dynamically constructs a data path through
`the various MEGs for each transaction. To configure
`the route for a particular
`request, WBI has a rule
`and a priority number associated with each MEG.
`The rule specifies a boolean condition
`that indicates
`whether
`the MEG should be involved
`in a transac-
`tion. The boolean condition may test any aspect of
`the request header or document header, including the
`URL, content-type, client address, server name, etc.
`Priority numbers are used to order the MEGs whose
`rules are satisfied by a given request.
`When
`it receives a request, WBI
`steps:
`the rules
`(1) The original request is compared with
`for all Request Editors. The Request Editors
`whose rule conditions are satisfied by the request
`are allowed to edit the request in priority order.
`(2) The request that results from
`this Request Ed-
`itor chain is compared with
`the rules for all
`Generators. The request is sent to the highest
`priority Generator whose rule is satisfied. If that
`Generator
`rejects the request, subsequent valid
`Generators are called in priority order until one
`produces a document.
`(3) The request and document are used to determine
`which Document Editors and Monitors should
`see the document on its way back to the origi-
`nal requester. The document
`is modified by each
`Document Editor whose rule conditions are sat-
`isfied in priority order. Monitors are also contig-
`ured to monitor
`the document either (a) as it is
`
`Oracle Exhibit 1005, page 4
`
`

`
`R. Burrett,
`
`Ef! Maglio/Computer
`
`Networks
`
`and
`
`ISDN Systems
`
`30 (1998J
`
`509-518
`
`513
`
`1
`Table
`The basic MEG
`
`(Monitor/Editor/Generator)
`
`building
`
`blocks
`
`used
`
`to build
`
`intermediary
`
`applications
`
`MEG
`
`type
`
`Input
`
`output
`
`Action
`
`Examples
`
`Request
`Editor
`
`Request
`
`Request
`
`Modify
`
`request
`
`Generator
`
`Request
`
`Document
`
`Produce
`request,
`
`document
`or reject
`
`that satislies
`request
`
`Document
`Editor
`
`Request
`Document
`
`and
`
`Document
`
`(which
`document
`Modify
`text, HTML,
`image,
`applet,
`
`could
`etc.)
`
`be
`
`Monitor
`
`and
`
`None
`
`Request
`Document
`
`Autonomous
`
`None
`
`None
`
`resulting
`and
`request
`and perform
`
`Receive
`document,
`computation
`Perform
`background
`that
`is not affiliated
`particular
`transaction
`
`the
`
`request
`insert
`
`header
`to a new URL, modify
`form
`information,
`add/remove
`
`forward
`
`a
`
`Redirect
`information,
`cookies
`tile.
`a locally-stored
`from
`the document
`Read
`the request
`to another
`intermediary
`or server.
`dynamically
`compute
`the document
`(like CGI).
`compose
`the document
`from
`a database.
`produce
`control
`page such as **document
`moved”
`or “invalid
`authorization*’
`Add annotations,
`translate
`document
`Format
`to HTML).
`scripts
`statistics,
`usage
`Gather
`documents
`in a cache,
`
`highlight
`format
`change
`
`links,
`(e.g.
`form
`
`toolbars,
`add
`from Rich Text
`information.
`add
`
`record
`record
`
`trail,
`user
`tilled-out
`
`store
`forms
`
`computation
`with a
`
`user browsing
`Calculate
`new documents.
`crawl
`cleanup
`unneeded
`cache
`
`statistics,
`a server
`tiIes
`
`search
`for broken
`
`the Web
`links.
`
`for
`
`produced by the generator, (b) as it is delivered
`from
`the intermediary, or (c) after a particular
`Document Editor.
`the re-
`to
`is delivered
`(4) Finally,
`the document
`quester, which may be the browser if this is the
`first intermediary
`in the chain.
`An application
`is usually composed of a number
`of MEGs which operate
`in concert
`to produce a
`new function. Such a group of MEGs
`is a WBI
`plugin. Plugins define the basic unit of granularity
`for installation, configuration, and enable/disable.
`
`3.3. Example WBI plugins
`
`3.3.1. Cookie manager
`Figure 4 illustrates a simple WBI Plugin for man-
`aging HTTP cookies’ with an intermediary. Current
`browsers allow
`the server to send a cookie with a
`document. The cookie
`is stored on the client ma-
`chine and can be used to identify
`the user later. Some
`users do not want cookies to be stored, as cookies
`remove a certain degree of privacy. Some browsers
`allow
`the user to configure a cookie policy
`(e.g.,
`
`’ http://www.cis.ohio-state.edu/htbin/rfc/rfc2109.html
`
`out of
`built
`manager WE1 Plugin
`cookie
`Fig. 4. A simple
`the cookie
`MEGs.
`The Request
`Editor
`adds
`cookies
`from
`(not
`shown)
`to
`the appropriate
`requests.
`The Document
`removes
`cookies
`from
`the delivered
`documents
`and adds
`the cookie
`store.
`The Generator
`produces
`and
`interprets
`HTML
`forms
`so
`the user
`can manage
`the cookie
`store
`policies.
`
`three
`store
`Editor
`them
`to
`various
`and
`its
`
`always accept cookies, never accept cookies, or ask
`the user for each cookie). But these simple policies
`are often not sufficient, and it is often difficult
`to
`examine the cookies that have already been stored.
`With WBI, it is very easy to build a flexible cookie
`manager. A Document Editor modifies all documents
`that are sent to the browser. If it detects a cookie, it
`removes the cookie, only storing it if it fits a prese-
`lected policy. If the policy permits, a Request Editor
`
`Oracle Exhibit 1005, page 5
`
`

`
`si4
`
`R. Burrett,
`
`PI? Maglio/Computer
`
`Networks
`
`and
`
`ISDN Systems
`
`30
`
`(1998)
`
`509-518
`
`adds cookies back into requests before they are sent
`to the server. A Generator produces and interprets
`some simple HTML
`forms that allow the user to set
`the cookie policy and to review and delete stored
`cookies.
`is a simple example of a
`The cookie manager
`three MEGs arranged
`to
`WBI Plugin built
`from
`work in concert to form a single, useful function.
`It
`also illustrates some of the advantages of building
`functions with
`intermediaries
`rather than building
`functions directly into browsers:
`(11 the same cookies are available on multiple
`browsers
`(2) the same cookie manager program can be used
`on a Workgroup server, allowing many users
`access to this function without requiring
`them to
`install it on their personal machines
`(31 new cookie manager plugins can be developed
`for special needs
`
`3.3.2. Improving wireless performance
`A more complex set of WBI Plugins is illustrated
`in Fig. 5. The goal here is to make a wireless Inter-
`net connection more efficient. One set of client-side
`MEGs manages a cache that has a prefetch ca-
`pability. A Monitor observes all Web transactions
`and stores the results
`in a disk cache. An Au-
`tonomous
`function periodically
`requests commonly-
`needed documents
`to refresh the cache for instant
`access. A Generator intercepts all requests from the
`
`improve
`to
`together
`that work
`Plugins
`5. Several WBI
`Fig.
`manage
`A Monitor
`and Generator
`a wireless
`Web
`browser.
`prefetches
`local
`cache.
`An
`Autonomous
`function
`periodically
`the client
`and
`important
`documents,
`A pair of Generators,
`one on
`one at
`the Workgroup
`server
`convert
`the standard
`HlTP
`protocol
`to a compressed
`version
`suitable
`for wireless
`transmission.
`Document
`Editor
`distills
`documents
`to
`reduce
`image
`size
`complexity.
`
`A
`and
`
`a
`
`browser, examines the cache and, if possible, satis-
`fies the requests. If the Generator cannot
`find the
`desired document
`in the cache, it rejects the re-
`quest. The next Generator in the chain translates the
`HTTP protocol
`into a special, compressed version
`that optimizes
`the throughput of the wireless link,
`and sends the translated request across the link. The
`compressed request is received by a Workgroup
`in-
`termediary
`that contains a Generator to de-translate
`the compressed protocol back into HTTP and pass it
`to the requested server. Finally, a Document Editor
`distills what comes back from
`the server to remove
`unneeded colour depth before sending the document
`to the client.
`This application breaks down into three plugins: a
`client-side cache with prefetch, a compressed proto-
`col translator, and an image distiller. Each is useful in
`its own right, but together form a powerful means for
`improving Web browsing for the mobile user. Mod-
`ularity makes intermediary programming productive
`and intermediary applications flexible.
`
`4. WBI implementation
`
`Two equivalent versions of the WBI infrastructure
`have been built, one in C++ (both 32-bit Windows
`and OS/2) and the other in Java. Both allow WBI
`Plugins to be written
`in C, C++ or Java. WBI can
`serve as an intermediary
`for HTTP, HTTP-S, FTP
`and Gopher protocols. It can handle proxy- or server-
`type requests, and the rule system can differentiate
`between these to route requests appropriately. There-
`fore WBI can be accessed directly
`from a browser
`just like any server, or the browser can be configured
`to use WBI as a proxy.
`
`4. I. Conjigurations
`
`is to install it on a
`One typical WBI configuration
`client machine and configure the client browser to use
`“localhost” as its proxy. This client-side
`intermedi-
`ary processes all requests from that browser, and can
`provide access to local information, personalization
`functions, or can perform other client-specific com-
`putation. WBI can be configured with any appropriate
`firewall information so that normal Web requests are
`passed through a socks server or HTTP proxy.
`
`Oracle Exhibit 1005, page 6
`
`

`
`R. Burrett,
`
`PR Maglio/Computer
`
`Nehvorks
`
`and
`
`ISDN
`
`Systems
`
`30 (1998)
`
`509-518
`
`51s
`
`The workgroup
`to the
`is similar
`configuration
`client-side case, except that several client machines
`are configured
`to use the same instance of WBI
`as their proxy. WBI can be running on one of the
`client machines or on any other networked machine.
`Some functions
`require that different users be iden-
`titied, so WBI provides the capability of identifying
`the HTTP Proxy Authen-
`individual users through
`tication
`’ mechanism. Thus,
`functions within
`the
`Workgroup
`intermediary can keep users separate to
`maintain
`individual histories or to provide custom
`configurations.
`Finally, a configuration switch can set WBI to be
`a server-side intermediary. When this switch is set
`and a server name is specified, server-type requests
`run through
`the normal rule system and MEGs. But
`if no Generator accepts the request, it is forwarded
`to the specified server. In this way, WBI can appear
`to a browser as if
`it were
`the server, but
`it can
`provide additional
`functions. For example, WBI can
`translate documents that come from the server or it
`can provide search services for the server. This can
`all be done without contiguring
`the destination server
`in any way: users simply access the server-side WBI
`instead of the server to get the enhanced functions.
`
`4.2. Component model
`
`Recently, WBI’s plugin definition has been ad-
`justed to tit the Java Beans6 component model. In
`this model, WBI Plugins beans contain MEG beans,
`When WBI starts up, each registered Plugin is initial-
`ized. In their initialization code, the Plugins register
`their various MEG beans as transaction
`with WBI
`listeners. Each MEG bean contains properties
`that
`define the MEG’s firing rule, priority, and other per-
`tinent information. A standard library of beans has
`been developed for common
`functions, such as pro-
`ducing a static page of HTML, serving a file from a
`disk, adding annotations to the top of Web pages, in-
`terpreting
`forms. and generating “document moved’
`responses.
`to easily
`The bean model enables programmers
`develop systems with a visual programming envi-
`ronment. Because WBI beans are not graphical, the
`
`simplest bean builders do not provide an appropriate
`user interface. We have begun to develop a visual
`programming environment
`for WBI
`that allows the
`developer to build MEGs from other MEG beans and
`to incorporate
`them
`into Plugins. The environment
`also has facilities
`for visually
`tracing
`transactions
`through
`the MEGs and for viewing
`the results after
`each edit or generate step.
`We have found the bean model to greatly increase
`programmer productivity as common beans are com-
`bined
`to form complex MEGs and Plugins. Most
`applications still require some code to be written. but
`often this code simply instantiates basic MEG beans,
`sets their properties appropriately and then forwards
`requests to them.
`
`4.3. Peryhormance
`
`issue
`is an important
`Intermediary performance
`First,
`it should be
`for practical
`implementations.
`noted that the standard browser/firewall/server model
`is a special case of an intermediary model.
`In this
`case, the firewall
`is a simple intermediary
`that for-
`wards requests to an external network and the server
`is a simple intermediary
`that delivers file-based or
`dynamic content. Therefore,
`it is clear that interme-
`diaries do not fundamentally degrade Web perfor-
`mance.
`But what price is paid for a fully programmable
`intermediary such as WBI? Preliminary performance
`tests using WebStone 2.07 show
`that
`the C++
`implementation
`of a WBI-based
`server runs 1.2
`times slower than Microsoft
`Internet
`Information
`Server’ on Windows NT. The Java version of the
`WBI-based server, using Sun JDK 1.1.3 with the JPP
`1.1.3 just-in-time
`compiler,
`runs 2.5 times slower
`than the C++ version. This result shows that run-
`ning requests through our native-code
`rule system
`and MEG dispatcher requires 20% processing over-
`head. The Java benchmark
`indicates
`the efticiency
`of current Java implementations. We believe that the
`extra CPU load is not unreasonable considering the
`advantages of the intermediary programming model.
`Of course, adding intermediary
`functions beyond
`simple Web serving will take more processing, but
`
`Oracle Exhibit 1005, page 7
`
`

`
`516
`
`2
`Table
`A comparison
`
`Language
`Location
`Operations
`Granuhrrity
`Rules
`Contiguration
`Negotiation
`Code
`location
`
`R. Barrett,
`
`P?! Maglio/Computer
`
`Networks
`
`and
`
`ISDN
`
`Systems
`
`30 (1998)
`
`SO9-,518
`
`of programming
`
`with WBI
`
`and Servlets
`
`WBI
`
`Servlets
`
`Java
`server
`servlet
`servlet
`LJRL/content-type
`static
`ordered
`manuahy
`local or network
`
`matching
`
`Java. C, C++
`client,
`server, Workgroup
`request
`editor,
`generator,
`MEG,
`plugin
`boolean
`expressions
`dynamic
`priority
`local
`
`system,
`
`generators
`
`across
`
`document
`
`editor, monitor,
`
`autonomous
`
`request
`
`and document
`
`header
`
`lieIds
`
`may
`
`reject
`
`requests
`
`the bulk of this will be in the particular enhancement
`functions, with little additional system overhead. In
`more pragmatic
`terms, we have found that both the
`C++ and Java versions of WBI can add consider-
`able functionality when run as a personal client-side
`intermediary without
`the user noticing performance
`degradation.
`In the Workgroup and server configura-
`tions, more care must be taken to ensure that there
`is enough CPU power to handle the extra computa-
`tions.
`
`5. Discussion
`
`5. I. Comparison with other Web programming
`
`tools
`
`WBI can be compared with many other pro-
`gramming paradigms
`for Web-based applications,
`including CGI’, NSAPI
`lo, ASP ‘i, Ore0
`‘*, and
`Servlets 13. Each has strengths and weaknesses, yet
`WBI
`is the first to fully
`implement
`the intermedi-
`ary notion. Rather
`than compare WBI
`to each of
`these, we choose to consider JavaSoft’s Servlets in
`more depth; the results are summarized
`in Table 2.
`(A comparison between WBI and Ore0
`is given
`elsewhere [ 11.)
`the base
`system with
`WBI
`is a multi-language
`code in both C++ and Java. WBI Plugins can be
`
`’ http://hoohoo.ncsa.uiuc.edu/cgi/
`‘r’ http://search.netscape.co~misc/developer/conference/proceedi
`ngs/s5/index,html
`” http://www.microsoft.co~iis/usingiis/deveiopin~#ASP
`” http://www,camb.opengroup.org/www/waib~papers/etaco~et
`acom.html
`I3 http://www.javasoft.co~products/java-se~er/se~lets/index.
`html
`
`in C, C++, or Java and these plugins can
`written
`operate equivalently with either base. This cross-
`language compatibility
`is valuable but may not be
`maintained
`in future versions of WBI because of the
`unacceptable restrictions
`that result from program-
`ming
`to the lowest common denominator between
`C++ and Java. Servlets are fundamentally based on
`Java.
`WBI’s programming model places equivalent pro-
`grammability
`at the client, server and Workgroup
`server. Servlets, as the name implies are designed to
`be run on a server in the traditional model.
`WBI has five basic building blocks for construct-
`ing applications, Servlets only has one. Though all
`of the functions can be performed with Servlets, they
`are not optimized. For example, WBI runs Monitors
`at low priority because they do not affect the user
`interface. To implement a Monitor with Servlets, the
`programmer would have to write an editing servlet
`that simply copied
`its input
`to its output
`(an un-
`necessary computational
`load) and then perform
`the
`monitoring
`function.
`Servlets are configured one servlet at a time while
`WBI has a Plugin granularity
`that allows multiple
`MEGs to be configured at once. This plugin
`level
`of granularity
`is more useful for users and system
`administrators.
`WBI’s rule system for dynamically determining
`the data path
`through
`the various MEGs allows
`arbitrarily complex boolean expressions. Servlets are
`limited
`to simple URL and content-type matching.
`With WBI, rules can be dynamically altered to add or
`delete MEGs, or to change their firing condition, all
`under program control. WBI’s priority system allows
`dynamic negotiation of the data path through
`the
`ME&
`In addition, Generators may selectively reject
`
`Oracle Exhibit 1005, page 8
`
`

`
`R. Burreli,
`
`PP Muglio/Computer
`
`Networks
`
`and
`
`ISDN Systems
`
`30 (l998}
`
`509-518
`
`517
`
`requests so that, though the rules might indicate that
`the Generator can handle the request, the Generator
`itself can reject it later. This feature is crucial
`for
`implementing
`important
`functions such as a cache.
`The flow of transactions through Servlets is statically
`configured at server startup or is manually adjusted
`by a system administrator.
`features that are
`Servlets do have a couple of
`the configuration
`missing
`from WBI. Specifically,
`can load Servlets from
`remote servers rather than
`requiring
`them to be manually
`loaded on the same
`machine.
`In addition, a special <SERVLET>
`tag
`allows Servlets to insert dynamic content
`into
`the
`document. These functions can be added to WBI
`without difficulty.
`to be pow-
`the WBI architecture
`We have found
`erfully productive. Though similar
`to several other
`systems, the full-featured
`intermediary paradigm
`is
`unique and gives the programmer unpar

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket