31,19 €
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:
Seitenzahl: 305
Veröffentlichungsjahr: 2007
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
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
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.
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.
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/.
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/.
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.
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.
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.
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.
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.
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.
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.
“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:
Let’s get started. We hope your journey through this book will be a pleasant and useful one!
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:
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.
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.
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 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
Three points for you to keep in mind here:
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:
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.
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.
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.
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.