SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
Advanced
                           ESUG 2012 Ghent
                             Aug 30, 2012



Thursday, August 30, 12
Seaside 2.x


                            Seaside



Thursday, August 30, 12
Seaside 3.x

                          Core        Javascript

                                 JQuery
                                          Session
                      Component

Thursday, August 30, 12
What is Seaside-Core
                     • “Seaside Meta”
                     • Web Framework Framework
                     • HTTP Abstraction
                     • Servlet API
                     • Rack
                     • WSGI
Thursday, August 30, 12
Why Seaside-Core

                     • portable (dialect and server)
                     • battle tested
                     • objects, not strings
                     • familiar objects
                     • negligible overhead

Thursday, August 30, 12
Seaside 3.x

                             Core


                          Component

Thursday, August 30, 12
Seaside 3.x

                               Core


                   Component            REST


Thursday, August 30, 12
Seaside 3.x

                             Core


             Component          REST    …


Thursday, August 30, 12
WARequestHandler

                           Request


                          Response
                                     RH



Thursday, August 30, 12
WARequestHandler

                          /conferences   /esug   /2012


                             RH          RH      RH



Thursday, August 30, 12
WARequestFilter



                                 RH



Thursday, August 30, 12
WASession 2.8
                     • current request
                     • jump to
                     • last continuation
                     • continuations
                     • monitor
                     •…
Thursday, August 30, 12
WASession 3.x

                     • continuations
                     • properties
                     • (document handlers)


Thursday, August 30, 12
WARequestContext

                     • request
                     • response
                     • handler stack


Thursday, August 30, 12
Request Handler Stack

                          1    2       3

                          1     1      1

                                2      2

                                       3




Thursday, August 30, 12
WAPathConsumer
                               /conferences/esug/2012/…




                          RH                RH            RH

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


Thursday, August 30, 12
WADispatcher


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




Thursday, August 30, 12
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


                            WARequestContext

Thursday, August 30, 12
Frank
                          a micro framework inspired by Sinatra




Thursday, August 30, 12
Seaside-REST



Thursday, August 30, 12
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
index
                      <get>
                      ^ ‘Hello World’




Thursday, August 30, 12
index
                      <get>
                      <path: ‘index.html’>
                      ^ ‘Hello World’




Thursday, August 30, 12
indexHtml
                      <get>
                      <path: ‘index’>
                      <produces: ‘text/html’>
                      ^ ‘<h1>Hello World</h1>’

                  Accept: text/html




Thursday, August 30, 12
indexXml
                      <get>
                      <path: ‘index’>
                      <produces: ‘text/xml’>
                      ^ ‘<hello><world/></hello>’

                  Accept: text/xml




Thursday, August 30, 12
uploadXml
                      <post>
                      <consumes: ‘text/xml’>
                      …

                  Content-Type: text/xml




Thursday, August 30, 12
uploadCsv
                      <post>
                      <consumes: ‘text/csv’>
                      …

                  Content-Type: text/csv




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




Thursday, August 30, 12
#shouldCacheRoutes



Thursday, August 30, 12
WARestfulComponentFilter
   count: count
   	 <get>
   	 <path: '/{count}'>
   	 self startSessionWithRoot: (WACounter new
   	 	 count: count greaseInteger;
   	 	 yourself)




Thursday, August 30, 12
Data Binding

                     • XML or JSON canvas
                     • Magritte-XML
                     • Magritte-JSON


Thursday, August 30, 12
Dialects

                     • GemStone
                     • Pharo
                     • VAST


Thursday, August 30, 12
Seaside 3.1



Thursday, August 30, 12
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
Path Parameter

                     • /;_s=KAAWl0x3c6KLnN6Q
                     • doesn’t need to be hidden form parameter
                     • required by some load balancers


Thursday, August 30, 12
WAMain gone


                     • specify initial continuation
                     • subclass WASessionContinuation if you
                          used to subclass WAMain




Thursday, August 30, 12
WAPluggableActionContinuation



                     • replace WAActionPhaseContinuation
                          subclasses with
                          WACallbackProcessingActionContinuation
                          subclasses




Thursday, August 30, 12
JSON

                     • separate from JavaScript
                      • various subtle bugs fixed
                     • canvas API


Thursday, August 30, 12
Streaming Redone

                     •    on demand flushing

                     •    continuation that flushes after rendering </head>

                     •    better portability to other servers




Thursday, August 30, 12
HTML 5



                     •#multipleValuesCallback:


Thursday, August 30, 12
Document Handlers

                     • stored in session
                      • no longer stored alongside sessions
                     • _d


Thursday, August 30, 12
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
Help Wanted


                     • Morphic Control panel for Pharo 2.0



Thursday, August 30, 12
Seaside Sprint

                     • Friday at Vooruit
                     • Saturday at Camp location
                     • (Sunday)


Thursday, August 30, 12
Seaside Sprint Sponsors


                     • Reza Razavi
                     • 2Rivers


Thursday, August 30, 12
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

Contenu connexe

Similaire à Advanced Seaside

UX, UI, WTF
UX, UI, WTFUX, UI, WTF
UX, UI, WTFwcfay
 
Cassandra devoxx 2010
Cassandra devoxx 2010Cassandra devoxx 2010
Cassandra devoxx 2010jbellis
 
Clojure Reducers / clj-syd Aug 2012
Clojure Reducers / clj-syd Aug 2012Clojure Reducers / clj-syd Aug 2012
Clojure Reducers / clj-syd Aug 2012Leonardo Borges
 
Python &lt;3 Content systems
Python &lt;3 Content systemsPython &lt;3 Content systems
Python &lt;3 Content systemshenok80
 
Introduction to Vaadin 7
Introduction to Vaadin 7Introduction to Vaadin 7
Introduction to Vaadin 7lastrand
 
Performance & Responsive Web Design
Performance & Responsive Web DesignPerformance & Responsive Web Design
Performance & Responsive Web DesignZach Leatherman
 

Similaire à Advanced Seaside (8)

UX, UI, WTF
UX, UI, WTFUX, UI, WTF
UX, UI, WTF
 
Node jsworkshop
Node jsworkshopNode jsworkshop
Node jsworkshop
 
Cassandra devoxx 2010
Cassandra devoxx 2010Cassandra devoxx 2010
Cassandra devoxx 2010
 
Clojure Reducers / clj-syd Aug 2012
Clojure Reducers / clj-syd Aug 2012Clojure Reducers / clj-syd Aug 2012
Clojure Reducers / clj-syd Aug 2012
 
Python &lt;3 Content systems
Python &lt;3 Content systemsPython &lt;3 Content systems
Python &lt;3 Content systems
 
Vaadin 7
Vaadin 7Vaadin 7
Vaadin 7
 
Introduction to Vaadin 7
Introduction to Vaadin 7Introduction to Vaadin 7
Introduction to Vaadin 7
 
Performance & Responsive Web Design
Performance & Responsive Web DesignPerformance & Responsive Web Design
Performance & Responsive Web Design
 

Plus de ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsESUG
 

Plus de ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Dernier

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)Samir Dash
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 

Dernier (20)

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 

Advanced Seaside

  • 1. Advanced ESUG 2012 Ghent Aug 30, 2012 Thursday, August 30, 12
  • 2. Seaside 2.x Seaside Thursday, August 30, 12
  • 3. Seaside 3.x Core Javascript JQuery Session Component Thursday, August 30, 12
  • 4. What is Seaside-Core • “Seaside Meta” • Web Framework Framework • HTTP Abstraction • Servlet API • Rack • WSGI Thursday, August 30, 12
  • 5. Why Seaside-Core • portable (dialect and server) • battle tested • objects, not strings • familiar objects • negligible overhead Thursday, August 30, 12
  • 6. Seaside 3.x Core Component Thursday, August 30, 12
  • 7. Seaside 3.x Core Component REST Thursday, August 30, 12
  • 8. Seaside 3.x Core Component REST … Thursday, August 30, 12
  • 9. WARequestHandler Request Response RH Thursday, August 30, 12
  • 10. WARequestHandler /conferences /esug /2012 RH RH RH Thursday, August 30, 12
  • 11. WARequestFilter RH Thursday, August 30, 12
  • 12. WASession 2.8 • current request • jump to • last continuation • continuations • monitor •… Thursday, August 30, 12
  • 13. WASession 3.x • continuations • properties • (document handlers) Thursday, August 30, 12
  • 14. WARequestContext • request • response • handler stack Thursday, August 30, 12
  • 15. Request Handler Stack 1 2 3 1 1 1 2 2 3 Thursday, August 30, 12
  • 16. WAPathConsumer /conferences/esug/2012/… RH RH RH /esug/2012/… /2012/… /… Thursday, August 30, 12
  • 17. WADispatcher ‘conferences’ -> aRequestHandler ‘sponsors’ -> aRequestHandler ‘…’ -> aRequestHanlder Thursday, August 30, 12
  • 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 WARequestContext Thursday, August 30, 12
  • 19. Frank a micro framework inspired by Sinatra Thursday, August 30, 12
  • 21. 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
  • 22. index <get> ^ ‘Hello World’ Thursday, August 30, 12
  • 23. index <get> <path: ‘index.html’> ^ ‘Hello World’ Thursday, August 30, 12
  • 24. indexHtml <get> <path: ‘index’> <produces: ‘text/html’> ^ ‘<h1>Hello World</h1>’ Accept: text/html Thursday, August 30, 12
  • 25. indexXml <get> <path: ‘index’> <produces: ‘text/xml’> ^ ‘<hello><world/></hello>’ Accept: text/xml Thursday, August 30, 12
  • 26. uploadXml <post> <consumes: ‘text/xml’> … Content-Type: text/xml Thursday, August 30, 12
  • 27. uploadCsv <post> <consumes: ‘text/csv’> … Content-Type: text/csv Thursday, August 30, 12
  • 28. getAllStartingAt: start limit: limit named: name <get> <path: ‘/{name}/_all_docs?start={start}&limit={limit}’> ... Thursday, August 30, 12
  • 30. WARestfulComponentFilter count: count <get> <path: '/{count}'> self startSessionWithRoot: (WACounter new count: count greaseInteger; yourself) Thursday, August 30, 12
  • 31. Data Binding • XML or JSON canvas • Magritte-XML • Magritte-JSON Thursday, August 30, 12
  • 32. Dialects • GemStone • Pharo • VAST Thursday, August 30, 12
  • 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. Path Parameter • /;_s=KAAWl0x3c6KLnN6Q • doesn’t need to be hidden form parameter • required by some load balancers Thursday, August 30, 12
  • 36. WAMain gone • specify initial continuation • subclass WASessionContinuation if you used to subclass WAMain Thursday, August 30, 12
  • 37. WAPluggableActionContinuation • replace WAActionPhaseContinuation subclasses with WACallbackProcessingActionContinuation subclasses Thursday, August 30, 12
  • 38. JSON • separate from JavaScript • various subtle bugs fixed • canvas API Thursday, August 30, 12
  • 39. Streaming Redone • on demand flushing • continuation that flushes after rendering </head> • better portability to other servers Thursday, August 30, 12
  • 40. HTML 5 •#multipleValuesCallback: Thursday, August 30, 12
  • 41. Document Handlers • stored in session • no longer stored alongside sessions • _d Thursday, August 30, 12
  • 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 escaping Thursday, August 30, 12
  • 43. Help Wanted • Morphic Control panel for Pharo 2.0 Thursday, August 30, 12
  • 44. Seaside Sprint • Friday at Vooruit • Saturday at Camp location • (Sunday) Thursday, August 30, 12
  • 45. Seaside Sprint Sponsors • Reza Razavi • 2Rivers Thursday, August 30, 12
  • 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/SeasideRest Thursday, August 30, 12