Advanced                           ESUG 2012 Ghent                             Aug 30, 2012Thursday, August 30, 12
Seaside 2.x                            SeasideThursday, August 30, 12
Seaside 3.x                          Core        Javascript                                 JQuery                        ...
What is Seaside-Core                     • “Seaside Meta”                     • Web Framework Framework                   ...
Why Seaside-Core                     • portable (dialect and server)                     • battle tested                  ...
Seaside 3.x                             Core                          ComponentThursday, August 30, 12
Seaside 3.x                               Core                   Component            RESTThursday, August 30, 12
Seaside 3.x                             Core             Component          REST    …Thursday, August 30, 12
WARequestHandler                           Request                          Response                                     R...
WARequestHandler                          /conferences   /esug   /2012                             RH          RH      RHT...
WARequestFilter                                 RHThursday, August 30, 12
WASession 2.8                     • current request                     • jump to                     • last continuation ...
WASession 3.x                     • continuations                     • properties                     • (document handler...
WARequestContext                     • request                     • response                     • handler stackThursday,...
Request Handler Stack                          1    2       3                          1     1      1                     ...
WAPathConsumer                               /conferences/esug/2012/…                          RH                RH       ...
WADispatcher                          ‘conferences’ -> aRequestHandler                             ‘sponsors’ -> aRequestH...
WASeverAdapter                                   provides template methods for converting                                 ...
Frank                          a micro framework inspired by SinatraThursday, August 30, 12
Seaside-RESTThursday, August 30, 12
Disclaimer                     •    REST in this context simply means “pretty URLs”                     •    pretty URLs f...
index                      <get>                      ^ ‘Hello World’Thursday, August 30, 12
index                      <get>                      <path: ‘index.html’>                      ^ ‘Hello World’Thursday, A...
indexHtml                      <get>                      <path: ‘index’>                      <produces: ‘text/html’>    ...
indexXml                      <get>                      <path: ‘index’>                      <produces: ‘text/xml’>      ...
uploadXml                      <post>                      <consumes: ‘text/xml’>                      …                  ...
uploadCsv                      <post>                      <consumes: ‘text/csv’>                      …                  ...
getAllStartingAt: start limit: limit named: name      <get>      <path: ‘/{name}/_all_docs?start={start}&limit={limit}’>  ...
#shouldCacheRoutesThursday, August 30, 12
WARestfulComponentFilter   count: count   	 <get>   	 <path: /{count}>   	 self startSessionWithRoot: (WACounter new   	 	...
Data Binding                     • XML or JSON canvas                     • Magritte-XML                     • Magritte-JS...
Dialects                     • GemStone                     • Pharo                     • VASTThursday, August 30, 12
Seaside 3.1Thursday, August 30, 12
Session Tracking Fully Customizable                     • query fields                     • cookie only                   ...
Path Parameter                     • /;_s=KAAWl0x3c6KLnN6Q                     • doesn’t need to be hidden form parameter ...
WAMain gone                     • specify initial continuation                     • subclass WASessionContinuation if you...
WAPluggableActionContinuation                     • replace WAActionPhaseContinuation                          subclasses ...
JSON                     • separate from JavaScript                      • various subtle bugs fixed                     • ...
Streaming Redone                     •    on demand flushing                     •    continuation that flushes after render...
HTML 5                     •#multipleValuesCallback:Thursday, August 30, 12
Document Handlers                     • stored in session                      • no longer stored alongside sessions      ...
Other News                     • Nick now part of core team                     • experimental Pharo 2.0 support          ...
Help Wanted                     • Morphic Control panel for Pharo 2.0Thursday, August 30, 12
Seaside Sprint                     • Friday at Vooruit                     • Saturday at Camp location                    ...
Seaside Sprint Sponsors                     • Reza Razavi                     • 2RiversThursday, August 30, 12
Links                     •    https://github.com/marschall/esug-2012-presentation                     •    http://ss3.gem...
Upcoming SlideShare
Loading in...5
×

Advanced Seaside

818

Published on

ESUG 2012, Ghent

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
818
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Advanced Seaside

  1. 1. Advanced ESUG 2012 Ghent Aug 30, 2012Thursday, August 30, 12
  2. 2. Seaside 2.x SeasideThursday, August 30, 12
  3. 3. Seaside 3.x Core Javascript JQuery Session ComponentThursday, August 30, 12
  4. 4. What is Seaside-Core • “Seaside Meta” • Web Framework Framework • HTTP Abstraction • Servlet API • Rack • WSGIThursday, August 30, 12
  5. 5. Why Seaside-Core • portable (dialect and server) • battle tested • objects, not strings • familiar objects • negligible overheadThursday, August 30, 12
  6. 6. Seaside 3.x Core ComponentThursday, August 30, 12
  7. 7. Seaside 3.x Core Component RESTThursday, August 30, 12
  8. 8. Seaside 3.x Core Component REST …Thursday, August 30, 12
  9. 9. WARequestHandler Request Response RHThursday, August 30, 12
  10. 10. WARequestHandler /conferences /esug /2012 RH RH RHThursday, August 30, 12
  11. 11. WARequestFilter RHThursday, August 30, 12
  12. 12. WASession 2.8 • current request • jump to • last continuation • continuations • monitor •…Thursday, August 30, 12
  13. 13. WASession 3.x • continuations • properties • (document handlers)Thursday, August 30, 12
  14. 14. WARequestContext • request • response • handler stackThursday, August 30, 12
  15. 15. Request Handler Stack 1 2 3 1 1 1 2 2 3Thursday, August 30, 12
  16. 16. WAPathConsumer /conferences/esug/2012/… RH RH RH /esug/2012/… /2012/… /…Thursday, August 30, 12
  17. 17. WADispatcher ‘conferences’ -> aRequestHandler ‘sponsors’ -> aRequestHandler ‘…’ -> aRequestHanlderThursday, August 30, 12
  18. 18. WASeverAdapter provides template methods for converting provides start and stop hooks provides easy integration with ser ver manager UI you don’t have to use it sets up request context XXRequest WARequest SA RH XXRespone WARespone WARequestContextThursday, August 30, 12
  19. 19. Frank a micro framework inspired by SinatraThursday, August 30, 12
  20. 20. Seaside-RESTThursday, August 30, 12
  21. 21. Disclaimer • REST in this context simply means “pretty URLs” • pretty URLs for web services, not web applications • this will feel a little weirdThursday, August 30, 12
  22. 22. index <get> ^ ‘Hello World’Thursday, August 30, 12
  23. 23. index <get> <path: ‘index.html’> ^ ‘Hello World’Thursday, August 30, 12
  24. 24. indexHtml <get> <path: ‘index’> <produces: ‘text/html’> ^ ‘<h1>Hello World</h1>’ Accept: text/htmlThursday, August 30, 12
  25. 25. indexXml <get> <path: ‘index’> <produces: ‘text/xml’> ^ ‘<hello><world/></hello>’ Accept: text/xmlThursday, August 30, 12
  26. 26. uploadXml <post> <consumes: ‘text/xml’> … Content-Type: text/xmlThursday, August 30, 12
  27. 27. uploadCsv <post> <consumes: ‘text/csv’> … Content-Type: text/csvThursday, August 30, 12
  28. 28. getAllStartingAt: start limit: limit named: name <get> <path: ‘/{name}/_all_docs?start={start}&limit={limit}’> ...Thursday, August 30, 12
  29. 29. #shouldCacheRoutesThursday, August 30, 12
  30. 30. WARestfulComponentFilter count: count <get> <path: /{count}> self startSessionWithRoot: (WACounter new count: count greaseInteger; yourself)Thursday, August 30, 12
  31. 31. Data Binding • XML or JSON canvas • Magritte-XML • Magritte-JSONThursday, August 30, 12
  32. 32. Dialects • GemStone • Pharo • VASTThursday, August 30, 12
  33. 33. Seaside 3.1Thursday, August 30, 12
  34. 34. 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
  35. 35. Path Parameter • /;_s=KAAWl0x3c6KLnN6Q • doesn’t need to be hidden form parameter • required by some load balancersThursday, August 30, 12
  36. 36. WAMain gone • specify initial continuation • subclass WASessionContinuation if you used to subclass WAMainThursday, August 30, 12
  37. 37. WAPluggableActionContinuation • replace WAActionPhaseContinuation subclasses with WACallbackProcessingActionContinuation subclassesThursday, August 30, 12
  38. 38. JSON • separate from JavaScript • various subtle bugs fixed • canvas APIThursday, August 30, 12
  39. 39. Streaming Redone • on demand flushing • continuation that flushes after rendering </head> • better portability to other serversThursday, August 30, 12
  40. 40. HTML 5 •#multipleValuesCallback:Thursday, August 30, 12
  41. 41. Document Handlers • stored in session • no longer stored alongside sessions • _dThursday, August 30, 12
  42. 42. 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 escapingThursday, August 30, 12
  43. 43. Help Wanted • Morphic Control panel for Pharo 2.0Thursday, August 30, 12
  44. 44. Seaside Sprint • Friday at Vooruit • Saturday at Camp location • (Sunday)Thursday, August 30, 12
  45. 45. Seaside Sprint Sponsors • Reza Razavi • 2RiversThursday, August 30, 12
  46. 46. 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/SeasideRestThursday, August 30, 12
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×