·
What Are
Distributed Data Applications?
·
Why Do We
Need To Distribute?
·
Windows to
Web.
·
Data is
dead, long live Data.
·
How Can We
Do "Distributed" on the Internet?
·
Internet
Protocols. Internet Clients
·
Server Port
and Firewall Configurations
·
The
Elements of a Distributed Application
·
Data
Stores, server side and client side
·
Client
Devices and client Applications
·
Working
with "Rich" Clients. Working with "Down-level" Clients
·
Processing
and Presenting Information
·
A Simple
3-tier Design. A More Realistic 3-tier Design
·
Moving to
n-tier Designs. A More Realistic n-tier Design
·
Framework
Resources for the Middle Tier
·
Understanding
ADO.NET
·
About
"Relational" Data Access
·
Classic ADO
via Interop. Classic ADO Techniques
·
The ADO.NET
Data Access Classes.
·
The .NET
Data Providers
·
Connected
Data Access - the DataReader
·
Disconnected
Data Access - the DataSet
·
The
DataAdapter Object, Pushing Changes Back to the Data Store
·
Understanding
System.Xml
·
Representing
Data and Information
·
Schemas and
DTDs, Unstructured Information
·
The W3C
Interface Recommendations
·
An Overview
of the System.Xml Namespace, the System.Xml Classes
·
The XML
"Document" Objects
·
The XML
"Navigator" Object
·
XML and
Relational Data Synchronization
·
The XML
"Writer" and "Reader" Objects
·
The XML
"Validation" Objects
·
The XSL
"Transformation" Object
·
Data Access
and the n-tier Model.
·
What is The
Data Being Used For?
·
Do We Need
to Remote the Data?
·
Serialization
and the System.Runtime.Remoting Classes
·
Are We Just
Displaying the Data?
·
Some n-tier
Data Access Scenarios
·
Displaying
Data - Doing It All On The Server
·
Expanding
the Middle Tier, Moving Processing to the Client
·
Getting
Updates Back to the Server, HTML Forms and Query Strings
·
Client-side
Components, Client Side Executables and Services
·
Summary
·
Data Access
Components
·
Different
Types of "Component"
·
.NET
Components
·
Building
.NET Components
·
Using a
.NET Component
·
COM and
COM+ Components
·
User
Controls
·
Using a
User Control
·
Include
Files
·
Server Controls
·
Accessing
and Exposing Data
·
Delivering
Data to Rich Clients
·
Managing
Data for Down-level Clients
·
Displaying
XML Data
·
The DataSet
Object
·
The
Structure of the DataSet Object
·
The
DataTable Object
·
Filling a
DataSet with a DataAdapter
·
Table and
Column Mappings
·
When Should
I Use a DataSet?
·
Relational
Data Access Component Examples
·
Setting Up
the Examples
·
Accessing
and Returning Relational Data
·
Returning a
DataReader Reference
·
The
SupplierList Data Access Component
·
The
GetSuppliersDataReader Method
·
Displaying
the Results
·
Returning a
DataSet Object
·
The
GetSuppliersDataSet Method
·
Returning a
Custom Array Reference
·
Filling the
Array
·
Displaying
the Results
·
Returning
an ArrayList Reference
·
Filling the
ArrayList
·
Displaying
the Results
·
Returning
an XML String
·
Displaying
the Results
·
The
Resulting XML and the XSL Stylesheet
·
Returning
an XmlDocument Object
·
Displaying
the Results
·
Returning
XML via SQLXML from SQL Server
·
The
GetSuppliersSqlXml Method
·
Displaying
the Results
·
Returning
Related Tables in a DataSet Object
·
The Data
Access Component and Stored Procedures
·
The
GetOrdersByCustomerDataSet Method
·
Filling the
Tables
·
Creating
the Relationship Between the Tables
·
Displaying
the Results in Tables
·
Using the
Data Relationship Information
·
Searching
for Customers By Name
·
Summary
·
Accessing
XML Documents
·
XML Data
Access Component Examples
·
Accessing
and Returning Relational Data
·
The
SupplierListXml Data Access Component
·
Returning
an XmlTextReader Reference
·
Displaying
the Results
·
The
Page_Load Event Handler
·
Parsing an
XML Document
·
Returning
an XmlValidatingReader Reference
·
Creating
and Initializing an XmlValidatingReader Object
·
Catching
Validation Events
·
Displaying
the Results of the GetSuppliersValidatingReader Method
·
Returning a
DataSet Object
·
Displaying
the Results
·
Returning a
Custom Array Reference
·
Using the
XPathNavigator and XPathNodeIterator Objects
·
Building
the Array
·
Displaying
the Results
·
Returning
an ArrayList Reference
·
Displaying
the Results
·
Returning
an XML String
·
Displaying
the Results
·
Returning
an XmlDocument Object
·
Displaying
the Results
·
Returning
an XPathDocument Object
·
Displaying
the Results
·
Summary
·
The
Application Plumbing
·
Overview of
Client-side Techniques
·
Available
Client-side Programming Techniques
·
Making a
Choice on Client Support
·
Providing
Alternative Client Support
·
Adapting
Content for Individual Clients
·
Using
Client "Categories"
·
Our Chosen
Categories
·
Choosing
Categories Based on Actual Client Requests
·
Remoting
Data to the Client
·
Remoting Relational
Data to the Client
·
Remote Data
Services with Relational Data
·
The Text
Data Control
·
Running the
.NET Framework on the Client
·
Using a Web
Service
·
Remoting
XML Data to the Client
·
Client-side
XML Parsers
·
The MSXML
Parser
·
MSXML
Parser Versions
·
Running the
.NET Framework on the Client
·
The Basics
of .NET Remoting
·
Aspects of
.NET Remoting
·
Object
Marshalling
·
Marshal By
Value - Automatic
·
Marshal By
Value - Custom
·
Invoking
Serialization
·
Marshal By
Reference
·
Marshal By
Object or Marshal By Reference?
·
Activation
and Lifetime
·
Channels
·
Configuration
·
Hosting the
server in IIS
·
Security
·
Using
ASP.NET Sessions
·
Sessions
Configuration in ASP.NET
·
Disabling
Session Support
·
Sessions
and Web Farms
·
Checking
for Session Support
·
Munging
URLs for Session Support
·
Client
Detection Example
·
Overview of
the Process
·
Detecting
the Client Type
·
Detecting
Non-HTML Client Devices
·
Using the
Mobile Internet Toolkit
·
The Client
Type Detection Code
·
Determining
the Type for HTML Clients
·
The
default.aspx Page
·
Detection
Errors and Unsupported Clients
·
Checking
for Client-side Scripting Support
·
Redirecting
The Client If Scripting Is Enabled
·
The
Device-Specific "Home" Pages
·
Displaying
the Results
·
The
WML-specific "Home" Page
·
Getting the
Capabilities Information
·
Viewing the
Results
·
Internet
Explorer 6.0
·
WML Devices
- the Nokia Phone Simulator
·
Summary
·
Working
with Down-level Clients
·
A
Multiple-Client Order List Application
·
The User
Interface
·
Detecting
the Client Type
·
Checking
for Client-Side Scripting Support
·
Session
Support
·
The Data
Access Tier
·
Maximizing
Efficiency through Caching
·
The Order
List Application - HTML Version
·
The Outline
Process
·
Searching
for Customers
·
The HTML
Form Controls
·
Displaying
a List of Customers
·
Showing the
Help Text
·
Calling the
Data Access Component
·
Performing
the Customer Search
·
Fetching
and Displaying the Results
·
The
DataGrid to Display the Customer List
·
Defining
the Columns in the DataGrid
·
Handling
Paging in the DataGrid
·
Displaying
a List of Orders
·
The Order
List Frameset Page
·
Getting the
Data from the Session or Server
·
The
GetDataSetFromSessionOrServer Function
·
The
DataGrid to Display the Order List
·
Using a
"Template" Column
·
The
Page_Load Event Handler
·
Displaying
the Order List
·
Displaying
the Order Details
·
The
Declaration of the DataGrid and Labels
·
The ASP.NET
Code for the Page
·
Getting the
DataSet from the Server or Session
·
The
ShowOrderLines Routine
·
Calculating
the Order Total and Displaying the Details
·
The Order
List Application - "Mobile" Version
·
The Outline
Process
·
Fetching Data
from the Server
·
Fetching
the Customer List
·
Fetching
the Orders Data
·
Massaging
the DataSet
·
The Mobile
Page Content
·
Adding
Style to the Output
·
The Mobile
Stylesheet for our Application
·
Setting the
Search Type
·
Specifying
the Search String
·
The Code in
the SetSearchType Event Handler
·
Showing the
Customer List
·
The Code in
the GetCustomers Event Handler
·
Listing the
Orders for the Selected Customer
·
The Code in
the GetOrders Event Handler
·
Displaying
the Order Details
·
The Code in
the ShowOrderDetail Event Handler
·
Summary
·
Working
with Rich Clients
·
Working
with XML
·
Why XSL and
XSLT?
·
Exposing
and Delivering XML
·
Using XML
in IE5 and Above
·
Building
the Middle Tier
·
Fetching
the Customer List
·
The
Page_Load Event Handler
·
Fetching
the Order List
·
The
Page_Load Event Handler
·
Nested XML
Output from a DataSet
·
Selecting a
Customer
·
The HTML
Page Content
·
Access Keys
and Button Captions
·
The Help
Text and Results Display Area
·
Loading the
XML Customers List
·
Checking
the ReadyState
·
Displaying
the Help Text
·
Finding and
Displaying Customer Details
·
Using an
XSLT Stylesheet
·
Creating
the XPath Statements
·
The XSLT
Stylesheet
·
Performing
the Transformation
·
The
Client-side doSearch Function
·
Sorting and
Paging the Customer List
·
Selecting
an Order
·
The HTML
Page Content
·
Loading the
XML Orders List
·
Finding and
Displaying the Order Details
·
Processing
the XSLT Stylesheet
·
The XSLT
Stylesheet for the Order List
·
Viewing
Order Details
·
Extracting
the Order Details
·
Using Web
Services in IE5 and Above
·
Looking at
the Customer-Data Web Service
·
Testing a
Web Service
·
Building
the Middle Tier
·
Storing
Application Settings in web.config
·
The
GetCustomers Method
·
The
GetOrders Method
·
The IE5
WebService Behavior
·
Opening and
Using a Web Service
·
Accessing
the Response from the Web Service
·
Using the
XML Data in our Application.
·
A Hypertext
Application Example
·
Running the
Example Hypertext Application
·
Loading the
XML Data
·
Building
the Middle Tier
·
The HTA
Page Content
·
Downloading
the Data
·
The
loadXMLDocument Function
·
The
saveLocalXML Function
·
The
refreshData Function
·
Implementing
Hyperlinks in HTA Pages
·
Selecting
an Order
·
Working
with Delimited Text Data
·
Remember
the TDC?
·
Building
the Middle Tier
·
The
Middle-Tier Component
·
Creating
the Customer List Delimited String
·
Creating
the Order List Delimited String
·
Creating
the Customer List Delimited String
·
Iterate or
Transform?
·
Selecting a
Customer
·
Declaring
the Tabular Data Control
·
Using the
ReadyStateChange Event
·
The
Data-Bound Table
·
Paging the
Table Rows
·
The
DoSearch Subroutine
·
Filtering
the Data
·
Displaying
the Results
·
Selecting
and Viewing an Order
·
Fetching
the Data from the Server
·
Setting the
Customer ID Client-side
·
The
Data-Bound Tables
·
The
ShowOrderDetail Subroutine
·
Specifying
Currency and Percentage Formats.
·
Client-side
Data Binding with XML Anyone?
·
Summary
·
All about
.NET remoting and Serialization
·
Remoting
Data
·
Remoting
Forms
·
Remoting
Executables/DLLs
·
Example
from Customer Orders application
·
Using
Windows Forms application to display data
·
Updating
Data in Down-level Clients
·
Updating
Data Stores - An Overview
·
Making the
Process As Efficient As Possible
·
Caching
Data Updates
·
Maintaining
a Separate Cached Copy of the Data
·
Measuring
the Results and Providing Feedback
·
Controlling
Access to Protect the Data
·
Controlling
Concurrent Data Updates
·
Why
Concurrency Errors Arise
·
Concurrency
Issues in a Disconnected Application
·
Are we
Connected, Disconnected or Fully Disconnected?
·
Data Update
Techniques in .NET
·
Executing
Updates with a Command Object
·
The
ExecuteNonQuery Method
·
Returning
Single Values from a Stored Procedure
·
The DataSet
Update Feature
·
Using a
CommandBuilder to Create Command Objects
·
Using
Custom Stored Procedures to Update Data
·
Using
Transactions While Updating Data
·
Database
Transactions in Stored Procedures
·
Connection-Based
Transactions
·
Connection-Based
Transactions with a DataSet Update
·
Managing
Concurrency While Updating
·
Minimizing
Concurrency Errors
·
Detecting
Concurrency Errors
·
Checking
the Number of Rows Affected
·
Concurrency
Management in a DataSet Object
·
Data Update
Example for HTML 3.2 Clients
·
An Overview
of the Application
·
Displaying
the Order Details
·
Editing the
Order Details
·
Displaying
and Editing Orders
·
The Data
Access Tier
·
The
GetOrderDetails Function
·
The HTML
Page Declaration
·
The
ItemTemplate for the DataList
·
The
EditItemTemplate for the DataList
·
Storing the
Original Values for the Columns
·
The
FooterTemplate for the DataList
·
Displaying
a List of Orders
·
The
ShowOrders Routine
·
The
OnItemDataBound Event Handler
·
Showing and
Hiding Controls
·
Filling and
Selecting Items in a DropDownList Control
·
Switching
To and From Edit Mode
·
Handling
ItemCommand Events
·
Handling
the "New Order" Button
·
Setting the
Freight Cost
·
Inserting a
New Order
·
The Data
Access Tier InsertNewOrder Method
·
The ASP.NET
Page InsertNewOrder Method
·
Updating
the Order Details
·
The Data
Access Tier SingleRowOrderUpdate Method
·
The ASP.NET
Page DoItemUpdate Method
·
Parsing the
User's Values
·
Calling the
Data Access Tier Method
·
Deleting an
Order
·
The Data
Access Tier SingleRowOrderDelete Method
·
The ASP.NET
Page DoItemDelete Method
·
Displaying
and Editing the Order Contents
·
The HTML
Page Declaration
·
The Columns
for the DataGrid Control
·
Using Bound
Columns
·
Using
Command Columns
·
Displaying
a List of Order Lines
·
The
ShowOrderLines Routine
·
Displaying
the "Add Product" Controls
·
Displaying
the DataGrid and Order Total
·
Editing the
Order Lines
·
Adding a
New Order Line
·
Selecting
the New Order Line Row in the DataGrid
·
Updating
and Deleting Existing Order Lines
·
Data Update
Example for Mobile Devices
·
The
Application Design
·
Viewing the
Application
·
Viewing the
Application in a Cellular 'Phone
·
Summary
·
Updating
Remote Cached Data
·
Reviewing
the Architecture
·
Caching
Updates on the Client
·
Getting
Updates Back to the Server
·
Loading a
DataSet
·
Reading an
XML Document into a DataSet
·
An Example
of Reading an XML Document and Schema
·
Displaying
Current and Original Column Values
·
Displaying
the DataSet Contents
·
Populating
the Original Values
·
Validating
XML While Reading into a DataSet
·
Reading an
XML DiffGram into a DataSet
·
An Example
of Reading an XML Diffgram
·
Filling a
DataSet Using Code
·
An Example
of Building a DataSet using Code
·
Reading
Non-standard Data Formats
·
Filling a
DataSet Using the Fill Method
·
Executing
the Update Process
·
Providing
Feedback from the Update Process
·
What Do We
Want From The Process?
·
Can the
ADO.NET DataSet Do What We Want?
·
What Are
the Original Values?
·
The Update
Process In Detail
·
The Result
·
A Data
Update Process Example
·
How it
Works
·
The
Page_Load Event Handler
·
Specifying
the Primary Key for the Table
·
Editing
Some of the Row Values
·
Simulating
a Concurrent Edit
·
Marshaling
the Changes into a new DataSet
·
The
GetChanges Method
·
Updating
the Data Store
·
Handling
the RowUpdated Event
·
Fetching
the Underlying Values from the Database
·
Are We
Refreshing or Filling?
·
Merging the
Two DataSets
·
Extracting
Just the Error Rows
·
Using the
HasErrors property
·
Summarizing
the Process
·
The
AcceptChangesDuringFill Property
·
Summary
·
The
UpdateDataSet Component
·
Enabling
Tracing from Within a Component
·
Writing to
the Trace Object
·
The Common
Methods in our Component
·
Managing
IDENTITY Columns for Inserted Rows
·
Using GUIDs
Or Random Values for the Primary Key
·
Inserting IDENTITY
Values
·
Reading the
IDENTITY Value and Updating the Columns
·
Interacting
with the Update Method
·
The
Class-Level Variables
·
Handling
the RowUpdating Event
·
Accessing
the IDENTITY Column Value
·
The
OrdersInsert Stored Procedure
·
Handling
the RowUpdated Event
·
Using the
Status Property
·
Remote Row
Inserts Summary
·
The
UpdateAllOrderDetails Method
·
The
GetChanges Stage
·
The Update
Stage
·
Setting the
Update Event Handlers and Updating the Orders Table
·
Updating
the Order Details Rows
·
The Refresh
Stage
·
The Merge
Stage
·
Checking
for Errors
·
Creating
the Parameterized Command Objects
·
The Stored
Procedures for the Orders Table
·
The
OrdersDelete Stored Procedure
·
The
OrdersInsert Stored Procedure
·
The
GetOrdersCommand Function
·
The Stored
Procedures for the Order Details Table
·
The
OrderLinesInsert Stored Procedure
·
The
OrderLinesDelete Stored Procedure
·
The
GetOrderLinesCommand Function
·
Using the
UpdateDataSet Component
·
The
update-orders-demo.aspx Page
·
Filling the
DataSet
·
Editing
Some Row Values
·
Changing
the Underlying Database Values Concurrently
·
Performing
the Update
·
Displaying
The Update Errors
·
Deleting
The New Rows We Added
·
Viewing The
Trace Information
·
Returning
Only The Error Rows
·
Summary
·
Rich Client
Update Applications
·
An Overview
of the Application
·
The Process
in Outline
·
Checking
for Concurrency Errors
·
The
Middle-Tier ASP.NET Page
·
Getting the
Data from the Data Access Tier
·
Exposing
the Data to the Client
·
Loading the
Diffgrams on the Client
·
Loading the
Orders Data
·
Loading the
Shippers Data
·
Loading the
Products Data
·
Editing a
.NET DataSet Diffgram
·
Viewing the
Updated Diffgram
·
Displaying
the Contents of the DataSet
·
Displaying
the Diffgram Contents
·
The Updated
Diffgram Format
·
The Update
Rules for a DataSet Diffgram
·
Custom
Functions for Manipulating the Diffgram
·
Copying
Nodes to the <diffgr:before> Section
·
Using the
appendChild and cloneNode Methods
·
The
edit-orders.aspx Page Code and HTML
·
Creating
the List of Orders
·
The List of
Orders
·
Posting the
Updated Diffgram to the Server
·
The Button
to Save Changes to the Server
·
Sending the
Diffgram via XMLHTTP
·
Marshaling
Changes Rows
·
Displaying
Details of the Selected Order
·
The HTML
Controls to Display the Order Details
·
Specifying
the Tab Index and Shortcut Keys
·
The Code to
Display the Order Details
·
Detecting
NULL ShippedDate Values
·
Populating
the Controls on the Page
·
Getting and
Displaying a List of Order Lines
·
Calculating
and Displaying the Order Total
·
Creating
the List of Order Lines
·
The
Stylesheet for the Order Lines List
·
Creating
the Update Line and Delete Line Buttons
·
It's Time
to Talk Dirty
·
Handling
the Document Object OnUnload Event
·
Updating
the Orders Diffgram
·
Adding a
New Order
·
Setting
Default Values for New Order Rows
·
Validating
the Values for New Order Rows
·
Creating a
New Orders Node
·
Adding the
Child Nodes
·
The Name
and Address Details
·
Adding the
New Node to the Diffgram
·
Deleting an
Existing Order
·
Modifying
an Existing Order
·
Setting the
Updated RequiredDate Value
·
Setting the
Updated ShippedDate Value
·
Setting the
Rest of the Node Values
·
Updating an
Order Details Node
·
Validating
the User's Input
·
Calculating
the Line Total
·
The
updateOrder Function
·
Adding a
New Order Line
·
Setting the
Child Node Values
·
The
addOrderLine Function
·
Creating
the New Order Details Node
·
Deleting an
Existing Order Line
·
Modifying
an Existing Order Line
·
Summary
·
Reconciling
Update Errors
·
Reconciling
Update Errors in Overview
·
A Summary
of the Process
·
The Error
Reporting and Reconciliation Process
·
Editing the
DataSet After Update Errors Have Occured
·
Displaying
the Update Errors for Reconciliation
·
Following a
Successful Update
·
Displaying
Trace Information
·
The
Reconciliation Process in Detail
·
The
reconcile-changes.aspx Page
·
The HTML
Form and Hyperlinks
·
Collecting
the Posted Values
·
Loading the
Edited Diffgram
·
Working
Round the "Empty Diffgram" Issue
·
Loading the
DataSet
·
Removing
the Extra Calculated Column
·
Working
Round the "Extra Rows" Issue
·
Editing the
DataSet Contents for a PostBack
·
Checking
for Error Rows Before Attempting the Update
·
Updating
the Database from the DataSet
·
Checking
Errors After the Update Process
·
Getting a
Diffgram as a String from a DataSet
·
Displaying
the Errors and Reconciliation Options
·
The Display
for Modified Rows
·
The Display
for Added Rows
·
The Display
for Deleted Rows
·
The Code
for the GetDisplayString Function
·
Building
the HTML Table
·
Displaying
the Proposed and Existing Values
·
Displaying
the HTML Checkbox Controls
·
Editing the
Values in the DataSet Tables
·
The Process
in Outline
·
The Code
for the EditTable Routine
·
Removing Added
and Deleted Rows
·
Editing
Modified Rows
·
And Round
We Go Again
·
Rich Client
Updates Via a Web Service
·
The Issues
and Workarounds
·
The
Middle-Tier Web Service Component
·
Loading the
Diffgram into a DataSet
·
Updating
the Database
·
The Web
Service Client Application
·
Loading the
Data Via the Web Service
·
Handling
the Web Service Behavior's DataLoaded Event
·
Handling
the MSXML onreadystatechange Event
·
Filling the
Shippers and Products Drop-down Lists
·
Extracting
the Diffgram
·
Sending
Data Back to the Server Via the Web Service
·
Modifying
the Diffgram
·
HTML-Encoding
the String
·
Calling the
Web Service UpdateAllOrders Method
·
Handling
the Returned "Errors" DataSet
·
A Diffgram
with Row Errors
·
Counting
and Displaying the Row Errors
·
If There
Are No Errors
·
Showing the
Original Row Values
·
A Few Other
Differences
·
Other Rich
Client Update Techniques
·
Rich Client
Updates Using Delimited Data
·
Some
Possible Solutions
·
Setting the
Current and Original Row Values
·
Marshalling
the Changed Rows
·
Caching the
Original Rows on the Server
·
Hypertext
Application Updates
·
Some
Possible Solutions
·
Marshalling
the Changed Rows
·
Install the
.NET Frameworks Instead
·
Summary
·
Examples
from Customer Orders application
·
Using a
Windows Forms application to update source data