Abstract: Dijkstra may have taught us 45 years ago that GOTO was a bad idea,
but web development has barely caught up. In the CGI model of web applications,
each link that is followed triggers an entirely new execution of the program.
Building complex control flow out of these abrupt transitions can lead to a
tangled and brittle mess of interdependent pages. Modern frameworks such as
WebObjects and Struts may remove many of the difficulties of CGI scripting, but
they do not escape the web's inherent GOTO: moving from one page to the next,
whether through anchors, actions, forms, or forwards, is still a simple one-way
jump.
Seaside is a framework for developing web-based applications that insulates the
developer from the HTTP request/response loop, presenting the illusion of a
continuous interactive session with the user. Each page or form acts much like
a subroutine, which returns a value to its caller based on user input. Complex,
conditional or looping workflows can be described in a single piece of
straightforward Smalltalk code as a sequence of calls to individual pages. The
benefits this brings to the reusability and maintainability of web applications
closely mimick the advances made by structured programming long ago.
Seaside also sports callback-based form widgets (no manual request processing),
transparent embedding of pages or even whole applications, a library of
prebuilt components, and a complete web-based development environment, with
code browsers, inspectors, debuggers, and profilers, all implemented in Seaside
itself.
During this half day workshop, participants will be guided through building a
simple business application with Seaside. Along with coverage of framework
basics, special attention will be given to three topics: writing cleanly
reusable pages and components, separating page logic (how an individual
interaction works) from application logic (how interactions are strung together
to form workflows), and proper management and support of the all-important
browser back button.
Bio: Avi Bryant provides Smalltalk consulting and development services in
Vancouver, Canada.
Julian Fitzell is a senior developer in the Agile Projects Group at the
University of British Columbia.