Book description
Ajax, or Asynchronous JavaScript and XML, exploded onto the scene in the spring of 2005 and remains the hottest story among web developers. With its rich combination of technologies, Ajax provides astrong foundation for creating interactive web applications with XML or JSON-based web services by using JavaScript in the browser to process the web server response.
Ajax Design Patterns shows you best practices that can dramatically improve your web development projects. It investigates how others have successfully dealt with conflictingdesign principles in the past and then relays that information directly to you.
The patterns outlined in the book fall into four categories:
- Foundational technology: Examines the raw technologies required for Ajax development
- Programming: Exposes techniques that developers have discovered to ensure their Ajax applications are maintainable
- Functionality and usability: Describes the types of user interfaces you'll come across in Ajax applications, as well as the new types of functionality that Ajax makes possible
- Development: Explains the process being used to monitor, debug, and test Ajax applications
Ajax Design Patterns will also get you up to speed with core Ajax technologies, such as XMLHttpRequest, the DOM, and JSON. Technical discussions are followed by code examples so you can see for yourself just what is-and isn't-possible with Ajax. This handy reference will help you to produce high-quality Ajax architectures, streamline web application performance, and improve the userexperience.
Michael Mahemoff holds a PhD in Computer Science and Software Engineering from the University of Melbourne, where his thesis was "Design Reuse in Software Engineering and Human-Computer Interaction." He lives in London and consults on software development issues in banking, health care, and logistics.
"Michael Mahemoff's Ajax Design Patterns is a truly comprehensive compendium of webapplication design expertise, centered around but not limited to Ajax techniques. Polished nuggets of design wisdom are supported by tutorials and real-world code examples resulting in a book thatserves not only as an intermediate to expert handbook but also as an extensive reference for building rich interactive web applications."
--Brent Ashley, remote scripting pioneer
Publisher resources
Table of contents
- A Note Regarding Supplemental Files
- Preface
-
I. Introduction
- 1. Introducing Ajax
-
2. A Pattern-Led Tutorial
- 2.1. Ajax Technologies in a Blink
- 2.2. Ajaxifying a Web App: One Pattern at a Time
- 2.3. Projects and Katas
- 2.4. Conclusions
- 3. Ajax Design: Principles and Patterns
-
II. Foundational Technology Patterns
-
4. Ajax App
-
4.1. Ajax App
- 4.1.1. Goal Story
- 4.1.2. Problem
- 4.1.3. Forces
- 4.1.4. Solution
-
4.1.5. Decisions
- 4.1.5.1. Will your application be “Ajax Deluxe” or “Ajax Lite”?
- 4.1.5.2. What browser requirements will there be to run your Ajax App?
- 4.1.5.3. How will you treat browsers with insufficient technologies for Ajax?
- 4.1.5.4. How much processing power will be required of the browser?
- 4.1.5.5. How much networking capacity will be required?
- 4.1.6. Real-World Examples
- 4.1.7. Code Example
- 4.1.8. Alternatives
- 4.1.9. Related Patterns
-
4.1. Ajax App
-
5. Display Manipulation
- 5.1. Display Morphing
- 5.2. Page Rearrangement
-
6. Web Remoting
- 6.1. Web Service
- 6.2. XMLHttpRequest Call
- 6.3. IFrame Call
- 6.4. HTTP Streaming
- 6.5. On-Demand JavaScript
-
7. Dynamic Behavior
- 7.1. User Action
- 7.2. Scheduling
- 8. Extended Technologies
-
4. Ajax App
-
III. Programming Patterns
-
9. Web Services
-
9.1. RESTful Service
- 9.1.1. Developer Story
- 9.1.2. Problem
- 9.1.3. Forces
- 9.1.4. Solution
-
9.1.5. RESTful principles
- 9.1.5.1. URLs reflect resources
- 9.1.5.2. HTTP methods reflect actions
- 9.1.5.3. GET for queries, and only for queries
- 9.1.5.4. Services should be stateless
- 9.1.5.5. Services should be idempotent
- 9.1.5.6. Services use hyperlinks
- 9.1.5.7. Services documents themselves
- 9.1.5.8. Services constrain data formats
- 9.1.5.9. Handling arbitrary transactions
- 9.1.5.10. Weighing Up REST
- 9.1.6. Real-World Examples
- 9.1.7. Code Example: AjaxPatterns RESTful Shop Demo
- 9.1.8. Alternatives
- 9.1.9. Related Patterns
- 9.1.10. Metaphor
- 9.1.11. Want To Know More?
- 9.1.12. Acknowledgments
- 9.2. RPC Service
- 9.3. Ajax Stub
- 9.4. HTML Message
- 9.5. Plain-Text Message
- 9.6. XML Message
- 9.7. JSON Message
-
9.1. RESTful Service
-
10. Browser-Server Dialogue
- 10.1. Call Tracking
- 10.2. Periodic Refresh
- 10.3. Submission Throttling
- 10.4. Explicit Submission
-
10.5. Distributed Events
- 10.5.1. Developer Story
- 10.5.2. Problem
- 10.5.3. Forces
- 10.5.4. Solution
-
10.5.5. Decisions about Distributed Events
- 10.5.5.1. Will you publish a history or just the current state?
- 10.5.5.2. For observer-style events, will you propagate the details of what’s changed, or just point to the object that’s changed?
- 10.5.5.3. What information will accompany the event notification?
- 10.5.5.4. Will events be processed synchronously or asynchronously?
- 10.5.6. Real-World Examples
- 10.5.7. Code Refactoring: AjaxPatterns Distributed Events Wiki Demo
- 10.5.8. Related Patterns
- 10.5.9. Metaphor
- 10.6. Cross-Domain Proxy
-
11. DOM Population
- 11.1. XML Data Island
- 11.2. Browser-Side XSLT
- 11.3. Browser-Side Templating
-
12. Code Generation and Reuse
- 12.1. Server-Side Code Generation
- 12.2. Cross-Browser Component
-
13. Performance Optimization
- 13.1. Browser-Side Cache
- 13.2. Predictive Fetch
- 13.3. Guesstimate
- 13.4. Multi-Stage Download
- 13.5. Fat Client
-
9. Web Services
-
IV. Functionality and Usability Patterns
-
14. Widgets
- 14.1. Slider
- 14.2. Progress Indicator
- 14.3. Drilldown
- 14.4. Data Grid
- 14.5. Rich Text Editor
- 14.6. Suggestion
- 14.7. Live Search
- 14.8. Live Command-Line
- 14.9. Live Form
-
15. Page Architecture
- 15.1. Drag-And-Drop
- 15.2. Sprite
- 15.3. Popup
-
15.4. Malleable Content
- 15.4.1. Goal Story
- 15.4.2. Problem
- 15.4.3. Forces
- 15.4.4. Solution
-
15.4.5. Decisions
- 15.4.5.1. How will users locate Malleable Content and open it up for editing?
- 15.4.5.2. Will the Malleable Content be labelled? What auxiliary information will be included?
- 15.4.5.3. What content will be marked as Malleable Content? How big will the Malleable Content be?
- 15.4.5.4. How will the user stop editing content?
- 15.4.5.5. Is it okay to have several Malleable Content blocks open for editing at one time?
- 15.4.6. Real-World Examples
- 15.4.7. Code Example: AjaxPatterns Wiki
- 15.4.8. Alternatives
- 15.4.9. Related Patterns
- 15.4.10. Metaphor
- 15.5. Microlink
- 15.6. Portlet
- 15.7. Status Area
- 15.8. Update Control
- 15.9. Virtual Workspace
-
16. Visual Effects
- 16.1. One-Second Spotlight
- 16.2. One-Second Mutation
- 16.3. One-Second Motion
- 16.4. Highlight
-
17. Functionality
- 17.1. Lazy Registration
- 17.2. Direct Login
- 17.3. Host-Proof Hosting
- 17.4. Timeout
- 17.5. Heartbeat
- 17.6. Unique URLs
-
14. Widgets
-
V. Development Patterns
- 18. Diagnosis
-
19. Testing
- 19.1. Simulation Service
- 19.2. Browser-Side Test
- 19.3. Service Test
- 19.4. System Test
-
VI. Appendixes
-
A. Ajax Frameworks and Libraries
-
A.1. JavaScript Multipurpose Frameworks
- A.1.1. AjaxFace (from 2005)
- A.1.2. Backbase (from 2003)
- A.1.3. Bindows (from 2003)
- A.1.4. Dojo (from September, 2004)
- A.1.5. eBusiness Applications (EBA) Ajax Components (from 2002)
- A.1.6. Engine for Web Applications (from 2002)
- A.1.7. Framework for RESTful JavaScript (Freja) (from 2006)
- A.1.8. Mochikit (from 2005)
- A.1.9. OpenRico (from May, 2005; based on earlier proprietary framework)
- A.1.10. Plex Toolkit
- A.1.11. Prototype
- A.1.12. qooxdoo (from May, 2005)
- A.1.13. Script.aculo.us (from 2005)
- A.1.14. SmartClient (from 2000)
- A.1.15. ThyAPI (from end of 2004)
- A.1.16. TIBCO General Interface (from 2001)
- A.1.17. Interactive Website Framework (from May 2005)
- A.1.18. Zimbra AjaxTK
-
A.2. JavaScript Remoting Frameworks
- A.2.1. AjaxCaller (from May 2005)
- A.2.2. Ajax Client Engine (ACE) (from December 2005)
- A.2.3. AjaxGear (from November 2005)
- A.2.4. AJFORM (from June 2005)
- A.2.5. HTMLHttpRequest (from 2005)
- A.2.6. JSMX (from Aug 2005)
- A.2.7. LibXMLHttpRequest (from June 2003)
- A.2.8. MAJAX (from August 2005)
- A.2.9. RSLite
- A.2.10. Sack (from May 2005)
- A.2.11. Subsys_JsHttpRequest
- A.2.12. XHConn (from April, 2005)
- A.3. JavaScript Effects Frameworks
- A.4. JavaScript Flash Frameworks
- A.5. JavaScript XML Frameworks
- A.6. JavaScript Specialized Frameworks
- A.7. Multilanguage Ajax Frameworks
- A.8. C++ Ajax Frameworks
- A.9. ColdFusion Ajax Frameworks
-
A.10. .NET Ajax Frameworks
- A.10.1. Ajax.NET for ASP.NET 1.x/2.0
- A.10.2. Anthem.NET for ASP.NET 1.x/2.0
- A.10.3. AjaxAspects
- A.10.4. Atlas (from late 2005)
- A.10.5. Bitkraft for ASP.NET
- A.10.6. ComfortASP.NET for ASP.NET 1.1/2.0
- A.10.7. MagicAjax.NET (from September 2005)
- A.10.8. MonoRail (from May 2005)
- A.10.9. WebORB for .NET (from August 2005)
- A.10.10. zumiPage
-
A.11. Java Ajax Frameworks
- A.11.1. AjaxAnywhere (from September 2005)
- A.11.2. AJAX JSP Tag Library
- A.11.3. AJAX Java Server Faces Framework
- A.11.4. Direct Web Remoting (DWR) (from 2005)
- A.11.5. Echo 2 (from March 2005)
- A.11.6. Guise
- A.11.7. ICEfaces
- A.11.8. JSON-RPC-Java (from April 2004)
- A.11.9. JSP Controls Tag Library (from December 2005)
- A.11.10. jWic
- A.11.11. Struts-Layout
- A.11.12. SWATO (from 2005)
- A.11.13. Tacos Tapestry Components (from December 2005)
- A.11.14. ThinkCAP JX
- A.11.15. WebORB for Java (from August 2005)
- A.11.16. WidgetServer (from 2004)
- A.12. Lisp Ajax Frameworks
- A.13. Perl Ajax Frameworks
- A.14. PHP Ajax Frameworks
- A.15. Python Ajax Frameworks
- A.16. Ruby Ajax Frameworks
-
A.1. JavaScript Multipurpose Frameworks
- B. Setting Up the Code Examples
- C. Patterns and Pattern Languages
- D. References
-
A. Ajax Frameworks and Libraries
- About the Author
- Colophon
- Copyright
Product information
- Title: Ajax Design Patterns
- Author(s):
- Release date: June 2006
- Publisher(s): O'Reilly Media, Inc.
- ISBN: 9780596101800
You might also like
book
Ajax Patterns and Best Practices
Ajax is taking us into the next generation of web applications. Ajax has broken the client-server …
book
Ajax: The Definitive Guide
Is Ajax a new technology, or the same old stuff web developers have been using for …
book
Professional Ajax, 2nd Edition
Professional Ajax 2nd Edition provides a developer-level tutorial of Ajax techniques, patterns, and use cases. The …
article
Run Llama-2 Models Locally with llama.cpp
Llama is Meta’s answer to the growing demand for LLMs. Unlike its well-known technological relative, ChatGPT, …