advanced seaside

46
Advanced ESUG 2012 Ghent Aug 30, 2012 Thursday, August 30, 12

Upload: esug

Post on 20-May-2015

776 views

Category:

Technology


1 download

DESCRIPTION

ESUG 2012, Ghent

TRANSCRIPT

Page 1: Advanced Seaside

AdvancedESUG 2012 Ghent

Aug 30, 2012

Thursday, August 30, 12

Page 2: Advanced Seaside

Seaside 2.x

Seaside

Thursday, August 30, 12

Page 3: Advanced Seaside

Seaside 3.x

Core

SessionComponent

Javascript

JQuery

Thursday, August 30, 12

Page 4: Advanced Seaside

What is Seaside-Core

• “Seaside Meta”

• Web Framework Framework

• HTTP Abstraction

• Servlet API

• Rack

• WSGI

Thursday, August 30, 12

Page 5: Advanced Seaside

Why Seaside-Core

• portable (dialect and server)

• battle tested

• objects, not strings

• familiar objects

• negligible overhead

Thursday, August 30, 12

Page 6: Advanced Seaside

Seaside 3.x

Core

Component

Thursday, August 30, 12

Page 7: Advanced Seaside

Seaside 3.x

Core

Component REST

Thursday, August 30, 12

Page 8: Advanced Seaside

Seaside 3.x

Core

Component REST …

Thursday, August 30, 12

Page 9: Advanced Seaside

WARequestHandler

RH

Request

Response

Thursday, August 30, 12

Page 10: Advanced Seaside

WARequestHandler

RH RH RH

/esug /2012/conferences

Thursday, August 30, 12

Page 11: Advanced Seaside

WARequestFilter

RH

Thursday, August 30, 12

Page 12: Advanced Seaside

WASession 2.8

• current request

• jump to

• last continuation

• continuations

• monitor

• …

Thursday, August 30, 12

Page 13: Advanced Seaside

WASession 3.x

• continuations

• properties

• (document handlers)

Thursday, August 30, 12

Page 14: Advanced Seaside

WARequestContext

• request

• response

• handler stack

Thursday, August 30, 12

Page 15: Advanced Seaside

Request Handler Stack

1 2 3

1

2

1

2

1

3

Thursday, August 30, 12

Page 16: Advanced Seaside

WAPathConsumer

RH RH RH

/conferences/esug/2012/…

/esug/2012/… /2012/… /…

Thursday, August 30, 12

Page 17: Advanced Seaside

WADispatcher

‘conferences’ -> aRequestHandler ‘sponsors’ -> aRequestHandler ‘…’ -> aRequestHanlder

Thursday, August 30, 12

Page 18: Advanced Seaside

WASeverAdapter

SAWARequest

WARespone

RHXXRequest

XXRespone

provides template methods for convertingprovides start and stop hooksprovides easy integration with server manager UIyou don’t have to use itsets up request context

WARequestContext

Thursday, August 30, 12

Page 19: Advanced Seaside

Franka micro framework inspired by Sinatra

Thursday, August 30, 12

Page 20: Advanced Seaside

Seaside-REST

Thursday, August 30, 12

Page 21: Advanced Seaside

Disclaimer

• REST in this context simply means “pretty URLs”

• pretty URLs for web services, not web applications

• this will feel a little weird

Thursday, August 30, 12

Page 22: Advanced Seaside

index <get> ^ ‘Hello World’

Thursday, August 30, 12

Page 23: Advanced Seaside

index <get> <path: ‘index.html’> ^ ‘Hello World’

Thursday, August 30, 12

Page 24: Advanced Seaside

indexHtml <get> <path: ‘index’> <produces: ‘text/html’> ^ ‘<h1>Hello World</h1>’

Accept: text/html

Thursday, August 30, 12

Page 25: Advanced Seaside

indexXml <get> <path: ‘index’> <produces: ‘text/xml’> ^ ‘<hello><world/></hello>’

Accept: text/xml

Thursday, August 30, 12

Page 26: Advanced Seaside

uploadXml <post> <consumes: ‘text/xml’> …

Content-Type: text/xml

Thursday, August 30, 12

Page 27: Advanced Seaside

uploadCsv <post> <consumes: ‘text/csv’> …

Content-Type: text/csv

Thursday, August 30, 12

Page 28: Advanced Seaside

getAllStartingAt: start limit: limit named: name <get> <path: ‘/{name}/_all_docs?start={start}&limit={limit}’> ...

Thursday, August 30, 12

Page 29: Advanced Seaside

#shouldCacheRoutes

Thursday, August 30, 12

Page 30: Advanced Seaside

WARestfulComponentFilter

count: count <get> <path: '/{count}'> self startSessionWithRoot: (WACounter new count: count greaseInteger; yourself)

Thursday, August 30, 12

Page 31: Advanced Seaside

Data Binding

• XML or JSON canvas

• Magritte-XML

• Magritte-JSON

Thursday, August 30, 12

Page 32: Advanced Seaside

Dialects

• GemStone

• Pharo

• VAST

Thursday, August 30, 12

Page 33: Advanced Seaside

Seaside 3.1

Thursday, August 30, 12

Page 34: Advanced Seaside

Session Tracking Fully Customizable

• query fields

• cookie only

• cookie if supported, query field otherwise

• cookie for browser, IP for crawler

• SSL session id (*)

• path parameter (*)

Thursday, August 30, 12

Page 35: Advanced Seaside

Path Parameter

• /;_s=KAAWl0x3c6KLnN6Q

• doesn’t need to be hidden form parameter

• required by some load balancers

Thursday, August 30, 12

Page 36: Advanced Seaside

WAMain gone

• specify initial continuation

• subclass WASessionContinuation if you used to subclass WAMain

Thursday, August 30, 12

Page 37: Advanced Seaside

WAPluggableActionContinuation

• replace WAActionPhaseContinuation subclasses with WACallbackProcessingActionContinuation subclasses

Thursday, August 30, 12

Page 38: Advanced Seaside

JSON

• separate from JavaScript

• various subtle bugs fixed

• canvas API

Thursday, August 30, 12

Page 39: Advanced Seaside

Streaming Redone

• on demand flushing

• continuation that flushes after rendering </head>

• better portability to other servers

Thursday, August 30, 12

Page 40: Advanced Seaside

HTML 5

•#multipleValuesCallback:

Thursday, August 30, 12

Page 41: Advanced Seaside

Document Handlers

• stored in session

• no longer stored alongside sessions

• _d

Thursday, August 30, 12

Page 42: Advanced Seaside

Other News

• Nick now part of core team

• experimental Pharo 2.0 support

• walkback should open at correct place in VW

• platforms can implement optimized HTML escaping

Thursday, August 30, 12

Page 43: Advanced Seaside

Help Wanted

• Morphic Control panel for Pharo 2.0

Thursday, August 30, 12

Page 44: Advanced Seaside

Seaside Sprint

• Friday at Vooruit

• Saturday at Camp location

• (Sunday)

Thursday, August 30, 12

Page 45: Advanced Seaside

Seaside Sprint Sponsors

• Reza Razavi

• 2Rivers

Thursday, August 30, 12

Page 46: Advanced Seaside

Links

• https://github.com/marschall/esug-2012-presentation

• http://ss3.gemstone.com/ss/frank

• http://code.google.com/p/seaside/wiki/Seaside310Changelog

• http://book.seaside.st/book/advanced/restful

• http://code.google.com/p/seaside/wiki/SeasideRest

Thursday, August 30, 12