Microsoft AJAX Library Essentials: Client-side ASP.NET AJAX 1.0 Explained - Cristian Darie - E-Book

Microsoft AJAX Library Essentials: Client-side ASP.NET AJAX 1.0 Explained E-Book

Cristian Darie

0,0
31,19 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

Microsoft AJAX Library Essentials is a practical reference for the client-side library of the ASP.NET AJAX Framework 1.0, and a tutorial for the underlying technologies and techniques required to use the library at its full potential. The main goal of this book is to get you comfortable with the Microsoft AJAX Library, a huge set of functions that can be used for developing powerful client-side functionality.Beginning with a hands-on tour of the basic technologies associated with AJAX, JavaScript, XMLHttpRequest, JSON, and the DOM, you'll move on to a crash course in the Microsoft AJAX tools. You will learn, through numerous step-by-step exercises, how to create basic AJAX applications, how the object-based programming model of JavaScript works, and how Microsoft AJAX Library extends this model. You'll understand the architecture of the Microsoft AJAX components, how they all fit together, and exactly what they can do for you. Then you will learn how to use the Microsoft AJAX Library in your web projects, and a detailed case study will walk you through creating your own customized client components. At every stage of your journey, you'll be able to try out examples to illuminate the theory, and consolidate your understanding. In addition to learning about the client and server controls, you'll also see how to handle errors and debug your AJAX applications.To complement your new found skills, the book ends with a visual reference of the Microsoft AJAX Library namespaces and classes, including diagrams and quick explanations for all the classes mentioned in the book, providing an invaluable reference you will turn to again and again.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 305

Veröffentlichungsjahr: 2007

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

Copyright
Credits
About the Authors
About the Reviewers
Preface
What This Book Covers
What You Need for This Book
Who is This Book for
Conventions
Reader Feedback
Customer Support
Downloading the Example Code for the Book
Errata
Questions
1. AJAX and ASP.NET
The Big Picture
AJAX and Web 2.0
Building Websites Since 1990
HTTP and HTML
ASP.NET and Other Server-Side Technologies
JavaScript and Other Client-Side Technologies
What’s Missing?
The World of AJAX
What is AJAX Made Of?
Uses and Misuses of AJAX
Introducing ASP.NET AJAX
Resources and Tools
Setting Up Your Environment
Installing IIS
Installing Visual Web Developer
Creating a Folder for Your Project
Preparing the Atlas Application in Windows Vista
Preparing the Atlas Web Application in Windows XP
Hello World!
Time for Action—Quickstart AJAX
What Just Happened?
Summary
2. AJAX Foundations
JavaScript and the Document Object Model
Time for Action—Playing with JavaScript and the DOM
What Just Happened
JavaScript Events and the DOM
Time for Action—Using JavaScript Events and the DOM
What Just Happened?
Even More DOM
Time for Action—Even More DOM
What Just Happened?
JavaScript, DOM, and CSS
Time for Action—Working with CSS and JavaScript
What Just Happened?
The XMLHttpRequest Object
Creating the XMLHttpRequest Object
Initiating Server Requests
Handling the Server Response
Time for Action—Making Asynchronous Calls with XMLHttpRequest
What Just Happened?
Summary
3. Object-Oriented JavaScript
Concepts of Object-Oriented Programming
Objects and Classes
Encapsulation
Inheritance
Polymorphism
Object-Oriented JavaScript
JavaScript Functions
Functions as Variables
Anonymous Functions
Inner Functions and JavaScript Closures
JavaScript Classes
Class Diagrams
C# and JavaScript Classes
Referencing External Functions
Thinking of Objects as Associative Arrays
Creating Object Members on the Fly
Private Members
Prototypes
The JavaScript Execution Context
var x, this.x, and x
Using the Right Context
Inheritance using Closures and Prototypes
Inheritance Using Closures
Inheritance Using Prototyping
Introducing JSON
Summary
4. Introducing the Microsoft AJAX Library
Microsoft AJAX Library Components
Asynchronous Communication
Client Asynchronous Communication
Server Asynchronous Communication
Working with WebRequest
Time for Action—WebRequest
What Just Happened?
More WebRequests
Time for Action—More WebRequest
What Just Happened?
Summary
5. OOP with the Microsoft AJAX Library
The New Features
JavaScript Base Classes Extensions
Time for Action: Bubble Sort and Base Classes Extensions
What Just Happened?
Classes in Microsoft AJAX Library
The Type, Namespaces, and Events
Time for Action—Creating and Using the Person Class
What Just Happened?
Inheritance
Time for Action—Implementing Inheritance using Microsoft AJAX Library
What Just Happened?
Enumerations
Interfaces
Time for action—Inheritance and Interfaces
What Just Happened?
OOP Recommendations
Summary
6. Creating Client Components
DOM Elements and Events
Components, Behaviors, and Controls
Creating Components
Disposing of Components
Sys.Application and Client Page Life-Cycle Events
The init Event
The load Event
The pageLoad() Method
The pageUnload() Method
The unload Event
Behaviors
Controls
Quicksteps for Creating Custom Client Components
Summary
7. Case Study: Timer and EnhancedTextBox
The Timer Component
The EnhancedTextBox Behavior
Creating Timer and EnhancedTextBox
Time for Action—Creating Custom Client Components
What Just Happened?
Using the Components
Summary
8. Debugging Tools and Techniques
AJAX Debugging Overview
Debugging and Tracing with Microsoft AJAX Library
MicrosoftAjax.debug.js
Anonymous Functions vs. Pseudo-Named Functions
Parameters Validation
Debugging in Internet Explorer
Web Development Helper
Internet Explorer Developer Toolbar
Other tools
Debugging in Firefox
Firebug
Venkman JavaScript Debugger
Web Developer
Fiddler
Testing
Summary
A. Microsoft AJAX Library Reference
Conventions
Function Class
emptyMethod() Method
_validateParams() Method
Parameters
Returns
Remarks
Example
createDelegate() Method
Parameters
Returns
Remarks
Example
createCallback() Method
Parameters
Returns
Remarks
Example
Type Class
JavaScript Base Type Extensions
Array Class
Boolean Class
Date Class
Error Class
create() Method
Parameters
Returns
Remarks
Example
Number Class
Object Class
RegExp Class
String Class
Sys Namespace
Sys.Application Class
Sys.ApplicationLoadEventArgs Class
Sys.Browser Class
Sys.CancelEventArgs Class
Sys.Component Class
Sys.CultureInfo Class
Sys.Debug Class
Sys.EventArgs Class
Sys.EventHandlerList Class
Sys.IContainer Interface
Sys.IDisposable Interface
Sys.INotifyDisposing Interface
Sys.INotifyPropertyChange Interface
Sys.PropertyChangedEventArgs Class
Sys.ScriptLoader Class
Sys.ScriptLoaderTask Class
Sys.StringBuilder Class
Sys.UI Namespace
Sys.UI.Behavior Class
Sys.UI.Bounds Class
Sys.UI.Control Class
Sys.UI.DomElement Class
getElementById() Method ($get)
Parameters
Remarks
Example
addCssClass() Method
Parameters
Example
containsCssClass() Method
Parameters
Returns
Example
removeCssClass() Method
Parameters
Example
toggleCssClass() Method
Parameters
Example
getLocation() Method
Parameters
Returns
getBounds() Method
Parameters
Returns
Remarks
Example
setLocation() Method
Parameters
Remarks
Example
Sys.UI.DomEvent Class
Sys.UI.Key Class
addHandler() Method ($addHandler)
Parameters
Remarks
Example
addHandlers() Method ($addHandlers)
Parameters
Remarks
Example
clearHandlers() Method ($clearHandlers)
Parameters
Remarks
Example
preventDefault() Method
Example
removeHandler() Method
Parameters
Example
stopPropagation() Method
Example
Sys.UI.MouseButton Enumeration
Sys.UI.Point Class
Sys.UI.VisibilityMode Enumeration
Sys.Net Namespace
Sys.Net.NetworkRequestEventArgs Class
Sys.Net.WebRequest Class
Sys.Net.WebRequestExecutor Class
Sys.Net.WebRequestManager Class
Sys.Net.XmlHttpExecutor Class
Sys.Serialization Namespace
Sys.Serialization.JavaScriptSerializer Class
serialize() Method
Parameters
Returns
Remarks
deserialize() Method
Parameters
Returns
Remarks
Index

Microsoft AJAX Library Essentials: Client-side ASP.NET AJAX 1.0 Explained: A practical tutorial to using Microsoft AJAX Library to enhance the user experience of your ASP.NET Web Applications

Cristian Darie

Bogdan Brinzarea

Copyright

Microsoft AJAX Library Essentials

Client-side ASP.NET AJAX 1.0 Explained

Copyright © 2007 Packt Publishing©

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, Packt Publishing, nor its dealers or distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: August 2007

Production Reference: 2200807

Published by Packt Publishing Ltd. 32 Lincoln Road Olton Birmingham, B27 6PA, UK.

www.packtpub.com

Cover Image by www.visionwt.com

Credits

Authors   Bogdan Brinzarea   Cristian DarieReviewers   Ruben Cordoba   Cosmin Mihai GheorghitaDevelopment Editor   Douglas PatersonTechnical Editor   Rajlaxmi NandaEditorial Manager   Dipali ChittarProject Manager   Patricia WeirProject Coordinator   Abhijeet DeobhaktaIndexer   Bhushan PangaonkarProofreaders   Chris Smith   Martin BrooksProduction Coordinator   Manjiri NadkarniCover Designer   Manjiri Nadkarni

About the Authors

Bogdan Brinzarea-Iamandi has a strong background in Computer Science holding Master and Bachelor Degrees at the Automatic Control and Computers Faculty of the Politehnica University of Bucharest, Romania, and also an Auditor diploma at the Computer Science department at Ecole Polytechnique, Paris, France. His main interests cover a wide area from embedded programming, distributed and mobile computing, and new web technologies.

Currently, he is employed as Supervisor within the Alternative Channels Sector team of the IT Division in Banca Romaneasca, a Member of National Bank of Greece. He is Project Manager for Internet Banking and he coordinates other projects related to new technologies and applications to be implemented in the banking area.

This is Bogdan’s second book on AJAX, following the popular AJAX and PHP: Building Responsive Web Applications, also published by Packt.

Cristian Darie is a software engineer with experience in a wide range of modern technologies, and the author of numerous technical books. Cristian currently lives in Bucharest, Romania, studying distributed application architectures for his PhD. He’s getting involved with various commercial and research projects, and when not planning to buy Google, he enjoys his bit of social life. If you want to say “hi” you can reach Cristian through his personal website at http://www.cristiandarie.ro.

About the Reviewers

Ruben Cordoba graduated from Merida University (Spain) and has a Bachelor Degree in Technical Engineering of Computer Systems. Programming and web development are his passions. He has loved computers from the moment his dad presented him his first computer, an AMSTRAD CPC464 with green screen, at the age of six. When he is not programming, Ruben likes walking his dog along the beach, getting inspired with new ideas to code. He lives in the South of Spain and works as a web programmer.

Cosmin Mihai Gheorghita is working as a computer programmer for a small and dynamic Romanian company. His skills range from low-level programming using microcontrollers to high-level web development. Although he likes to experiment with hot technologies such as Ruby On Rails, he has specialized in .NET technologies with an emphasis on C# and ASP.NET.

Preface

AJAX is a complex phenomenon that means different things to different people. Computer users appreciate that their favorite websites are now friendlier and feel more responsive. Web developers learn new skills that empower them to create sleek web applications with little effort. Indeed, everything sounds good about AJAX!

At its roots, AJAX is a mix of technologies that let you get rid of the evil page reload, which represents the dead time when navigating from one page to another. While this may be regarded as a minor feature, the elimination of page reloads opened the way for implementing more complex features into websites, such as real-time, server-supported data validation, drag and drop, and other tasks that were traditionally associated only with desktop applications. The central technology in the AJAX mix is JavaScript, which has been key to the success of AJAX: JavaScript is a lightweight language, it’s loaded quickly by the web browser, and it’s supported by all modern web browsers. No additional plug-ins or tools are required from the user to load an AJAX web application.

Microsoft created the ASP.NET AJAX Framework to build on the features offered by JavaScript, integrating the amazing power of AJAX into the world of ASP.NET. Available as a separate download from http://ajax.asp.net/, and integrated into the upcoming Visual Studio “Orcas” Edition, the ASP.NET AJAX Framework includes a wealth of server-side and client-side features that allow creating powerful web applications quickly.

The ASP.NET AJAX Framework is composed of a client-side JavaScript library named the Microsoft AJAX Library, and a set of server-side ASP.NET controls built on top of this library, named the Microsoft AJAX Extensions. This book covers the Microsoft AJAX Library, which can be a significant challenge for the typical server-side ASP.NET developer—the target of this book. Why is that so? For starters, in order to successfully use the Microsoft AJAX Library, one needs to have decent exposure to JavaScript, and an understanding of how objects work in JavaScript. This book addresses these topics in Chapters 2 and 3. If you aren’t a JavaScript wizard yet, you’ll find that JavaScript is quite different than the typical .NET environment, but we’re certain that you’ll end up liking it. You also need to understand the environment created by the library, which implements the typical features of the .NET platform into JavaScript, such as namespaces, interfaces, and so on.

To become a good ASP.NET AJAX Framework developer you’ll need, obviously, to learn how to work with the ASP.NET AJAX Extensions as well. You can do so before or after reading this book. In both cases, this book will help you truly understand how the client-side part of the framework functions, how to work with it, and how to extend it.

We hope you’ll find this book useful and relevant to your projects. For the latest details and updates regarding this book, please visit the support page maintained by Bogdan Brinzarea and Cristian Darie at http://www.cristiandarie.ro/asp-ajax/.

What This Book Covers

Chapter 1: AJAX and ASP.NET is an initial incursion into the world of AJAX and the vast possibilities it opens up for web developers and companies, to offer a better experience to their users. In this chapter you’ll learn about the world of AJAX and Web 2.0, you’ll set up your development environment, and you’ll even build your first AJAX-enabled web page.

Chapter 2: AJAX Foundations guides you through the foundation technologies used to implement AJAX features, such as JavaScript, DOM, Cascading Style Sheets (CSS), and the XMLHttpRequest object.

Chapter 3: Object-Oriented JavaScript teaches you how objects really work in JavaScript. After a quick definition for terms such as encapsulation, inheritance, and polymorphism, you’ll learn about JavaScript anonymous functions and closures, JavaScript prototypes, the JavaScript execution context and scope, how to implement inheritance using closures and prototypes, how to read class diagrams and implement them using JavaScript code, and more.

Chapter 4: Introducing the Microsoft AJAX Library is the first chapter where you actually work with the Microsoft AJAX Library. You learn what the library is made of, how it is structured, and what its main components do. At the end of the chapter you re-create the quickstart exercise from Chapter 1, but this time using the Microsoft AJAX Library to perform the asynchronous server call.

Chapter 5: OOP with the Microsoft AJAX Library presents the features in Microsoft AJAX Library that extend JavaScript with features of the .NET world, such as namespaces, interfaces, a more powerful inheritance paradigm, extended base classes, properties, events, enumerations, and more.

Chapter 6: Creating Client Components teaches you how to create client components using the Microsoft AJAX Library, which implies working with (and extending) elements of the page, registering events, creating controls and behaviors, and understanding the page life cycle.

Chapter 7: Case Study: Timer and EnhancedTextBox walks you through an exercise that implements the theory you had learned in the book. You create two client-side components, Timer and EnhancedTextBox, which are complex enough to offer a realistic view on creating components with the Microsoft AJAX Library.

Chapter 8: Debugging Tools and Techniques is a short overview of the major tools that you can use to debug your Microsoft AJAX Library projects, using Mozilla Firefox and Microsoft Internet Explorer.

Appendix A: Microsoft AJAX Library Reference is a quick reference and a visual guideline to the Microsoft AJAX Library namespaces and classes, which complements the official documentation at http://ajax.asp.net/docs/ClientReference/.

What You Need for This Book

This book has been written for ASP.NET developers entering the world of the ASP.NET AJAX Framework, and for existing ASP.NET AJAX developers looking for a more detailed tutorial on the client-side of the framework: the Microsoft AJAX Library.

Who is This Book for

To follow this book you need to have a Windows-based machine that can run a web server and Microsoft Visual Web Developer 2005 Express Edition. The installation and setup instructions for your development environment are described in Chapter 1.

Reader Feedback

Feedback from our readers is always welcome. Let us know what you think about this book, what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.

To send us general feedback, simply drop an email to <[email protected]>, making sure to mention the book title in the subject of your message.

If there is a book that you need and would like to see us publish, please send us a note in the SUGGEST A TITLE form on www.packtpub.com or email <[email protected]>.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.

Customer Support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Downloading the Example Code for the Book

Visit http://www.packtpub.com/support, and select this book from the list of titles to download any example code or extra resources for this book. The files available for download will then be displayed.

The downloadable files contain instructions on how to use them.

Errata

Although we have taken every care to ensure the accuracy of our contents, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in text or code—we would be grateful if you would report this to us. By doing this you can save other readers from frustration, and help to improve subsequent versions of this book. If you find any errata, report them by visiting http://www.packtpub.com/support, selecting your book, clicking on the Submit Errata link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata added to the list of existing errata. The existing errata can be viewed by selecting your title from http://www.packtpub.com/support.

Questions

You can contact us at <[email protected]> if you are having a problem with some aspect of the book, and we will do our best to address it.

Chapter 1. AJAX and ASP.NET

“Computer, draw a robot!” said my young cousin to the first computer he had ever seen. (Since I had instructed it not to listen to strangers, the computer wasn’t receptive to this command.) If you’re like me, your first thought would be “how silly” or “how funny”—but this is a mistake. We’re being educated to accommodate computers, to compensate for the lack of ability of computers to understand humans, but in an ideal world that spoken command should have been enough to have the computer please my cousin.

This book doesn’t aim to teach you how to create software applications that intelligently interact with children—we’re still far from that point. However, we’ll help you make a small but important step in that direction. We’ll teach you how to use web development technologies available today—AJAX and ASP.NET AJAX in particular—to enhance web users’ experience of your web site, by creating more usable and friendly web interfaces. As far as this chapter is concerned, we’ll discuss the following topics:

The Big Picture. . Here we’ll answer a question we’re often asked: “Why bother improving our applications’ user interfaces and features, when the existing ones perform satisfactorily?”Building Websites Since 1990. . What are the fundamental principles of the Web, and what are the important technologies that make it work? You probably know most of this, but we hope you’ll welcome this quick refresher.The World of AJAX. . As you will learn (if you don’t already know), AJAX is a powerful tool that you can use to improve your web interfaces. However, it’s important to understand when you should use it, and when you should probably not. We’ll also discuss the basic principles of AJAX, and refer to online resources and tools that can help you along the way.Setting Up Your Environment. . In this book you’ll find plenty of code—and you’ll probably be curious to execute it, and see it in action. We’ve taken care of that by including step-by-step instructions with every exercise. To avoid any potential problems following the exercises, in this section we walk you through the installation and configuration process for the software you need.Hello World! . After reading so much pure theory, and installing many software packages (and we all know how boring software installation can be), you’ll probably be eager to write some code, so at the end of this chapter, you’ll write your first AJAX application.

Let’s get started. We hope your journey through this book will be a pleasant and useful one!

The Big Picture

The story about Cristian’s 7-years old cousin—which happened back in 1990—is still relevant today, regarding the way people instinctively work with computers. The ability of technology to be user-friendly has evolved very much in the past years, but there’s still a long way until we have really intelligent computers that self-adapt to our needs. Until then, people need to learn how to work with computers—some to the extent that they end up loving a black screen with a tiny command prompt on it!

We will be very practical and concise in this book, but before getting back to your favorite mission—writing code—it’s worth taking a little step back, just to remember what we are doing and why we are doing it. We love technology to the sound made by each key stroke, so it’s very easy to forget that the very reason technology exists is to serve people and make their lives at home more entertaining, and at work more efficient.

The computer-working habits of many are driven by software with user interfaces that allow for intuitive (and enjoyable) human interaction. Not coincidentally, successful companies are typically one step ahead of their competition in offering their users simple and natural ways of achieving their goals. This probably explains the popularity of the mouse, of fancy features such as drag and drop, and of that simple text box that searches all the Web for you in just 0.1 seconds (or so it says).

Understanding the way people’s brains work would be the key to building the ultimate software application. While we’re far from that point, what we do understand is that end users need intuitive user interfaces; they don’t really care what operating system they’re running as long as the functionality they get is what they want. This is a very important detail to keep in mind, as programmers typically tend to think and speak in technical terms when interacting with end users. If you disagree, try to remember how many times you’ve said the word “database” when talking to a non-technical person.

The behavior of any computer software that interacts with humans is now even more important than it used to be, because nowadays the computer user base varies much more than in the past, when the users were technically sound as well. Now you need to display good looking reports to Cindy, the sales department manager, and you need to provide easy-to-use data entry forms to Dave, the sales person.

By observing people’s needs and habits while working with computer systems, the term software usability was born—referring to the art of meeting users’ interface expectations, understanding the nature of their work, and building software applications accordingly. AJAX in general, and the ASP.NET AJAX Framework in particular, are modern tools that web developers can use to develop user-friendly Web Applications. As with any other tool, however, they can be used improperly, complicating the user experience, neglecting users with disabilities, or lowering search engine performance.

This being a programming book, our strong focus will regard the technical aspects of Microsoft AJAX Library. However, as a responsible web developer, you should not lose sight of the complementary aspects that affect the success of a web application. If you haven’t already, we strongly recommend that you check at least some of these resources:

Don’t Make Me Think: A Common Sense Approach to Web Usability, second edition, by Steve Krug (New Riders Press, 2005)Prioritizing Web Usability, by Jakob Nielsen and Hoa Loranger (New Riders Press, 2006)Designing Interfaces: Patterns for Effective Interaction Design, by Jenifer Tidwell (O’Reilly, 2005)Web Accessibility: Web Standards and Regulatory Compliance, by Andrew Kirkpatrick, Richard Rutter, Christian Heilmann, Jim Thatcher, and Cynthia Waddell (Friends of ED, 2006)Ambient Findability, by Peter Morville (O’Reilly, 2005)Bulletproof Web Design, second edition, by Dan Cederholm (New Riders Press, 2007)Professional Search Engine Optimization with ASP.NET: A Developer’s Guide to SEO, by Cristian Darie and Jaimie Sirovich (Wrox Press, 2007)

Historically, building user-friendly software has always been easier with desktop applications than with web applications, simply because the Web lacked the technical tools to implement more complex features. Indeed, the Web was designed as a means of delivering simple documents formed of text, images, and links. However, as the Internet gets more mature, the technologies it supports become increasingly potent.

Many technologies have been developed—and are still being developed—to add flashy lights, accessibility, and power to web applications. Notable examples include Java applets, Flash, and Silverlight, which execute inside web browsers that have specific plugins installed. AJAX and ASP.NET AJAX have similar purpose, but on a different scale. They offer support for implementing lightweight rich internet applications without requiring additional plugins, while using a simpler programming model.

AJAX and Web 2.0

These days it’s increasingly harder to discuss AJAX without mentioning Web 2.0 (http://en.wikipedia.org/wiki/Web_2). What is Web 2.0? Some say it is simply a marketing buzzword without any special meaning, while others use this term to describe the new open, interactive web that facilitates online information sharing and collaboration.

How did it start? In the words of Tim O’Reilly, who coined the term, Web 2.0 was born in 2004 after “a brainstorming session between O’Reilly and Medialive International”. As a result, a series of Web 2.0 conferences was born, and the term ended up gaining huge popularity.

Even today, we can find controversies about the definition of “Web 2.0”, but the version number is an obvious allusion to the recent changes of the World Wide Web. The initial goal of the Web addressed the delivery of static content in the form of text and images. The new generation of web applications tends to offer a richer user experience, much closer to that of desktop applications, while using live data from the Internet.

Initially, Web 2.0 was associated with the Semantic Web (http://en.wikipedia.org/wiki/Semantic_web). The Semantic Web is envisioned to be the next step in the Web’s evolution, based on online social-networking applications, using tag-based folksonomies (user-generated tags for data categorization). W3C director Tim-Berners Lee stated that “people keep asking what Web 2.0 is. I think maybe when you’ve got an overlay of scalable vector graphics - everything rippling and folding and looking misty - on Web 2.0 and access to a semantic Web integrated across a huge space of data, you’ll have access to an unbelievable data resource”.

Even if the services offered by Web 2.0 are far away from those aimed by the Semantic Web, where machines are able to understand and extract meanings from the content they offer, Web 2.0 still represents a step forward. In the world of Web 2.0 AJAX plays an essential role, offering the technological support for implementing rich and responsive Web interfaces.

Building Websites Since 1990

Before getting into the details of ASP.NET AJAX, let’s take the inevitable history lesson, to make sure we’ve got our definitions straight. We promise to keep this short. If you’re a web development veteran, feel free to skip ahead to “The World of AJAX” section.

Although the history of the Internet is a bit longer, 1991 is the year when Hypertext Transfer Protocol (HTTP), which is still used to transfer data over the Internet, was invented. In its first few initial versions, it didn’t do much more than opening and closing connections. The later versions of HTTP (version 1.0 in 1996 and version 1.1 in 1999) became the protocols that we all know and use.

HTTP and HTML

HTTP is supported by all web browsers, and it does very well the job it was conceived for—retrieving simple web content. Whenever you request a web page using your favorite web browser, the HTTP protocol is assumed. So, for example, when you type www.msn.com in the location bar of your web browser, it will assume by default that you meant http://www.msn.com.

The standard document type of the Web is Hypertext Markup Language (HTML), and it is built of markup that web browsers understand, parse, and display. HTML is a language that describes documents’ formatting and content, which is basically composed of static text and images. HTML wasn’t designed for building complex web applications with interactive content or user-friendly interfaces. When you need to get to another HTML page via HTTP, you need to initiate a full page reload, and the HTML page you requested must exist at the mentioned location, as a static document, prior to the request. It’s obvious that these restrictions don’t really encourage building anything interesting.

Nevertheless, HTTP and HTML are still very successful technologies that both web servers and web clients (browsers) understand. They are the foundation of the Web as we know it today. Figure 1-1 shows a simple transaction where a user requests a web page from the Internet using the HTTP protocol:

Figure 1-1. A Simple HTTP Request

Note

Three points for you to keep in mind here:

HTTP transactions always happen between a web client (the software making the request, such as a web browser) and a web server (the software responding to the request, such as Microsoft’s IIS [Internet Information Services]). From now on in this book, when saying ‘client’, we refer to the web client, and when saying ‘server’, we refer to the web server.The user is the person using the client.Even though HTTP (and its secure version, HTTPS) is arguably the most important protocol used on the Internet, it is not the only one. Web servers use different protocols to accomplish various tasks, usually unrelated to simple web browsing. The protocol that we’ll use most frequently in this book is HTTP, and when we say ‘web request’ we’ll assume a request using HTTP protocol, unless another protocol is mentioned explicitly.

The HTTP-HTML combination is very limited in what it can do by itself—it only enables users to retrieve static content (HTML pages) from the Internet. To complement the lack of features, several technologies have been developed.

All the web requests from now on in this book will use the HTTP protocol for transferring the data, but the data itself can be built dynamically on the web server (for example, using information from a database), and this data can contain more than plain HTML allowing the client to perform some functionality rather than simply display static pages.

The technologies that enable the Web to act smarter are grouped in the following two main categories:

Client-side technologies enable the web client to do more interesting things than displaying static documents. Usually these technologies complement HTML rather than replacing it entirely.Server-side technologies are those that enable the server to store logic and build web pages on the fly. They usually have support for implementing complex logical, object-oriented programming, working with databases, and so on.

ASP.NET and Other Server-Side Technologies

ASP.NET is Microsoft’s server-side web development technology, offering a solid development platform. It has many competitors, such as PHP, Java Server Pages (JSP), Perl, ColdFusion, Ruby on Rails, and others, each of them having their own sets of weaknesses and strengths.

ASP.NET is part of the .NET Framework. Since .NET’s initial release Microsoft’s marketing team have come up with more definitions for it, but for our purposes, the .NET Framework is the core technology that allows developing and executing ASP.NET Web Applications.

Figure 1-2 shows a request for a ASP.NET page called Default.aspx. This time, instead of sending back the contents of Default.aspx, the server executes Default.aspx, and sends back the results. These results must still be in the form of HTML, or in another format that the client understands.

Figure 1-2 Client Requests an ASP.NET Page

To write the server-side code for ASP.NET web pages, you can use a number of programming langages, C# and VB.NET being the most popular. In this book we’ll use C#, but if you’re a VB.NET fan you should be able to easily translate the code. Since both C# and VB.NET work using the base functionality packaged in the .NET Framework, the major difference between these languages is the syntax.

Note

Since you’re reading this book, you’re probably already familiar with ASP.NET. Should you need further guidance, you can check out Cristian’s Build Your Own ASP.NET 2.0 Web Site Using C# & VB (Sitepoint, 2006).

However, even with ASP.NET that can build custom-made database-driven responses, the browser still displays a static, boring, and not very smart web document. The need for smarter and more powerful functionality on the web client generated a separate set of technologies, called client-side technologies. Today’s browsers know how to parse more than simple HTML. Let’s see how.

JavaScript and Other Client-Side Technologies

The various client-side technologies differ in many ways, starting with how they get loaded and executed by the web client (web browser). JavaScript is a scripting language, whose code is written in plain text and can be embedded into HTML pages to empower them. When a client requests an HTML page, that HTML page may contain JavaScript. JavaScript is supported by all modern web browsers without requiring users to install new components.

JavaScript is a language in its own right (theoretically it isn’t tied to web development), it’s supported by most web browsers under any platform, and it has object-oriented capabilities. However, JavaScript’s OOP support doesn’t follow the same paradigm you’re used to from typical ASP.NET coding—but more on this later. JavaScript is not a compiled language so it’s not suited for intensive calculations or writing device drivers, and it must arrive in one piece at the client to be interpreted. This doesn’t make it suited for writing sensitive business logic (this wouldn’t be a recommended practice anyway), but it does a good job when used in web pages.

With JavaScript, developers could finally build web pages with snow falling over them (remember the days?), with client-side form validation so that the user won’t cause a whole page reload (incidentally losing all typed data) if he or she forgot to enter all the required fields (such as password, or credit card number), or if the email address had an incorrect format. However, despite its potential, JavaScript was never used consistently to make the web experience truly user-friendly, like a desktop application.

Other popular technologies that perform functionality at the client side are Java applets and Macromedia Flash. Java applets are written in the popular and powerful Java language, and are executed through a Java Virtual Machine that needs to be installed separately on the system. Java applets are certainly the way to go for more complex projects, but they have lost the popularity they once had over web applications because they consume many system resources. Sometimes they even need long startup times, and are generally too heavy and powerful for the small requirements of simple web applications.

Macromedia Flash has very powerful tools for creating animations and graphical effects, and it’s the de-facto standard for delivering such kind of programs via the Web. Flash also requires the client to install a browser plug-in. Flash-based technologies become increasingly powerful, and new ones keep appearing.

At the time of writing this book Microsoft is preparing for the launch of Silverlight, a competitor to both Java applets and Flash. Silverlight applications execute inside the web browser though a lightweight version of the .NET Framework supported through browser plugins.

What’s Missing?

With all these options for developing powerful features inside web browsers, why would anyone want anything new? What’s been missing?

As pointed out at the beginning of this chapter, technology exists to serve market needs. And part of the market wants more powerful functionality to web clients without using Flash, Java applets, or other technologies that are considered either too flashy or heavy-weight for certain purposes. A typical example is that of interactive form validation, where the data typed by the visitor must be checked against some validation rules coded on the server for compliancy.

For such scenarios, developers have usually created websites and web applications using HTML, JavaScript, and ASP.NET (or another server-side technology). The typical request with this scenario is shown in Figure 1-3, which shows an HTTP request, and a response made up of HTML and JavaScript built programmatically with ASP.NET.

Figure 1-3 HTTP, HTML, ASP.NET, and JavaScript in Action

The hidden problem with this scenario is that each time the client needs new data from the server, a new HTTP request must be made to reload the page, freezing the user’s activity. The page reload is the problem in the present day scenario, and AJAX comes to our rescue.