2. What is REST ? Roy Fielding dissertation (2000) http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm Representational State Transfer (REST) is an architecture, not a standard. REST is based on http, xml, uristandards REST is everywhere already twitter API http://dev.twitter.com/doc Dropbox API https://www.dropbox.com/developers/docs Google MAP API Web services http://code.google.com/apis/maps/documentation/webservices/index.html ….
3.
4. Stateless Client context is not stored on the server between requests. Each request from any client contains all of the information necessary to service the request, and any session state is held in the client. The server can be stateful; this constraint merely requires that server-side state be addressable by URL as a resource
5. Cacheable As on the World Wide Web, clients are able to cache responses. Responses must therefore, implicitly or explicitly, define themselves as cacheable, or not, to prevent clients reusing stale or inappropriate data in response to further requests. Well-managed caching partially or completely eliminates some client–server interactions, further improving scalability and performance.
6. Layered system A client cannot ordinarily tell whether it is connected directly to the end server, or to an intermediary along the way. Intermediary servers may improve system scalability by enabling load balancing and by providing shared caches. They may also enforce security policies.
7. Code on demand Servers are able to temporarily extend or customize the functionality of a client by transferring logic to it that it can execute. Examples of this may include client-side scripts such as JavaScript.
8. Uniform interface The uniform interface between clients and servers simplifies and decouples the architecture, which enables each part to evolve independently. The four guiding principles of this interface are:Identification of resources (e.g. URI), Manipulation of resources, Self-descriptive messages, Hypermedia as the engine of application statehttp://http://en.wikipedia.org/wiki/Representational_State_Transfer
9. methods PUT and DELETE are defined to be idempotent - multiple identical requests should have the same effect as a single request POST is not necessarily idempotent, and therefore sending an identical POST request multiple times may further affect state or cause further side effects See also HEAD, OPTIONS and TRACE methods Potential use: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
10. What is REST 3D ? 3D as a web service http://rest3d request Web Server Client application Response document Cloud Storage
11. Multiple services – same API Web Server Web Server Web Server Client application Cloud Storage Cloud Storage Cloud Storage
12. Multiple applications Client application Web Server Web Server Web Server Client application Cloud Storage Cloud Storage Cloud Storage Client application
13. rest 3d methods Potential use model: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
14. Use case 1 – content gathering Program interface to content repositories. Current state requires human in the loop, and content creation tool to explore the model. http://sketchup.google.com/3dwarehouse/ http://www.3dvia.com/ http://www.3dcadbrowser.com/ http://www.3d02.com/ http://www.turbosquid.com/ …
15.
16. browse – Avoid downloading all the 3D models that matches the search, this feature provides information about the models such as number of polygons, date, tool used to create the model, …
17. traverse – explore the model hierarchy, and sub parts or/and categories.
18. dependencies - list all the dependencies, for instance the list of textures, shaders, or other parts of the model
19. filter – select only the parts needed by the client. Allows for texture/3D LOD selection, paging…
20.
21. scene – Create a scene and position the models in the scene
22. viewer – extend the client with a viewer application (<embed>) of the created scene.
27. version – server list all the different versions available, with metadata
28. diff / merge – provide tools to show the difference between versions
29. process – provide tools to process the models, mesh optimization, texture atlas,
30.
31. Typical xml ‘model’ http://scenejsorg.ipage.com/dist/curr/extr/examples/tron-tank/extras/tron-tank-model.dae
32. XML & XHTML Embed 3D in html page http://www.xml3d.org/ http://www.x3dom.org/ Dynamically load 3D into DOM (o3d) http://capstone.azurenet.net/web3d/demo/ varfloat_array=textValue.split(" ").map(parseFloat); DOM (jquery) allow for fast tree parsing/modifications Direct XML export (POST/PUT) to server
33. Typical json ‘model’ https://github.com/mrdoob/three.js/blob/master/examples/obj/Suzanne.js myData = JSON.parse(text, function (key, value) { if (value && typeof value === 'object') {… return value; }}); Need convention for attributes vs value, not easy to go back to XML