The Web Graph Database

Changes between Version 6 and Version 7 of Docs/REST


Ignore:
Timestamp:
01/19/10 16:58:30 (4 years ago)
Author:
http://mylid.net/jernst
Comment:

editorial improvements

Legend:

Unmodified
Added
Removed
Modified
  • Docs/REST

    v6 v7  
    11= Representational State Transfer (REST) and URLs in !InfoGrid = 
    22 
    3 We might as well up-front about it. In our view, if there were a Nobel price for software technology, the one accomplishment that stands heads and shoulders above the rest (of at least the rest we know of) in the past 20 years or so in technological progress is the invention of the [http://en.wikipedia.org/wiki/REST REST] model. Many have pointed out how simple REST is, and how little it actually defines. That, in our view, is not a bug but a feature; an absolutely exceptional feature that requires true brilliance to accomplish. A consequently applied REST-ful architecture is one of the most simplifying, and consistency-enforcing architectural approaches that we are aware of. 
     3We might as well up-front about it. In our view, if there were a Nobel price for software technology, the one accomplishment that stands heads and shoulders above the rest (of at least the rest we know of) in the past 20 years or so in software-technological progress is the invention of the [http://en.wikipedia.org/wiki/REST REST] model. Many have pointed out how simple REST is, and how little it actually defines. That, in our view, is not a bug but a feature; an absolutely exceptional feature that requires true brilliance to accomplish. A consequently applied REST-ful architecture is one of the most simplifying, and consistency-enforcing architectural approaches that we are aware of. 
    44 
    55It is also the only approach that allowed the internet to grow at the rate and to the size at which it has grown in past years. Can you imagine an internet growing at the same rate based on WS-whatever? That observation alone should give us pause. 
    66 
    7 On the other hand, it is clear that REST by itself is a great architectural principle and protocol, but of course far from sufficient to define a software architecture for InfoGrid or anything else. So we extended REST for the purposes we have for InfoGrid, all while hoping to not violate any of its core principles but add additional richness to it. 
     7On the other hand, it is clear that REST by itself is a great architectural principle and protocol, but of course far from sufficient to define a software architecture for !InfoGrid or anything else. So we extended REST for the purposes we have for !InfoGrid, all while hoping to not violate any of its core principles but add additional richness to it. 
    88 
    99In no particular order: 
     
    1414 * We notice that websites often expose the (semantically) same information at slightly differing URLs with different rendering, for example to serve different clients or audiences or client preferences. An example would be an RSS feed that contains the same information as an HTML page, each of which might further be parameterized (e.g. maximum number of items on page). We interpret this observation as clients accessing the same MeshObject, but conveying, as part of the access, preferences on the type of resource they wish to receive from the MeshObject. The MeshObject - actually, the [wiki:Docs/ViewletFramework Viewlet Framework] in conjunction with the MeshObject - has a large amount of discretion on whether and how to honor those preferences. 
    1515 
    16  * We observe that many hyperlinks on the web are not just tools of convenience, to say, not having to remember the URLs of certain resources, but represent semantic relationships. For example, a web page containing past-due accounts with hyperlinks to the details of each past-due customer represents the semantic relationship between the past-due amount and a customer. Hyperlinks are just the surface representation in how they are rendered for easy human consumption. Correspondingly, we designed an abstract relationship structure between [wiki:MeshObject MeshObjects] first, and then offer facilities how to render those relationships as part of the negotiation between client and MeshObject about how the returned resource should be rendered. If anything, this is probably the most conceptually substantial addition that !InfoGrid brings to REST and the web. 
     16 * We observe that many hyperlinks on the web are not just tools of convenience, to say, not having to remember the URLs of certain resources, but represent semantic relationships. For example, a web page containing past-due accounts with hyperlinks to the details of each past-due customer represents the semantic relationship between the past-due amount and a customer. Hyperlinks are just the surface representation in how they are rendered for easy human consumption. Correspondingly, we designed a [wiki:MeshObjectGraph graph] structure for [wiki:MeshObject MeshObjects]. We then offer facilities how to render those relationships as part of the negotiation between client and MeshObject about how the returned resource should be rendered. If anything, this is probably the most conceptually substantial addition that !InfoGrid brings to REST and the web. 
    1717 
    1818 * REST is silent on the subject of security and access control. We subscribe to the notion of REST-ful identity (the leading contender of which is OpenID) and allow [wiki:MeshObject MeshObjects], or mediators on their behalf, to exhibit different behavior based on the identity of the client. The !InfoGrid philosophy does not care by which means a client authenticates; only that any MeshObject has the ability to determine whether a client authenticated, and as who (using a URL to - conceptually - identify the MeshObject that is the client), and based on that information, adjust its behavior. 
    1919 
     20See also: 
     21 * MeshObject 
     22 * MeshObjectGraph 
     23 * [wiki:Replica] 
     24 * ReplicaGraph 
     25 * [wiki:Docs/ViewletFramework Viewlet Framework] 
     26 * Wikipedia entry on [http://en.wikipedia.org/wiki/REST REST] 
     27 * [wiki:XPRISO].