{"product_id":"web-application-architecture-isbn-9780470518601","title":"Web Application Architecture","description":"The book provides an 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, developing and debugging complex systems, and makes it easier to learn the new application programming interfaces (APIs) that arise in the rapidly changing Internet environment.  \u003cp\u003eThe companion web site for the book is located at \u003ca href=\"http:\/\/www.webappbuilders.com\/\"\u003ewww.webappbuilders.com\u003c\/a\u003e.\u003c\/p\u003e \u003cp\u003eThe text is organized into the following sections:\u003c\/p\u003e \u003cul\u003e \u003cli\u003eCore Internet protocols\u003c\/li\u003e \u003cli\u003eThe HTTP protocol as a foundation for web applications\u003c\/li\u003e \u003cli\u003eDiscussion of markup languages such as HTML, CSS, and XML\u003c\/li\u003e \u003cli\u003eServer and browser architecture\u003c\/li\u003e \u003cli\u003eApplication design case studies using JavaEE\/Struts and Ruby on Rails\u003c\/li\u003e \u003cli\u003eSurvey of emerging technologies\u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003eThe second edition of the book has been updated with enhanced coverage of:\u003c\/p\u003e \u003cul\u003e \u003cli\u003eXML applications including XSLT, XSL-FO, and XPath\u003c\/li\u003e \u003cli\u003eXML-compliant HTML including XHTML and XHTML MP\u003c\/li\u003e \u003cli\u003eWeb Services protocols including SOAP and REST\u003c\/li\u003e \u003cli\u003ePlatform for Privacy Preferences (P3P)\u003c\/li\u003e \u003cli\u003eSecurity and encryption\u003c\/li\u003e \u003cli\u003eXML and RDF query languages\u003c\/li\u003e \u003cli\u003eCloud computing, collaborative online services, and Web 2.0\u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003eand new chapters on:\u003c\/p\u003e \u003cul\u003e \u003cli\u003eJavaScript, Dynamic HTML (DHTML), and AJAX\u003c\/li\u003e \u003cli\u003eRapid application development using Ruby on Rails\u003c\/li\u003e \u003cli\u003eSearch technology including Search Engine Optimization\u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003eAbout the Authors xv\u003c\/p\u003e \u003cp\u003ePreface xvi\u003c\/p\u003e \u003cp\u003eAcknowledgments xvii\u003c\/p\u003e \u003cp\u003e\u003cb\u003e1 Introduction 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e1.1 History and Pre-History of the Web 1\u003c\/p\u003e \u003cp\u003e1.2 From Web Pages to Web Sites 3\u003c\/p\u003e \u003cp\u003e1.3 From Web Sites to Web Applications 4\u003c\/p\u003e \u003cp\u003e1.4 Web 2.0: On-line Communities and Collaboration 4\u003c\/p\u003e \u003cp\u003e1.5 The Brave New World of AJAX 5\u003c\/p\u003e \u003cp\u003e1.6 Focus of This Book 5\u003c\/p\u003e \u003cp\u003e1.7 What Is Covered in This Book 7\u003c\/p\u003e \u003cp\u003e1.8 Bibliography 9\u003c\/p\u003e \u003cp\u003e\u003cb\u003e2 Core Internet Protocols 11\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e2.1 Historical Perspective 12\u003c\/p\u003e \u003cp\u003e2.2 TCP\/IP Architecture 13\u003c\/p\u003e \u003cp\u003e2.2.1 Protocol layers 13\u003c\/p\u003e \u003cp\u003e2.2.2 Comparison with OSI model 14\u003c\/p\u003e \u003cp\u003e2.2.3 The client–server paradigm 14\u003c\/p\u003e \u003cp\u003e2.3 TCP\/IP Application Services 16\u003c\/p\u003e \u003cp\u003e2.3.1 Telnet 16\u003c\/p\u003e \u003cp\u003e2.3.2 E-mail 17\u003c\/p\u003e \u003cp\u003e2.3.3 Message forums 23\u003c\/p\u003e \u003cp\u003e2.3.4 Chat and messaging protocols 24\u003c\/p\u003e \u003cp\u003e2.3.5 Security and encryption 24\u003c\/p\u003e \u003cp\u003e2.3.6 File server protocols 26\u003c\/p\u003e \u003cp\u003e2.4 And Then Came the Web \u003ci\u003e. . . \u003c\/i\u003e27\u003c\/p\u003e \u003cp\u003eQuestions and Exercises 28\u003c\/p\u003e \u003cp\u003e2.5 Bibliography 28\u003c\/p\u003e \u003cp\u003e\u003cb\u003e3 Birth of the Web: HTTP 29\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e3.1 Historical Perspective 29\u003c\/p\u003e \u003cp\u003e3.1.1 CERN: birthplace of the web 29\u003c\/p\u003e \u003cp\u003e3.1.2 Building blocks of the web 30\u003c\/p\u003e \u003cp\u003e3.2 Uniform Resource Locator 30\u003c\/p\u003e \u003cp\u003e3.3 Fundamentals of HTTP 32\u003c\/p\u003e \u003cp\u003e3.3.1 Request–response paradigm 33\u003c\/p\u003e \u003cp\u003e3.3.2 Stateless protocol 33\u003c\/p\u003e \u003cp\u003e3.3.3 Structure of HTTP messages 34\u003c\/p\u003e \u003cp\u003e3.3.4 Request methods 36\u003c\/p\u003e \u003cp\u003e3.3.5 Status codes 41\u003c\/p\u003e \u003cp\u003e3.4 Better Information Through Headers 44\u003c\/p\u003e \u003cp\u003e3.4.1 Support for content types 46\u003c\/p\u003e \u003cp\u003e3.4.2 Caching control 49\u003c\/p\u003e \u003cp\u003e3.4.3 Security 51\u003c\/p\u003e \u003cp\u003e3.4.4 Session support 53\u003c\/p\u003e \u003cp\u003e3.5 Evolution of the HTTP Protocol 56\u003c\/p\u003e \u003cp\u003e3.5.1 Virtual hosting 57\u003c\/p\u003e \u003cp\u003e3.5.2 Caching support 58\u003c\/p\u003e \u003cp\u003e3.5.3 Persistent connections 59\u003c\/p\u003e \u003cp\u003e3.6 Summary 60\u003c\/p\u003e \u003cp\u003eQuestions and Exercises 60\u003c\/p\u003e \u003cp\u003e3.7 Bibliography 61\u003c\/p\u003e \u003cp\u003e\u003cb\u003e4 HTML and Its Roots 63\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e4.1 Standard Generalized Markup Language 64\u003c\/p\u003e \u003cp\u003e4.1.1 SGML declaration 66\u003c\/p\u003e \u003cp\u003e4.1.2 Document Type Definition 68\u003c\/p\u003e \u003cp\u003e4.2 HTML 72\u003c\/p\u003e \u003cp\u003e4.2.1 Evolution of HTML 72\u003c\/p\u003e \u003cp\u003e4.2.2 Structure and syntax 73\u003c\/p\u003e \u003cp\u003e4.3 HTML Rendering 79\u003c\/p\u003e \u003cp\u003e4.3.1 Cascading Style Sheets 79\u003c\/p\u003e \u003cp\u003e4.3.2 Associating styles with HTML documents 80\u003c\/p\u003e \u003cp\u003e4.4 Summary 82\u003c\/p\u003e \u003cp\u003eQuestions and Exercises 82\u003c\/p\u003e \u003cp\u003e4.5 Bibliography 83\u003c\/p\u003e \u003cp\u003e\u003cb\u003e5 XML Languages and Applications 85\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e5.1 Core XML 86\u003c\/p\u003e \u003cp\u003e5.1.1 XML documents 87\u003c\/p\u003e \u003cp\u003e5.1.2 XML DTD 88\u003c\/p\u003e \u003cp\u003e5.1.3 XML Schema 91\u003c\/p\u003e \u003cp\u003e5.2 XHTML 95\u003c\/p\u003e \u003cp\u003e5.2.1 HTML 5 97\u003c\/p\u003e \u003cp\u003e5.2.2 XHTML MP 97\u003c\/p\u003e \u003cp\u003e5.3 Web Services 100\u003c\/p\u003e \u003cp\u003e5.3.1 SOAP 100\u003c\/p\u003e \u003cp\u003e5.3.2 Representational State Transfer (REST) 105\u003c\/p\u003e \u003cp\u003e5.4 XSL 108\u003c\/p\u003e \u003cp\u003e5.4.1 XSLT 109\u003c\/p\u003e \u003cp\u003e5.4.2 XSL Formatting Objects 111\u003c\/p\u003e \u003cp\u003e5.4.3 What is so important about XSL? 116\u003c\/p\u003e \u003cp\u003e5.5 Summary 118\u003c\/p\u003e \u003cp\u003eQuestions and Exercises 119\u003c\/p\u003e \u003cp\u003e5.6 Bibliography 120\u003c\/p\u003e \u003cp\u003e5.7 Web Links 120\u003c\/p\u003e \u003cp\u003e5.8 Endnotes 120\u003c\/p\u003e \u003cp\u003e\u003cb\u003e6 Web Servers 121\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e6.1 Basic Operation 122\u003c\/p\u003e \u003cp\u003e6.1.1 HTTP request processing 123\u003c\/p\u003e \u003cp\u003e6.1.2 Delivery of static content 125\u003c\/p\u003e \u003cp\u003e6.1.3 Delivery of dynamic content 127\u003c\/p\u003e \u003cp\u003e6.2 Mechanisms for Dynamic Content Delivery 135\u003c\/p\u003e \u003cp\u003e6.2.1 Beyond CGI and SSI 135\u003c\/p\u003e \u003cp\u003e6.2.2 Native APIs (ISAPI and Apache Server API) 135\u003c\/p\u003e \u003cp\u003e6.2.3 FastCGI 135\u003c\/p\u003e \u003cp\u003e6.2.4 Template processing 136\u003c\/p\u003e \u003cp\u003e6.2.5 Servlets 137\u003c\/p\u003e \u003cp\u003e6.2.6 Java Server Pages 138\u003c\/p\u003e \u003cp\u003e6.2.7 Future directions 139\u003c\/p\u003e \u003cp\u003e6.3 Advanced Functionality 140\u003c\/p\u003e \u003cp\u003e6.3.1 Virtual hosting 140\u003c\/p\u003e \u003cp\u003e6.3.2 Chunked transfers 141\u003c\/p\u003e \u003cp\u003e6.3.3 Caching support 142\u003c\/p\u003e \u003cp\u003e6.3.4 Extensibility 143\u003c\/p\u003e \u003cp\u003e6.4 Server Configuration 143\u003c\/p\u003e \u003cp\u003e6.4.1 Directory structure 143\u003c\/p\u003e \u003cp\u003e6.4.2 Execution 144\u003c\/p\u003e \u003cp\u003e6.4.3 Address resolution 145\u003c\/p\u003e \u003cp\u003e6.4.4 MIME support 146\u003c\/p\u003e \u003cp\u003e6.4.5 Server extensions 146\u003c\/p\u003e \u003cp\u003e6.5 Server Security 147\u003c\/p\u003e \u003cp\u003e6.5.1 Securing the installation 147\u003c\/p\u003e \u003cp\u003e6.5.2 Dangerous practices 148\u003c\/p\u003e \u003cp\u003e6.5.3 Secure HTTP 149\u003c\/p\u003e \u003cp\u003e6.5.4 Firewall configurations 149\u003c\/p\u003e \u003cp\u003e6.5.5 HTTP proxies 150\u003c\/p\u003e \u003cp\u003e6.6 Summary 150\u003c\/p\u003e \u003cp\u003eQuestions and Exercises 151\u003c\/p\u003e \u003cp\u003e6.7 Bibliography 152\u003c\/p\u003e \u003cp\u003e\u003cb\u003e7 Web Browsers 153\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e7.1 Overview of Browser Functionality 154\u003c\/p\u003e \u003cp\u003e7.2 Architectural Considerations 155\u003c\/p\u003e \u003cp\u003e7.3 Overview of Processing Flow in a Browser 157\u003c\/p\u003e \u003cp\u003e7.3.1 Transmitting a request 157\u003c\/p\u003e \u003cp\u003e7.3.2 Receiving a response 159\u003c\/p\u003e \u003cp\u003e7.4 Processing HTTP Requests 162\u003c\/p\u003e \u003cp\u003e7.4.1 Constructing the request line 163\u003c\/p\u003e \u003cp\u003e7.4.2 Constructing the headers 165\u003c\/p\u003e \u003cp\u003e7.4.3 Constructing the request body 166\u003c\/p\u003e \u003cp\u003e7.4.4 Transmitting the request 167\u003c\/p\u003e \u003cp\u003e7.5 Processing HTTP Responses 167\u003c\/p\u003e \u003cp\u003e7.5.1 Processing successful responses 168\u003c\/p\u003e \u003cp\u003e7.5.2 Processing responses with other status codes 170\u003c\/p\u003e \u003cp\u003e7.6 Cookie Coordination 172\u003c\/p\u003e \u003cp\u003e7.7 Privacy and P3P 173\u003c\/p\u003e \u003cp\u003e7.8 Complex HTTP Interactions 174\u003c\/p\u003e \u003cp\u003e7.8.1 Caching 174\u003c\/p\u003e \u003cp\u003e7.8.2 Authorization: challenge and response 178\u003c\/p\u003e \u003cp\u003e7.8.3 Using common mechanisms for data persistence 179\u003c\/p\u003e \u003cp\u003e7.8.4 Requesting supporting data items 180\u003c\/p\u003e \u003cp\u003e7.8.5 Multimedia support: helpers and plug-ins 182\u003c\/p\u003e \u003cp\u003e7.9 Summary 184\u003c\/p\u003e \u003cp\u003eQuestions and Exercises 186\u003c\/p\u003e \u003cp\u003e7.10 Bibliography 187\u003c\/p\u003e \u003cp\u003e7.11 Web Links 188\u003c\/p\u003e \u003cp\u003e7.12 Endnotes 188\u003c\/p\u003e \u003cp\u003e\u003cb\u003e8 Active Browser Pages: From JavaScript to AJAX 189\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e8.1 Pre-History 191\u003c\/p\u003e \u003cp\u003e8.2 JavaScript 191\u003c\/p\u003e \u003cp\u003e8.2.1 Manipulating page content 194\u003c\/p\u003e \u003cp\u003e8.2.2 Client-side form validation 196\u003c\/p\u003e \u003cp\u003e8.2.3 Hovering behaviors: image rollover 199\u003c\/p\u003e \u003cp\u003e8.2.4 JavaScript Object Notation 201\u003c\/p\u003e \u003cp\u003e8.2.5 Summary 202\u003c\/p\u003e \u003cp\u003e8.3 Cascading Style Sheets 203\u003c\/p\u003e \u003cp\u003e8.3.1 Format of CSS rules 204\u003c\/p\u003e \u003cp\u003e8.3.2 Hovering behaviors: the a:hover pseudo-class 208\u003c\/p\u003e \u003cp\u003e8.3.3 Summary 209\u003c\/p\u003e \u003cp\u003e8.4 DHTML 209\u003c\/p\u003e \u003cp\u003e8.4.1 Inner workings 210\u003c\/p\u003e \u003cp\u003e8.4.2 Controlling content visibility 210\u003c\/p\u003e \u003cp\u003e8.4.3 Leveraging toolkits 212\u003c\/p\u003e \u003cp\u003e8.4.4 Client-side validation using toolkits 216\u003c\/p\u003e \u003cp\u003e8.4.5 Hovering behaviors using toolkits 217\u003c\/p\u003e \u003cp\u003e8.4.6 Widgets 219\u003c\/p\u003e \u003cp\u003e8.4.7 Summary 221\u003c\/p\u003e \u003cp\u003e8.5 AJAX 221\u003c\/p\u003e \u003cp\u003e8.5.1 Content injection: manual approach 222\u003c\/p\u003e \u003cp\u003e8.5.2 Content injection: using toolkits 224\u003c\/p\u003e \u003cp\u003e8.5.3 Auto-completion 225\u003c\/p\u003e \u003cp\u003e8.5.4 Remote validation 228\u003c\/p\u003e \u003cp\u003e8.5.5 Where does DHTML end and AJAX begin? 229\u003c\/p\u003e \u003cp\u003e8.5.6 Summary 231\u003c\/p\u003e \u003cp\u003e8.6 Case Study: 5-Star Rating 231\u003c\/p\u003e \u003cp\u003e8.6.1 Designing a star-rating component 232\u003c\/p\u003e \u003cp\u003e8.6.2 When you click upon a star: what happens on the server? 236\u003c\/p\u003e \u003cp\u003e8.7 Summary 236\u003c\/p\u003e \u003cp\u003eQuestions and Exercises 237\u003c\/p\u003e \u003cp\u003e8.8 Bibliography 237\u003c\/p\u003e \u003cp\u003e8.9 Web Links 238\u003c\/p\u003e \u003cp\u003e8.10 Endnotes 238\u003c\/p\u003e \u003cp\u003e\u003cb\u003e9 Approaches to Web Application Development 239\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e9.1 Taxonomy of Web Application Approaches and Frameworks 240\u003c\/p\u003e \u003cp\u003e9.1.1 Programmatic approaches 240\u003c\/p\u003e \u003cp\u003e9.1.2 Template approaches 241\u003c\/p\u003e \u003cp\u003e9.1.3 Hybrid approaches 241\u003c\/p\u003e \u003cp\u003e9.1.4 Frameworks 242\u003c\/p\u003e \u003cp\u003e9.2 Comparative Survey of Web Application Approaches and Frameworks 245\u003c\/p\u003e \u003cp\u003e9.2.1 CGI and FastCGI 245\u003c\/p\u003e \u003cp\u003e9.2.2 Server-Side Includes (SSI) 246\u003c\/p\u003e \u003cp\u003e9.2.3 PHP 246\u003c\/p\u003e \u003cp\u003e9.2.4 Java Servlet API 247\u003c\/p\u003e \u003cp\u003e9.2.5 Cold Fusion 249\u003c\/p\u003e \u003cp\u003e9.2.6 Velocity 251\u003c\/p\u003e \u003cp\u003e9.2.7 Active Server Pages and .NET 252\u003c\/p\u003e \u003cp\u003e9.2.8 Java Server Pages 254\u003c\/p\u003e \u003cp\u003e9.2.9 JSP Model 2 257\u003c\/p\u003e \u003cp\u003e9.2.10 Java Standard Tag Library 258\u003c\/p\u003e \u003cp\u003e9.2.11 Struts 260\u003c\/p\u003e \u003cp\u003e9.2.12 Java Server Faces 261\u003c\/p\u003e \u003cp\u003e9.2.13 JBoss Seam 264\u003c\/p\u003e \u003cp\u003e9.2.14 Rapid application development: Ruby on Rails 264\u003c\/p\u003e \u003cp\u003e9.3 Summary 267\u003c\/p\u003e \u003cp\u003eQuestions and Exercises 272\u003c\/p\u003e \u003cp\u003e9.4 Bibliography 272\u003c\/p\u003e \u003cp\u003e\u003cb\u003e10 Web Application Primer 1: Struts and JSTL 275\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e10.1 Case Study: Virtual Realty Listing Services 276\u003c\/p\u003e \u003cp\u003e10.2 Application Requirements 278\u003c\/p\u003e \u003cp\u003e10.3 Technology Choices 279\u003c\/p\u003e \u003cp\u003e10.4 Overview of Struts 280\u003c\/p\u003e \u003cp\u003e10.5 Structure of the VRLS Application 283\u003c\/p\u003e \u003cp\u003e10.5.1 Configuration 284\u003c\/p\u003e \u003cp\u003e10.5.2 Controller components 287\u003c\/p\u003e \u003cp\u003e10.5.3 View components 291\u003c\/p\u003e \u003cp\u003e10.5.4 Model components 297\u003c\/p\u003e \u003cp\u003e10.6 Design Decisions 299\u003c\/p\u003e \u003cp\u003e10.6.1 Abstracting functionality into service classes 299\u003c\/p\u003e \u003cp\u003e10.6.2 Including embedded pages to support co-branding 301\u003c\/p\u003e \u003cp\u003e10.6.3 Creating and modifying customer profiles in one task 302\u003c\/p\u003e \u003cp\u003e10.7 Suggested Enhancements 303\u003c\/p\u003e \u003cp\u003e10.7.1 Adding an administrative interface 303\u003c\/p\u003e \u003cp\u003e10.7.2 Enhancing the signup process through e-mail authentication 304\u003c\/p\u003e \u003cp\u003e10.7.3 Improving partner recognition through a persistent cookie 305\u003c\/p\u003e \u003cp\u003e10.7.4 Adding caching functionality to the DomainService Class 306\u003c\/p\u003e \u003cp\u003e10.7.5 Paging through cached search results 307\u003c\/p\u003e \u003cp\u003e10.7.6 Using XML and XSLT for view presentation 308\u003c\/p\u003e \u003cp\u003e10.7.7 Tracking user behavior 310\u003c\/p\u003e \u003cp\u003e10.7.8 Using an object-relational mapping tool 310\u003c\/p\u003e \u003cp\u003e10.7.9 Adding DHTML and AJAX for an enhanced user experience 311\u003c\/p\u003e \u003cp\u003e10.8 Summary 312\u003c\/p\u003e \u003cp\u003eQuestions and Exercises 312\u003c\/p\u003e \u003cp\u003e10.9 Bibliography 313\u003c\/p\u003e \u003cp\u003e\u003cb\u003e11 Web Application Primer 2: Ruby on Rails 315\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e11.1 Comparing Rails with Java EE 316\u003c\/p\u003e \u003cp\u003e11.1.1 Similarities 316\u003c\/p\u003e \u003cp\u003e11.1.2 Differences 317\u003c\/p\u003e \u003cp\u003e11.2 Application Requirements 317\u003c\/p\u003e \u003cp\u003e11.3 Building the Administrative Interface as a Rails Application 318\u003c\/p\u003e \u003cp\u003e11.3.1 Downloading and installing Ruby and Rails 318\u003c\/p\u003e \u003cp\u003e11.3.2 Building an application skeleton 318\u003c\/p\u003e \u003cp\u003e11.3.3 Creating a new project and configuring the database 321\u003c\/p\u003e \u003cp\u003e11.3.4 Scaffolding for the model, view, and controller classes 322\u003c\/p\u003e \u003cp\u003e11.3.5 Enhancing the application 326\u003c\/p\u003e \u003cp\u003e11.4 Benefits and Drawbacks of Using Rails 339\u003c\/p\u003e \u003cp\u003e11.4.1 How rapid is rapid application development? 339\u003c\/p\u003e \u003cp\u003e11.4.2 Database support 340\u003c\/p\u003e \u003cp\u003e11.4.3 Limitations of scaffolding 340\u003c\/p\u003e \u003cp\u003e11.4.4 Scalability 341\u003c\/p\u003e \u003cp\u003e11.4.5 Performance and clustering 341\u003c\/p\u003e \u003cp\u003e11.4.6 Version 2.0 issues 341\u003c\/p\u003e \u003cp\u003e11.4.7 Is Rails web-designer-friendly? 342\u003c\/p\u003e \u003cp\u003e11.5 Whither Enterprise Java? 343\u003c\/p\u003e \u003cp\u003e11.6 Summary 344\u003c\/p\u003e \u003cp\u003eQuestions and Exercises 344\u003c\/p\u003e \u003cp\u003e11.7 Bibliography 345\u003c\/p\u003e \u003cp\u003e11.8 Web Links 345\u003c\/p\u003e \u003cp\u003e11.9 Endnotes 345\u003c\/p\u003e \u003cp\u003e\u003cb\u003e12 Search Technologies 347\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e12.1 Overview of Algorithms 348\u003c\/p\u003e \u003cp\u003e12.1.1 Historical perspective 348\u003c\/p\u003e \u003cp\u003e12.1.2 Basic vector-space algorithm 349\u003c\/p\u003e \u003cp\u003e12.1.3 Common enhancements 355\u003c\/p\u003e \u003cp\u003e12.1.4 Word clustering 355\u003c\/p\u003e \u003cp\u003e12.1.5 Custom biases 357\u003c\/p\u003e \u003cp\u003e12.2 Searching the Web 358\u003c\/p\u003e \u003cp\u003e12.2.1 Google page ranking 358\u003c\/p\u003e \u003cp\u003e12.2.2 Web spiders 359\u003c\/p\u003e \u003cp\u003e12.2.3 Summary 361\u003c\/p\u003e \u003cp\u003e12.3 Site Search Applications 361\u003c\/p\u003e \u003cp\u003e12.3.1 General architecture 362\u003c\/p\u003e \u003cp\u003e12.3.2 Lucene 363\u003c\/p\u003e \u003cp\u003e12.3.3 OneBox applications 367\u003c\/p\u003e \u003cp\u003e12.4 Search Engine Optimization 369\u003c\/p\u003e \u003cp\u003e12.4.1 Robots.txt 370\u003c\/p\u003e \u003cp\u003e12.4.2 Sitemaps 372\u003c\/p\u003e \u003cp\u003e12.4.3 Sitemap extensions 376\u003c\/p\u003e \u003cp\u003e12.4.4 Site and URL structure 376\u003c\/p\u003e \u003cp\u003e12.4.5 Black Hat SEO 377\u003c\/p\u003e \u003cp\u003e12.5 Summary 378\u003c\/p\u003e \u003cp\u003eQuestions and Exercises 379\u003c\/p\u003e \u003cp\u003e12.6 Bibliography 380\u003c\/p\u003e \u003cp\u003e12.7 Web Links 380\u003c\/p\u003e \u003cp\u003e12.8 Endnotes 380\u003c\/p\u003e \u003cp\u003e\u003cb\u003e13 Trends and Directions 381\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e13.1 XML Query Language 382\u003c\/p\u003e \u003cp\u003e13.2 Semantic Web 385\u003c\/p\u003e \u003cp\u003e13.2.1 Resource Description Framework (RDF) 386\u003c\/p\u003e \u003cp\u003e13.2.2 Composite Capabilities\/Preference Profiles 392\u003c\/p\u003e \u003cp\u003e13.2.3 RDF query language 393\u003c\/p\u003e \u003cp\u003e13.3 Future of Web Application Frameworks 396\u003c\/p\u003e \u003cp\u003e13.3.1 One more time: separate content from presentation 396\u003c\/p\u003e \u003cp\u003e13.3.2 Use the right tools for the job 398\u003c\/p\u003e \u003cp\u003e13.3.3 Simplicity 399\u003c\/p\u003e \u003cp\u003e13.4 Current Trends 404\u003c\/p\u003e \u003cp\u003e13.4.1 Everything old is new again 404\u003c\/p\u003e \u003cp\u003e13.4.2 Social networking and community web sites 405\u003c\/p\u003e \u003cp\u003e13.4.3 Cloud computing and “Weblications” 405\u003c\/p\u003e \u003cp\u003e13.5 Summary 407\u003c\/p\u003e \u003cp\u003eQuestions and Exercises 407\u003c\/p\u003e \u003cp\u003e13.6 Bibliography 408\u003c\/p\u003e \u003cp\u003e13.7 Web Links 408\u003c\/p\u003e \u003cp\u003e13.8 Endnotes 408\u003c\/p\u003e \u003cp\u003e\u003cb\u003e14 Conclusions 409\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIndex 413\u003c\/p\u003e  \u003cb\u003eLeon Shklar\u003c\/b\u003e currently works for Thomson Reuters where he is the head of technology for Reuters Media. Previously, Leon headed up the development team for the online edition of the \u003ci\u003eWall Street Journal\u003c\/i\u003e at Dow Jones. Prior to joining Dow Jones, he spent six years at Bell Communications Research and almost as long in the world of dot-coms and Internet software. Leon holds a Ph.D. in Computer Science from Rutgers University.  \u003cp\u003e\u003cb\u003eRich Rosen\u003c\/b\u003e is a senior developer in the Fixed Income Systems Group at Interactive Data Corporation. Previously, he was an Application Architect at Dow Jones. Rich began his career at Bell Labs, where his work with relational databases and the Internet prepared him the world of Web application development. He is a co-author of \u003ci\u003eMac OS X for Unix Geeks\u003c\/i\u003e, 4th Edition (O'Reilly). Rich holds an M.S. in Computer Science from Stevens Institute of Technology.\u003c\/p\u003e  It is not enough for Web application developers to be proficient in just one platform. As platforms grow and evolve, and as new ones arise, developers must be able to transfer their proficiency across platforms in order to build complex Web applications effectively. This book helps developers understand the underlying core technologies so that they can learn new APIs and application frameworks more quickly.  \u003cp\u003e\u003ci\u003eWeb Application Architecture\u003c\/i\u003e provides an in-depth examination of the basic concepts and general principles associated with Web application development, using examples that illustrate specific technologies. This conceptual knowledge is critical when building and deploying complex systems that are scaleable, extensible, maintainable and reusable. The book explains the underlying protocols and languages that support Web application development, and delineates the best practices associated with building robust applications. It describes mechanisms for providing Web access to heterogeneous data sources including relational databases and multimedia.\u003c\/p\u003e \u003cp\u003eThe new edition includes brand new and fully updated chapters on:\u003c\/p\u003e \u003cul\u003e \u003cli\u003eInternet protocols - from TCP\/IP to HTTP and beyond\u003c\/li\u003e \u003cli\u003esoftware components - servers, browsers, proxies and agents\u003c\/li\u003e \u003cli\u003ethe dynamic web - how web applications present dynamic data\u003c\/li\u003e \u003cli\u003emarkup languages – HTML, XML and CSS\u003c\/li\u003e \u003cli\u003etools, libraries and frameworks - AJAX, Struts, and Ruby on Rails\u003c\/li\u003e \u003cli\u003esearch technologies – underlying principles, application design, and SEO\u003c\/li\u003e \u003cli\u003efuture directions and emerging technologies – XML Query, RDF, and the Semantic Web\u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003eIdeally suited for course usage and self-study, this practical, engaging textbook is essential reading for students, programmers and system architects and designers alike. It provides a comprehensive, timely overview of modern web technology.\u003c\/p\u003e \u003cp\u003eVisit the supplementary website at www.wileyeurope.com\/college\/shklar\u003c\/p\u003e","brand":"Wiley","offers":[{"title":"Default Title","offer_id":47990471393509,"sku":"NP9780470518601","price":57.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1842\/7735\/files\/9780470518601.jpg?v=1761787959","url":"https:\/\/k12savings.com\/products\/web-application-architecture-isbn-9780470518601","provider":"K12savings","version":"1.0","type":"link"}