You are previewing Web Application Architecture: Principles, Protocols and Practices, 2nd Edition.
O'Reilly logo
Web Application Architecture: Principles, Protocols and Practices, 2nd Edition

Book Description

  • This book provides and in-depth examination of the core concepts and general principles of web application development, using examples from specific technologies.  This conceptual knowledge is critical when designing and debugging complex systems, and makes it easier to learn the new application programming interfaces (APIs) that arise in the rapidly changing Internet environment

  • Split into three sections:

  • · HTTP protocol as a foundation for web applications

  • · Discussion of markup languages such as HTML, XML and CSS

  • · Survey of emerging technologies

    • Includes new coverage on technologies including:

  • · Rapid application approaches Ruby on Rails

  • · Application Primers

  • · Search technology, including Search Engine Optimization

  • ·Simple Object Access Protocol (SOAP)

  • ·XML Path Language (XPath)

  • · Platform for Privacy Preferences (P3P)

  • · User-generated content technology for community websites and online collaboration applications

  • · Security and encryption

Table of Contents

  1. Copyright
  2. About the Authors
  3. Preface to the Second Edition
  4. Acknowledgments
  5. 1. Introduction
    1. 1.1. History and Pre-History of the Web
    2. 1.2. From Web Pages to Web Sites
    3. 1.3. From Web Sites to Web Applications
    4. 1.4. Web 2.0: On-Line Communities and Collaboration
    5. 1.5. The Brave New World of AJAX
    6. 1.6. Focus of This Book
    7. 1.7. What Is Covered in This Book
  6. 1.8. Bibliography
  7. 2. Core Internet Protocols
    1. 2.1. Historical Perspective
    2. 2.2. TCP/IP Architecture
      1. 2.2.1. Protocol layers
      2. 2.2.2. Comparison with OSI model
      3. 2.2.3. The client-server paradigm
        1. 2.2.3.1. Command line vs GUI
        2. 2.2.3.2. Client-server communications
    3. 2.3. TCP/IP Application Services
      1. 2.3.1. Telnet
      2. 2.3.2. E-mail
        1. 2.3.2.1. SMTP
        2. 2.3.2.2. POP
        3. 2.3.2.3. IMAP
        4. 2.3.2.4. Web-based e-mail services
      3. 2.3.3. Message forums
      4. 2.3.4. Chat and Messaging Protocols
      5. 2.3.5. Security and encryption
      6. 2.3.6. File server protocols
    4. 2.4. And Then Came the Web ...
  8. 2.5. Bibliography
  9. 3. Birth of the Web: HTTP
    1. 3.1. Historical Perspective
      1. 3.1.1. CERN: birthplace of the Web
      2. 3.1.2. Building blocks of the web
    2. 3.2. Uniform Resource Locator
    3. 3.3. Fundamentals of HTTP
      1. 3.3.1. Request-response paradigm
      2. 3.3.2. Stateless protocol
      3. 3.3.3. Structure of HTTP messages
      4. 3.3.4. Request methods
        1. 3.3.4.1. GET method
        2. 3.3.4.2. POST method
        3. 3.3.4.3. HEAD method
      5. 3.3.5. Status codes
        1. 3.3.5.1. Informational status codes (1xx)
        2. 3.3.5.2. Successful response status codes (2xx)
        3. 3.3.5.3. Redirection status codes (3xx)
        4. 3.3.5.4. Client request error status codes (4xx)
        5. 3.3.5.5. Server error status codes (5xx)
    4. 3.4. Better Information Through Headers
      1. 3.4.1. Support for content types
      2. 3.4.2. Caching control
      3. 3.4.3. Security
        1. 3.4.3.1. HTTP authentication
      4. 3.4.4. Session support
    5. 3.5. Evolution of the HTTP Protocol
      1. 3.5.1. Virtual hosting
      2. 3.5.2. Caching support
      3. 3.5.3. Persistent connections
    6. 3.6. Summary
  10. 3.7. Bibliography
  11. 4. HTML and Its Roots
    1. 4.1. Standard Generalized Markup Language
      1. 4.1.1. SGML Declaration
        1. 4.1.1.1. Document Character Set
        2. 4.1.1.2. Concrete Syntax
        3. 4.1.1.3. Feature Usage
      2. 4.1.2. Document Type Definition
        1. 4.1.2.1. Entity Definitions
        2. 4.1.2.2. Element Definitions
        3. 4.1.2.3. Attribute Definitions
    2. 4.2. HTML
      1. 4.2.1. Evolution of HTML
      2. 4.2.2. Structure and Syntax
        1. 4.2.2.1. HTML Header
        2. 4.2.2.2. HTML Body
        3. 4.2.2.3. Content Accessibility
        4. 4.2.2.4. HTTP requests
    3. 4.3. HTML Rendering
      1. 4.3.1. Cascading Style Sheets
      2. 4.3.2. Associating styles with HTML documents
        1. 4.3.2.1. Linked Style Sheet
        2. 4.3.2.2. Embedded Style sheet
        3. 4.3.2.3. Inline style
    4. 4.4. Summary
  12. 4.5. Bibliography
  13. 5. XML Languages and Applications
    1. 5.1. Core XML
      1. 5.1.1. XML documents
      2. 5.1.2. XML DTD
      3. 5.1.3. XML Schema
    2. 5.2. XHTML
      1. 5.2.1. HTML 5
      2. 5.2.2. XHTML MP
    3. 5.3. Web Services
      1. 5.3.1. SOAP
        1. 5.3.1.1. Web Services Definition Language (WSDL)
        2. 5.3.1.2. Universal Description, Discovery, and Integration (UDDI)
      2. 5.3.2. Representational State Transfer (REST)
    4. 5.4. XSL
      1. 5.4.1. XSLT
      2. 5.4.2. XSL Formatting Objects
      3. 5.4.3. What is so important about XSL?
    5. 5.5. Summary
    6. 5.6. Bibliography
    7. 5.7. Web Links
    8. 5.8. Endnotes
  14. 6. Web Servers
    1. 6.1. Basic Operation
      1. 6.1.1. HTTP request processing
      2. 6.1.2. Delivery of static content
        1. 6.1.2.1. Static content pages
        2. 6.1.2.2. As-is pages
      3. 6.1.3. Delivery of dynamic content
        1. 6.1.3.1. CGI
        2. 6.1.3.2. SSI
    2. 6.2. Mechanisms for Dynamic Content Delivery
      1. 6.2.1. Beyond CGI and SSI
      2. 6.2.2. Native APIs (ISAPI and Apache Server API)
      3. 6.2.3. FastCGI
      4. 6.2.4. Template processing
      5. 6.2.5. Servlets
      6. 6.2.6. Java Server Pages
      7. 6.2.7. Future directions
    3. 6.3. Advanced Functionality
      1. 6.3.1. Virtual hosting
      2. 6.3.2. Chunked transfers
      3. 6.3.3. Caching support
      4. 6.3.4. Extensibility
    4. 6.4. Server Configuration
      1. 6.4.1. Directory structure
      2. 6.4.2. Execution
      3. 6.4.3. Address resolution
      4. 6.4.4. MIME support
      5. 6.4.5. Server extensions
    5. 6.5. Server Security
      1. 6.5.1. Securing the installation
      2. 6.5.2. Dangerous Practices
      3. 6.5.3. Secure HTTP
      4. 6.5.4. Firewall configurations
      5. 6.5.5. HTTP proxies
    6. 6.6. Summary
  15. 6.7. Bibliography
  16. 7. Web Browsers
    1. 7.1. Overview of Browser Functionality
    2. 7.2. Architectural Considerations
    3. 7.3. Overview of Processing Flow in a Browser
      1. 7.3.1. Transmitting a request
      2. 7.3.2. Receiving a response
    4. 7.4. Processing HTTP Requests
      1. 7.4.1. Constructing the request line
      2. 7.4.2. Constructing the headers
      3. 7.4.3. Constructing the request body
      4. 7.4.4. Transmitting the request
    5. 7.5. Processing HTTP Responses
      1. 7.5.1. Processing successful responses
      2. 7.5.2. Processing responses with other status codes
    6. 7.6. Cookie Coordination
    7. 7.7. Privacy and P3P
    8. 7.8. Complex HTTP Interactions
      1. 7.8.1. Caching
      2. 7.8.2. Authorization: challenge and response
      3. 7.8.3. Using common mechanisms for data persistence
      4. 7.8.4. Requesting supporting data items
      5. 7.8.5. Multimedia support: helpers and plug-ins
    9. 7.9. Summary
    10. 7.10. Bibliography
    11. 7.11. Web Links
    12. 7.12. Endnotes
  17. 8. Active Browser Pages: From JavaScript to AJAX
    1. 8.1. Pre-History
    2. 8.2. JavaScript
      1. 8.2.1. Manipulating page content
      2. 8.2.2. Client-side form validation
      3. 8.2.3. Hovering behaviors: image rollover
      4. 8.2.4. JavaScript Object Notation
      5. 8.2.5. Summary
    3. 8.3. Cascading Style Sheets
      1. 8.3.1. Format of CSS rules
      2. 8.3.2. Hovering behaviors: the a:hover pseudo-class
      3. 8.3.3. Summary
    4. 8.4. DHTML
      1. 8.4.1. Inner workings
      2. 8.4.2. Controlling content visibility
      3. 8.4.3. Leveraging toolkits
      4. 8.4.4. Client-side validation using toolkits
      5. 8.4.5. Hovering behaviors using toolkits
      6. 8.4.6. Widgets
        1. 8.4.6.1. Google AdSense
        2. 8.4.6.2. Amazon Associates
        3. 8.4.6.3. Snap Shots
      7. 8.4.7. Summary
    5. 8.5. AJAX
      1. 8.5.1. Content injection: manual approach
      2. 8.5.2. Content injection: using toolkits
      3. 8.5.3. Auto-completion
      4. 8.5.4. Remote validation
      5. 8.5.5. Where does DHTML end and AJAX begin?
      6. 8.5.6. Summary
    6. 8.6. Case Study: 5-Star Rating
      1. 8.6.1. Designing a star-rating component
      2. 8.6.2. When you click upon a star: what happens on the server?
    7. 8.7. Summary
    8. 8.8. Bibliography
    9. 8.9. Web Links
    10. 8.10. Endnotes
  18. 9. Approaches to Web Application Development
    1. 9.1. Taxonomy of Web Application Approaches and Frameworks
      1. 9.1.1. Programmatic Approaches
      2. 9.1.2. Template approaches
      3. 9.1.3. Hybrid Approaches
      4. 9.1.4. Frameworks
        1. 9.1.4.1. Application flexibility
        2. 9.1.4.2. Division of Responsibility for Processing Modules
    2. 9.2. Comparative Survey of Web Application Approaches and Frameworks
      1. 9.2.1. CGI and FastCGI
      2. 9.2.2. Server-Side Includes (SSI)
      3. 9.2.3. PHP
      4. 9.2.4. Java Servlet API
      5. 9.2.5. Cold Fusion
      6. 9.2.6. Velocity
      7. 9.2.7. Active Server Pages and .NET
      8. 9.2.8. Java Server Pages
      9. 9.2.9. JSP Model 2
      10. 9.2.10. Java Standard Tag Library
      11. 9.2.11. Struts
      12. 9.2.12. Java Server Faces
      13. 9.2.13. JBoss Seam
      14. 9.2.14. Rapid Application Development: Ruby on Rails
    3. 9.3. Summary
  19. 9.4. Bibliography
  20. 10. Web Application Primer 1: Struts and JSTL
    1. 10.1. Case Study: Virtual Realty Listing Services
    2. 10.2. Application Requirements
    3. 10.3. Technology Choices
    4. 10.4. Overview of Struts
    5. 10.5. Structure of the VRLS Application
      1. 10.5.1. Configuration
      2. 10.5.2. Controller components
      3. 10.5.3. View components
      4. 10.5.4. Model components
        1. 10.5.4.1. Database schema
    6. 10.6. Design Decisions
      1. 10.6.1. Abstracting functionality into service classes
        1. 10.6.1.1. Benefits
        2. 10.6.1.2. Alternatives or improvements
      2. 10.6.2. Including embedded pages to support co-branding
        1. 10.6.2.1. Benefits
        2. 10.6.2.2. Alternatives or improvements
      3. 10.6.3. Creating and modifying customer profiles in one task
    7. 10.7. Suggested Enhancements
      1. 10.7.1. Adding an administrative interface
      2. 10.7.2. Enhancing the signup process through e-mail authentication
      3. 10.7.3. Improving partner recognition through a persistent cookie
      4. 10.7.4. Adding caching functionality to the DomainService Class
      5. 10.7.5. Paging through cached search results
      6. 10.7.6. Using XML and XSLT for view presentation
      7. 10.7.7. Tracking user behavior
      8. 10.7.8. Using an object-relational mapping tool
      9. 10.7.9. Adding DHTML and AJAX for an enhanced user experience
    8. 10.8. Summary
  21. 10.9. Bibliography
  22. 11. Web Application Primer 2: Ruby on Rails
    1. 11.1. Comparing Rails with Java EE
      1. 11.1.1. Similarities
      2. 11.1.2. Differences
    2. 11.2. Application Requirements
    3. 11.3. Building the Administrative Interface as a Rails Application
      1. 11.3.1. Downloading and installing Ruby and rails
      2. 11.3.2. Building an application skeleton
      3. 11.3.3. Creating a new project and configuring the database
      4. 11.3.4. Scaffolding for the model, view, and controller classes
      5. 11.3.5. Enhancing the application
        1. 11.3.5.1. Completing the data model
        2. 11.3.5.2. Customizing views and using lookup tables
        3. 11.3.5.3. Form validation
        4. 11.3.5.4. Pagination
        5. 11.3.5.5. Reusable layout components
        6. 11.3.5.6. Authentication and authorization
        7. 11.3.5.7. Replacing the Rails home page
        8. 11.3.5.8. Summary
    4. 11.4. Benefits and Drawbacks of Using Rails
      1. 11.4.1. How rapid is rapid application development?
      2. 11.4.2. Database support
      3. 11.4.3. Limitations of scaffolding
      4. 11.4.4. Scalability
      5. 11.4.5. Performance and clustering
      6. 11.4.6. Version 2.0 issues
      7. 11.4.7. Is Rails web-designer-friendly?
    5. 11.5. Whither Enterprise Java?
    6. 11.6. Summary
    7. 11.7. Bibliography
    8. 11.8. Web Links
    9. 11.9. Endnotes
  23. 12. Search Technologies
    1. 12.1. Overview of Algorithms
      1. 12.1.1. Historical perspective
      2. 12.1.2. Basic vector-space algorithm
        1. 12.1.2.1. Example
        2. 12.1.2.2. Enhancement 1: weighting for multiple occurrences
        3. 12.1.2.3. Enhancement 2: weighting for phrases
      3. 12.1.3. Common enhancements
      4. 12.1.4. Word clustering
      5. 12.1.5. Custom biases
    2. 12.2. Searching the Web
      1. 12.2.1. Google page ranking
      2. 12.2.2. Web spiders
      3. 12.2.3. Summary
    3. 12.3. Site Search Applications
      1. 12.3.1. General architecture
      2. 12.3.2. Lucene
      3. 12.3.3. OneBox applications
    4. 12.4. Search Engine Optimization
      1. 12.4.1. Robots.txt
      2. 12.4.2. Sitemaps
      3. 12.4.3. Sitemap extensions
      4. 12.4.4. Site and URL structure
      5. 12.4.5. Black Hat SEO
    5. 12.5. Summary
    6. 12.6. Bibliography
    7. 12.7. Web Links
    8. 12.8. Endnotes
  24. 13. Trends and Directions
    1. 13.1. XML Query Language
    2. 13.2. Semantic Web
      1. 13.2.1. Resource Description Framework (RDF)
        1. 13.2.1.1. Dublin Core
        2. 13.2.1.2. RDF Schema
      2. 13.2.2. Composite Capabilities/Preference Profiles
      3. 13.2.3. RDF query language
    3. 13.3. Future of Web Application Frameworks
      1. 13.3.1. One more time: separate content from presentation
      2. 13.3.2. Use the right tools for the job
      3. 13.3.3. Simplicity
    4. 13.4. Current Trends
      1. 13.4.1. Everything old is new again
      2. 13.4.2. Social networking and community web sites
      3. 13.4.3. Cloud computing and "Weblications"
    5. 13.5. Summary
    6. 13.6. Bibliography
    7. 13.7. Web Links
    8. 13.8. Endnotes
  25. 14. Conclusions