Apache Sling

Post on 10-May-2015

2,874 views 7 download

Tags:

transcript

Apache SlingAndreas Hartmann

CTO, BeCompany GmbH

REST

REpresentational State Transfer

Roy T. Fielding‘s dissertation

Not a technology/standard/software

Set of architectural constraints

Optimized for common use-cases of the WWW (based on experience)

REST in the WWW

HTML docs (representations) = states

Hyperlinks + forms = transitions

/products

/products/lenya

GET /products/lenya

/products/cocoon

POST /products/cocoontitle=Apache%20Cocoon

Concerns

Simplicity

Visibility

Reusability

Scalability

Reliability

Extensibility

Cacheability

Efficiency

REST Constraints

Client-Server

Layered transport (firewalls, proxies, …)

Caching

Stateless server

Uniform interface

Code on demand

REST Data Elements

Resource (anything that can be addressed, independent of a particular point in time)

URIs to identify resources

Resource metadata: source link, alternates, …

Representation = data (byte sequence)

Repr. metadata: media type, last modified, …

Uniform Interface

Representation of resources in one of an emerging set of standard formats

Uniform resource identification mechanism

Messages are self-descriptive:representation/resource/control metadata

Intermediaries can transform the messages,e.g. compressing for optimized transport

Common Violations

Indirect application state:Addressing and caching issues

Cookies (server-side state)Frames

Incremental processing issuesEmbedding metadata in HTML head<img> without @width, @heightdynamically sized table columns

Apache Sling

Web application framework

JCR for content storage

Process HTTP requests in a RESTful way

Scripts (JSR-233) or Servlets for processing

OSGi for deploying modules at runtime

Application Scenarios

Everything (well, „everything is content“)

WCM, DAM, Wiki, Blog, ERP, …

Especially for content-oriented applications

Sling encourages REST

Thinking in resources (mapped to JCR nodes)

Representation selection (HTML, Atom, PDF, …) via part of URI

Uniform interface for content handling:GET + POST + PUT + DELETE

UnRESTful Addressing

/product ?id=13423.jsp

URI doesn't addressthe resource

Not part of URI:not cacheable

Request Processing in Sling

/news/today .atom

Resource

sling:resourceType

Servlet / Script

feed

/apps/feed/atom.esp

/news/today ?title=Today

Resource

sling:resourceType

Servlet / Script

feed

/apps/feed/PUT.esp

GET PUT

Sling Demo

Start application

Connect via WebDAV

Connect via Eclipse Plug-In

Dojo Tree Example