Another abandoned server code base... this is kind of an ancestor of taskrambler.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

528 lines
17 KiB

<?xml version="1.0" encoding="UTF-8"?><!--*- nxml -*-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://www.w3.org/2003/g/data-view">
<title>Web Architecture</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="transformation" href="http://www.w3.org/2002/12/cal/glean-hcal.xsl" />
<link rel="stylesheet" href="http://www.w3.org/2005/03/slideshow.css"
type="text/css" media="screen, projection" />
<script src="http://www.w3.org/2005/03/slideshow.js" type="text/javascript">
</script>
</head>
<body>
<div class="slide"><h1>Web Architecture</h1>
<address class="vcard">
<a class="url fn n" href="http://www.w3.org/People/Connolly/">
<span class="given-name">Dan</span>
<span class="family-name">Connolly</span></a><br />
</address>
<div class="vevent">
<a class="url summary" href="http://captain.park.edu/ics/index.shtml">Park University Department of Information and Computer Science</a><br />
<abbr class="dtstart" title="2005-10-26">26 Oct 2005</abbr>
</div>
<p class="acks">with thanks to Ian Jacobs for <a href="http://www.w3.org/2004/Talks/0121-ij-xmlgov/all.htm">his xml.gov presentation</a></p>
<p><em>postscript: The Park ACM club is hosting a <a
href="mms://flag.park.edu/acm/10_27.wmv">archived video stream</a> of
the presentation.</em></p>
<div><small>$Revision: 1.4 $
of $Date: 2005/10/28 17:30:21 $</small></div>
</div>
<div class="slide"><h1>Overview</h1>
<ol>
<li>W3C's Technical Architecture Group (TAG)</li>
<li>Overview of Architecture of the World Wide Web</li>
<li>Architecture Review of US Patent Office Web Site</li>
</ol>
</div>
<div class="slide"><h1>W3C's Technical Architecture Group</h1>
<p>W3C's <a href="http://www.w3.org/2001/tag/">Technical Architecture
Group</a> was <a
href="http://www.w3.org/2001/07/19-tag">chartered</a> in 2001:</p>
<blockquote>
<p><em>"to document and build consensus around principles of Web
architecture and to interpret and clarify these principles when
necessary."</em></p>
</blockquote>
<p>Roles: write, coordinate, mediate</p>
</div>
<div class="slide"><h1>TAG Participants</h1>
<p>TAG participants elected and appointed at our September 2002
meeting in Vancouver:</p>
<div class="photo"><img align="right"
alt="TAG, posing in front of same motorbike as in Sep 2002, in Vancouver"
src="http://www.w3.org/2003/07/tag-20030723.png" />
</div>
<ol>
<li><a href="http://norman.walsh.name/">Norman Walsh</a>, Sun Microsystems. Docbook guy</li>
<li>Paul Cotton, Microsoft. fulltext industry</li>
<li>Chris Lilley, W3C. SVG lead</li>
<li><a href="http://www.pacificspirit.com/">David Orchard</a>, BEA. Web Services. </li>
<li>Roy Fielding. HTTP spec editor. REST thesis</li>
<li>Tim Berners-Lee, W3C Director</li>
<li>Stuart Williams, HP</li>
<li>Dan Connolly, W3C</li>
<li>Tim Bray, Sun. XML 1.0 co-editor</li>
<li>Ian Jacobs, W3C. Tech writer</li>
</ol>
</div>
<div class="slide"><h1>TAG Participants, all dressed up</h1>
<div class="photo">
<a href="http://www.flickr.com/photos/ndw/sets/998264/">
<img align="right" alt="TAG members in ties!" src="http://static.flickr.com/33/45604663_72c19787da.jpg" /></a>
</div>
<ol>
<li>Henry Thompson, W3C and U. Edinburgh. XML Schema editor</li>
<li>Norman Walsh</li>
<li>David Orchard</li>
<li>Vincent Quint, INRIA</li>
<li>Tim Berners-Lee</li>
<li>Dan Connolly</li>
<li>Roy Fielding</li>
<li>Noah Mendelsohn, IBM</li>
</ol>
</div>
<div class="slide"><h1>Why an Architecture Document?</h1>
<ul>
<li>To distill ten years of experience with the hypertext Web</li>
<li>To help developers of Web technologies avoid pitfalls</li>
<li>To provide guidance to users, site managers, software designers
on promoting a robust Web</li>
<li>To build consensus around concepts and terms</li>
<li>To learn humility...</li>
</ul>
</div>
<div class="slide"><h1>Community Brings Issues to TAG</h1>
<ul>
<li>23 Jan 2002: <a
href="http://lists.w3.org/Archives/Public/www-tag/2002Jan/0182">Potential architecture</a> issue brought
to TAG's attention on public list
www-tag@w3.org
(<a href="http://lists.w3.org/Archives/Public/www-tag/">archive</a>):
<ul>
<li>
HTTP GET deprecated in <a
href="http://www.w3.org/TR/2002/WD-xforms-20020118/">XForms Last Call
Working Draft</a> (<a
href="http://lists.w3.org/Archives/Public/www-tag/2002Jan/0199">background</a>)</li>
</ul>
</li>
<li>29 Jan 2002: TAG <a
href="http://lists.w3.org/Archives/Public/www-tag/2002Jan/0223">accepts</a>
issue <a
href="http://www.w3.org/2001/tag/issues.html?type=1#whenToUseGet-7">whenToUseGet-7</a>.</li>
</ul>
<p>Teleconference and mailing list discussions ensue.</p>
</div>
<div class="slide"><h1>TAG Explores Problem Space</h1>
<p>What makes HTTP GET important?</p>
<ul>
<li>HTTP GET designed so that URI alone encodes interaction; allows linking</li>
<li>Safe/unsafe distinction in protocol enables user agent
support</li>
<li>Requests with no side-effects enable caching of results:
<ul>
<li>At global networking scale, require fast data exchange</li>
<li>Use caching to improve performance (see <a
href="http://www.w3.org/Protocols/HTTP/Performance/Pipeline.html">HTTP/1.1
study</a>)</li>
<li>Design protocols that support caching</li>
</ul>
</li>
</ul>
<p>8 Apr 2002: Dan Connolly <a
href="http://www.w3.org/2002/04/08-tag-summary#When">receives
assignment</a> to write strawman proposal. This evolves into
a draft <a
href="http://www.w3.org/2001/tag/findings"><strong>finding</strong></a>.</p>
</div>
<div class="slide"><h1>TAG Coordinates to Build Consensus</h1>
<ul>
<li>4 May 2002: Making connection to Web Services, David Orchard proposes
<a href="http://www.w3.org/2001/tag/doc/ws-uri-05042002.html">SOAP
HTTP GET Binding Version 0.1</a></li>
<li>3 Jun 2002: David Orchard <a href="http://lists.w3.org/Archives/Public/www-tag/2002Jun/0019">receives
assignment</a> to request of XMLP Working Group that
SOAP 1.2 (then a Working Draft) HTTP binding include GET method.</li>
<li>10 Jun 2002: TAG approves finding
<cite><a href="http://www.w3.org/2001/tag/doc/get7.html">URIs,
Addressability, and the use of HTTP GET</a></cite>.</li>
<li>10 Nov 2002: TAG <a
href="http://www.w3.org/2002/11/25-tag-summary">announces agreement</a>
regarding use of GET.</li>
</ul>
</div>
<div class="slide"><h1>Groups Document Consensus</h1>
<ul>
<li>24 Jun 2003: <a
href="http://www.w3.org/TR/2003/REC-soap12-part2-20030624/">SOAP
Version 1.2 Part 2: Adjuncts</a> becomes a W3C Recommendation,
with GET as part of HTTP binding (see <a href="http://www.w3.org/TR/2003/REC-soap12-part2-20030624/#RPCResourceRetrieval">section 4.1.2</a>)</li>
<li>22 Sep 2003: TAG accepts revised finding
<cite><a href="http://www.w3.org/2001/tag/doc/whenToUseGet-20030922">URIs, Addressability, and the use of HTTP GET and POST</a></cite></li>
<li>14 Oct 2003: <a
href="http://www.w3.org/TR/2003/REC-xforms-20031014/">XForms 1.0</a>
becomes a W3C Recommendation, with support for HTTP GET.</li>
<li>9 Dec 2003: <a
href="http://www.w3.org/TR/2003/WD-webarch-20031209/">Architecture Document to
Last Call</a> with discussion of safe interactions
in <a
href="http://www.w3.org/TR/2003/WD-webarch-20031209/#safe-interaction">section
3.5</a></li>
</ul>
<p>Ongoing: Marking safe operations in WSDL</p>
</div>
<div class="slide"><h1>Negotiation tactics</h1>
<ul>
<li>March 2004: TAG struggling to get webarch document done</li>
<li>Dan was more optimistic than Paul Cotton:
<blockquote>
Let the record show that PC and DC have bet a dinner that at this rate we won't (PC) or we will (DC) get to Recommendation by 2005.
<a href="http://www.w3.org/2004/03/02-tagmem-irc.html#T10-27-36">W3C Tag meeting notes March 2004</a>
</blockquote>
</li>
</ul>
</div>
<div class="slide"><h1>It's a REC! Party!</h1>
<p><a href="http://dm93.org/2005/0501brio-plaza/0501brio-plaza.html"><img align="right" alt="Connollys on the Plaza" src="http://dm93.org/2005/0501brio-plaza/0501brio-plaza-Thumbnails/6.jpg" /></a></p>
<ul>
<li>December 15: with a week or two to spare, W3C issued webarch as a Recommendation. (with <a href="http://www.w3.org/2004/12/webarch-pressrelease.html.en">press release</a> and all)</li>
<li>Paul graciously conceded the bet</li>
<li>Connolly family dines on Paul's nickel</li>
</ul>
</div>
<div class="slide"><h1>What type of information is in the Architecture Document,
Findings?</h1>
<ul>
<li>Properties we desire of the Web, and </li>
<li>Design choices to achieve them.</li>
</ul>
<p>Example related to previous issue:</p>
<dl>
<dt>Principles, Constraints, Good Practice Notes</dt>
<dd>
<ul>
<li>Agents do not incur obligations by retrieving a representation
("GET is safe").</li>
</ul>
</dd>
<dt>Rationale</dt>
<dd>
<ul>
<li>Benefits of URI addressability: linking, bookmarking,
caching</li>
<li>Benefits of distinction in protocols of safe/unsafe: user
agent alerts, caching</li>
</ul>
</dd>
<dt>Stories and examples</dt>
<dd>
<ul>
<li>Examples of safe (lookup) and unsafe (credit card purchase) interactions</li>
<li>Considerations for sensitive data</li>
<li>Practical considerations, ephemeral limitations</li>
</ul>
</dd>
</dl>
</div>
<div class="slide"><h1>Architecture Tripod</h1>
<ol>
<li>Identification</li>
<li>Interaction</li>
<li>Representation</li>
</ol>
</div>
<div class="slide"><h1>Identification I: Why URIs?</h1>
<p>Value of common syntax for global identifiers:</p>
<blockquote>
"Great multiplicative power of reuse derives from the fact that all
languages use URIs as identifiers: This allows things written in one
language to refer to things defined in another language. The use of
URIs allows a language to leverage the many forms of persistence,
identity, and various forms of equivalence."
-- <cite><a
href="http://www.w3.org/2001/tag/doc/whenToUseGet-20030922">URIs, Addressability, and the use of HTTP GET and POST</a></cite>
</blockquote>
<ul>
<li>Power in the network effect.</li>
<li>Extension through URI schemes</li>
</ul>
</div>
<div class="slide"><h1>Identification II: URI Usage</h1>
<ul>
<li>Comparison. Key to Semantic Web, caches</li>
<li>Dereference. Discussed below in Interactions</li>
</ul>
<p>Due to global scope, URIs also used outside of Web protocols (e.g.,
as database keys).</p>
</div>
<div class="slide"><h1>Interaction I: Dereferencing a URI</h1>
<ul>
<li>Communication between agents involves URIs, messages, data</li>
<li>Dereference a URI, get back a representation of resource state</li>
<li>Representation consists of representation data
and metadata (e.g., Internet Media Type).</li>
</ul>
</div>
<div class="slide"><h1>Interaction II: Dereferencing a URI (illustration)</h1>
<p class="center"><img src="http://www.w3.org/TR/2003/WD-webarch-20031209/uri-res-rep.png" alt="A resource (Oaxaca Weather Info) is
identified by a particular URI and is represented by pseudo-HTML
content"/></p>
</div>
<div class="slide"><h1>Interaction III: Managing Representations</h1>
<ul>
<li>Internet Media Type</li>
<li>Representations evolve over time as resource, technology
evolves</li>
<li>Consistency in representation increases trust in URI</li>
<li>Content negotiation facilitates evolution</li>
<li>Fragment identifier semantics and content negotiation</li>
</ul>
</div>
<div class="slide"><h1>Interaction IV: Issues Raised by Interaction</h1>
<ul>
<li>Safe, unsafe interactions</li>
<li>Sensitive data</li>
<li>Access control independent of identification (cf. <a
href="http://www.w3.org/2001/tag/doc/deeplinking-20030911">Deep
Linking Finding</a>)</li>
<li>Metadata from representation provider authoritative.
Other behavior ok, but requires transparency for user.</li>
</ul>
</div>
<div class="slide"><h1>Representation: Data formats</h1>
<ul>
<li>Data formats used to organize representation data</li>
<li>Data format considerations: binary v. text, extensibility,
versioning, composition, modularization</li>
<li>Hypertext</li>
<li>XML-based data formats: links, namespaces, qnames, media types</li>
</ul>
</div>
<div class="slide"><h1>Architecture Review of US Patent Office Web Site</h1>
<p>Review of the <a href="http://www.uspto.gov/">United States
Patent and Trademark Office</a> revealed:</p>
<ol>
<li>HTTP GET used for database lookup (good)</li>
<li>HTTP GET used for unsafe interactions (not good)</li>
<li>URI for patent is actually URI for search (not optimal)</li>
<li>POST used to protect sensitive login data (design choice)</li>
</ol>
</div>
<div class="slide"><h1>HTTP GET used for database lookup</h1>
<p>HTML "GET" form used for <a
href="http://patft.uspto.gov/netahtml/search-bool.html">database
lookup</a>:</p>
<pre>
&lt;form action="/netacgi/nph-Parser" method="GET"&gt;
</pre>
<p>Use GET for queries, searches, database lookups.</p>
</div>
<div class="slide"><h1>HTTP GET used for unsafe interactions (not good)</h1>
<p>Modifying state of shopping cart is unsafe since produces
side-effect:</p>
<ul>
<li><a
href="http://patft.uspto.gov/netahtml/search-bool.html">Search</a>
with keyword "hypertext"</li>
<li>Select <a href="http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&amp;Sect2=HITOFF&amp;p=1&amp;u=/netahtml/search-bool.html&amp;r=1&amp;f=G&amp;l=50&amp;co1=AND&amp;d=ptxt&amp;s1=hypertext&amp;OS=hypertext&amp;RS=hypertext">Patent 6,678,889</a>: "Systems, methods and
computer program ...."</li>
<li>Add to cart, view "Quantity" (1)</li>
<li>Hit back button, add to cart, view "Quantity" (2)</li>
</ul>
<p>"Add to Cart" an HTML link:</p>
<pre>
&lt;a href=".../AddToShoppingCart?docNumber=6,678,889..."&gt;...
</pre>
<p>I cannot link to shopping cart from this slide; a search engine or
pre-fetching agent might increment counter (cf. <a href="http://www.w3.org/TR/SVG12/#prefetch">SVG 1.2, section 11.8</a>.</p>
<p>In HTML, use "POST" form for unsafe operations.</p>
</div>
<div class="slide"><h1>URI for patent is actually URI for search (not optimal)</h1>
<p>What might a URI for a patent look like?</p>
<pre>
http://www.uspto.gov/patents/p6678889
</pre>
<p>Note that this is globally unambiguous; better than "6678889"</p>
<p>Search produced this URI for search on "hypertext":</p>
<pre>
http://patft.uspto.gov/...s1=hypertext&amp;OS=hypertext...
</pre>
<p>Search produced this URI for search by patent number 6,678,899:</p>
<pre>
http://patft.uspto.gov/...s1=6,678,889.WKU....
</pre>
<p>Why are these URIs different if this is the same patent?</p>
</div>
<div class="slide"><h1>Cost of Arbitrarily Different URIs</h1>
<p>At first, I thought these URIs were arbitrarily different
URIs for the same resource. If so, machines cannot
compare reliably, so:</p>
<ul>
<li>Interferes with caching</li>
<li>Semantic Web does not work</li>
<li>Site management more complex</li>
</ul>
</div>
<div class="slide"><h1>Identify Results of Search, not Search</h1>
<p>Resource only indirectly identified as query result.</p>
<ul>
<li>My expectation is not to bookmark search, but result of search</li>
<li>Search might return different results another day; I want to
refer to the patent.</li>
</ul>
<p>Related in Architecture Document:</p>
<ul>
<li>Avoid URI ambiguity.</li>
<li>Publishers of a URI SHOULD provide representations of the
identified resource consistently and predictably.</li>
<li>URI persistence</li>
</ul>
</div>
<div class="slide"><h1>POST used to protect sensitive login data (design choice)</h1>
<ul>
<li>GET allows URIs (bookmarking, back button), but
we don't want sensitive data in URI.</li>
<li>Choices include:
<ul>
<li>GET with HTTP Basic Authentication over SSL: Sensitive
data in HTTP headers, so allows bookmarking. User agent
manages passwords.</li>
<li>POST over SSL</li>
</ul>
</li>
<li>However, cost to SSL as well</li>
</ul>
<p>Think about these architecture issues, tradeoffs during design!
See <cite><a
href="http://www.w3.org/2001/tag/doc/whenToUseGet-20030922">URIs,
Addressability, and the use of HTTP GET and POST</a></cite></p>
</div>
<div class="slide"><h1>Future work</h1>
<ul>
<li><a href="http://www.w3.org/2001/tag/issues.html">Issues</a> the TAG has not resolved for First Edition</li>
<li>Other systems that make use of URI space: Web
Services, Semantic Web</li>
<li>Internationalized URIs (<a href="http://www.w3.org/2001/tag/issues.html#IRIEverywhere-27">IRIEverywhere-27</a>)</li>
<li>XML canonicalization</li>
<li>Binary XML (<a href="http://lists.w3.org/Archives/Public/www-tag/2002Jan/0182">binaryXML-30</a>)</li>
<li>Mixing XML Namespaces (<a href="http://www.w3.org/2001/tag/issues.html#mixedUIXMLNamespace-33">mixedUIXMLNamespace</a>)</li>
</ul>
</div>
<div class="slide"><h1>Questions?</h1>
<p>For more info:</p>
<ul>
<li><a href="http://www.w3.org/">W3C</a></li>
<li><cite><a href="http://www.w3.org/TR/webarch/">Architecture of the World Wide Web, Volume One</a></cite><br />
W3C Recommendation 15 December 2004</li>
<li><a href="http://www.w3.org/2001/tag/">W3C Technical Architecture Group</a></li>
</ul>
</div>
</body>
</html>