Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Microsoft® ASP.NET and AJAX: Architecting Web Applications
SPECIAL OFFER: Upgrade this ebook with O’Reilly
Acknowledgments
Introduction
Who This Book Is For
Companion Content
Hardware and Software Requirements
Find Additional Content Online
Support for This Book
Questions and Comments
I. The (Much Needed) Facelift for the Old Web
1. Under the Umbrella of AJAX
What Web Do We Want?
It’s All About User Experience
User Experience for Dummies
User Experience for the Poor Web User
User Experience for Developers
User Experience for Managers
Origins of the Web
The First Cry
The Mechanics of the Web
The Original Purpose of HTML and HTTP
Paradox of the Web
The Sturdy, Old Columns That Hold Up the Web
Pillars Can’t Be Changed
The Biggest Benefit of AJAX
What’s AJAX, Exactly?
A New Way to Do Web Programming
The XMLHttpRequest Object
The Document Object Model
The Paradigm Shift
The Pages-for-Forms Model
The Data-for-Data Model
Refactoring to AJAX: Features, Pages, and Applications
AJAX and New Web Projects
Adding AJAX Capabilities
Selective Updates
Costs and Benefits
Architecture Is the Concern
Some Common Architectural Concerns
Two Tiers and a Data Format
JSON as the Fat-Free Alternative to XML
Costs and Benefits
The Case for Rich Internet Applications
Reach vs. Rich
RIA Offers Better HTML
RIA Offers Better JavaScript
Summary
2. The Easy Way to AJAX
The ASP.NET AJAX Infrastructure
The Page’s Script Manager
The ScriptManager Control
Logistics for Partial Rendering
Scripts, Just Served Better
Scripts, Just Made Global
Adding Service References to Pages
Defining History Points Within Pages
The Microsoft JavaScript Library
A Richer JavaScript Is Here
Pros and Cons of the JavaScript Language
Adding Object-Orientation to JavaScript
Partial Rendering
The UpdatePanel Control
Motivation for Partial Rendering
The Syntax at a Glance
Mechanics of Partial Rendering
Server-Side Partial Rendering
Role of View State
Smooth Page Updates
Programming Updatable Panels
Conditional Updates
Commanding Programmatic Updates
Dynamic Templates
Additional Capabilities
Minimizing Data Transfer
Golden Rules for Placing UpdatePanels
Crunching the Numbers for Partial Rendering
Shades of Partial Rendering
User Feedback
Disabling Visual Elements During Updates
Issues with Concurrent Calls
Issues with Polling
AJAX and JavaScript Injections
Remote Methods
Page Methods
Invoking Page Methods
Page Methods vs. Services
Widgets and Effects
AJAX Control Toolkit
The jQuery Library
Summary
3. AJAX Architectures
The AJAX Service Layer Pattern
Architectural Overview
HTTP Façade
HTTP Façade and the Service Layer Pattern
Technologies for the HTTP Façade
Data Transfer and Data Formats
Why JSON Is Preferable to XML
HTML Presentation Layer
Inside the HTTP Façade
Anatomy of an HTTP Request
WCF Services
ASP.NET Web Services
Custom Services
ADO.NET Data Services
The AJAX Presentation Layer
Getting a Proxy for the HTTP Façade
Using the Proxy
The JavaScript Model-Controller Pattern
Security Considerations
The HTTP Façade Is Not Your Middle Tier
Built-in Security Countermeasures
Replay Attacks
Discriminate Against Outsiders
Trusting the HTTP Façade
The AJAX Server Pages Pattern
Architectural Overview
Classic ASP.NET Server Controls
Increasing JavaScript Emissions in the Page
Code-Behind and Service Layer
The Classic Postback Model Revisited
It’s Always a Postback
A Smarter Form of Partial Rendering
Libraries in Action
Telerik’s RadControls for ASP.NET AJAX
Gaiaware’s Gaia AJAX
Summary
II. Power to the Client
4. A Better and Richer JavaScript
JavaScript Today
The Language and the Browser
Original Goals of the Language
The Scripting Engine
Recognized Flaws
Pillars of the Language
Objects as Dictionaries
Functions as Objects
Dynamic Typing
Closures and Prototypes
JavaScript (If Any) of the Future
Overhauling the Language
It’s All About Security
Google’s V8 Engine
The Microsoft AJAX Library
Overview of the Library
Constituent Files
Linking the Microsoft AJAX Library
No Bells and Whistles
JavaScript Language Extensions
Primitive Types
New Types
Shorthand Functions
Object-Oriented Extensions
Namespaces and Classes
Inheritance and Polymorphism
Interfaces
Framework Facilities
Reflection
The Application Object
String Manipulation
Debugging
The Network Stack
The Eventing Model
Summary
5. JavaScript Libraries
From Server Controls to JavaScript Widgets
The ASP.NET Factor
Why Was ASP.NET a Milestone?
The Wind Is Changing for Server Controls
The Widget Factor
Most Popular Libraries
The Dojo Library
The ExtJS Library
The PrototypeJS Library
The Script.aculo.us Library
The Yahoo! UI Library
Libraries and the Process of Natural Selection
The jQuery Library
The Library at a Glance
Size of the Library
Fundamental Traits
Using the Library in Visual Studio 2008
The Core Library
The $ Function
Wrapped Sets
Helper Methods of the $ Function
jQuery Selectors
CSS Selectors
CSS Selectors in Action
Filters
Form Filters
Working on Wrapped Sets
Looping over Wrapped Sets
Some Predefined Operations
Chaining Methods
jQuery Utilities
Event Handling
Visual Effects
AJAX Functions
Caching
jQuery Plug-ins
Summary
6. AJAX Design Patterns
Design Patterns and Code Development
Generalities About Design Patterns
Applying Design Patterns
The Real Value of Patterns
Patterns and Idioms
Patterns in AJAX Development
Dynamic Data Download
Page DOM Manipulation
User Actions
Unique URL
Patterns for JavaScript Development
The Singleton Pattern
Generalities of the Singleton Pattern
The Singleton Pattern Used with the Microsoft AJAX Client Library
The Model-View-Controller Pattern
Generalities of the MVC Pattern
MVC in JavaScript
The On-Demand JavaScript Pattern
Generalities of the On-Demand JavaScript Pattern
Using XMLHttpRequest to Download Scripts on Demand
Using the DOM to Download Scripts on Demand
The Predictive Fetch Pattern
Generalities of the Predictive Fetch Pattern
Details of the Predictive Fetch Pattern
Motivations for Using the Predictive Fetch Pattern
Open Points Regarding the Predictive Fetch Pattern
Creating a Reference Implementation
A Sample Scenario for the Predictive Fetch Pattern
Managing Remote Calls
Caching Makes Applications Faster and Prettier
Summary of the Predictive Fetch Pattern
The Timeout Pattern
Generalities of the Timeout Pattern
Details of the Timeout Pattern
Motivations for Using the Timeout Pattern
Terminating a Browser Session
A Timeout Pattern Reference Implementation
A Sample Scenario for the Timeout Pattern
Open Points Regarding the Timeout Pattern
Related Patterns
The Periodic Refresh Pattern
The Heartbeat Pattern
The Event Scheduling Pattern
The Progress Indicator Pattern
Generalities of the Progress Indicator Pattern
Details of the Progress Indicator Pattern
The ASP.NET UpdateProgress Control
Open Points Regarding the Progress Indicator Pattern
A Progress Indicator Reference Implementation
A Sample Scenario for the Progress Indicator Pattern
Definition of the Server API
Implementing the Task
Definition of the Event Sink
Definition of the Client API
Updating the User Interface
Canceling an Ongoing Remote Task
The Too-Easy Way of Canceling Tasks
Designing an Interruptible Server Task
Interrupting a Task from the Client
What About Rollbacks?
Other Patterns
The Micro-Link Pattern
Page Links and Micro-Links
Micro-Links in Action
Micro-Links in jQuery
The Cross-Domain Proxy Pattern
The Same Origin Policy Problem
Web Remoting via JavaScript
Handling Errors
The Submission Throttling Pattern
The Explicit Submission Pattern
Piecemeal Submission
Timers to Simulate Multithreading
The Live Form Pattern
Summary
7. Client-Side Data Binding
An Architectural Tour of ASP.NET Data Binding
Defining the HTML Template
Automated HTML Factories
Template-Based HTML Factories
The ITemplate Interface
Template-Based Approach vs. Automated Approach
Defining the Data Source
Feasible Data Sources in ASP.NET
Data Binding Properties
Data Binding at the Time of AJAX
Tools for Effective Client-Side Data Binding
Partial Rendering Is Still an Option
The Browser-Side Template Pattern
Generalities of the BST Pattern
The BST Pattern Explained
What’s an HTML Template Exactly?
Mixing Data and Templates
Dual-Side Templating
Creating a BST Reference Implementation
BST: The Big Picture
Preparing the Page
The HTML Builder
Customized Item Rendering
Customized Markup Rendering
Making Your Solution Juicier with jQuery Effects
The HTML Message Pattern
Generalities of the HM Pattern
The HM Pattern Explained
Motivation for Using the HM Pattern
BST vs. HTML Message
Developing an HM Reference Implementation
HM: The Big Picture
The Remote Service
Markup Rendering
The DynamicPopulate Extender
A Quick Demo in ASP.NET MVC
A Look at ASP.NET AJAX 4.0
ASP.NET AJAX Templates
Structure of a Template
The Sys.UI.DataView Component
Injecting Logic into the Template
The Sys.Data.DataSource Component
ASP.NET Library for ADO.NET Data Services
Generalities of the ADO.NET Data Services Framework
Using a Proxy for ADO.NET Data Services
Displaying Content from an ADO.NET Data Service
Summary
8. Rich Internet Applications
Looking for a Richer Web
The Dream of Binary Code Running over the Web
The Initial ActiveX Attempt
The Thorns of Security and Interoperability
The Flash Attempt
Browser Plug-ins
A Brief History of Plug-ins
Security Concerns
The <object> Tag
Characteristics of a Browser Plug-in
Plug-ins for Hosting Applications
Microsoft Silverlight at a Glance
Elements of the Silverlight Architecture
Silverlight vs. AJAX
Silverlight vs. Smart Clients
Running Silverlight Applications
Graphics and Multimedia
Media Pack
Animation
Deep Zoom
Building Applications
Code and Markup
Programming Languages
XAP Packages
CLR Instancing
The Programming Model of Microsoft Silverlight
WPF-Based User Interface
Layout Manager
Common Controls
The Data Binding Manager
Compatibility Between Silverlight and WPF Code
The .NET Base Class Library
Support for LINQ
Support for Threads
Support for Timers
Isolated Storage
Why Is Local Storage Important?
The Storage System
Working with Files and Directories
Working with File Streams
Storage Management
Disk Quotas
Networking
Downloading Data
Managing Web Requests
Consuming Services
Cross-Domain Requests
Microsoft Silverlight and Code Security
The Security Model
Code Access Security
Code Transparency
Security Attributes
Transparent Code
Critical Code
Safe-Critical Code
Secure by Design
Application Code vs. Platform Code
Inheritance Rules
Summary
About the Author
Index
SPECIAL OFFER: Upgrade this ebook with O’Reilly
← Prev
Back
Next →
← Prev
Back
Next →