Transcript PowerPoint

.NET Mobile Application Development
Data in Distributed Systems
Accessing Data with .NET
Introduction
 In this session we will consider
> The use of databases in mobile and distributed applications
> Connected, client-server database access
- .NET connected data access features
> Disconnected database architecture
- ADO .NET and disconnected data access features
> Distributed data access from mobile and disconnected clients
- SQL Server CE
Database Terminology
 Relational database
> data and relations between them organised in tables. A table is collection of
rows or records. Each row in a table contains the same fields.
 Query
> formal request to a database for information or updates to information
 Stored procedure
> set of SQL commands that can be stored in the server
> gives improved performance as less information needs to be sent between
the server and the client
 Structured Query Language (SQL)
> industry-standard language for creating, updating and, querying relational
databases
Databases in Distributed Systems
 Distributed applications often rely on databases for
> persistent storage
> synchronizing state and ensuring consistency between multiple clients
 Databases
> normally reside on a server
> accessed by clients via the network
 Clients interact with databases using explicit SQL queries
> active connection to database required for each query
Distributed Data Management
 Three key aspects of managing data in distributed
applications
> Caching
- keeping local copies of required data eliminates need for continuous
network connections
> Replication
- propagating changes in cached data back to main data store
- periodically refreshing cached data
> Conflict Resolution
- multiple clients operate simultaneously
- updates of a data item by several clients => conflict
- conflict resolution mechanisms needed
Database Access Methods
 Traditional applications follow a layered model
Application
front end
Business
Logic
Database
Computer A
Computer B
Computer C
 Business logic/client layers interact with the database in a
connected client/server manner
> connection to database opened at start of session and maintained until
session completes
> SQL queries sent individually or in batches to database when required by
application
- application cannot operate if network connection not present
- not ideally suited to mobile / intermittently connected clients
Disconnected Database
Access
 In a disconnected data architecture client
> opens temporary connection to database; required data cached locally and
connection closed
> operates using the cached data
> reconnects to database when connection available and merges any
changes from the locally cached data
 Guaranteed network connection not required for

application to function
Ideally suited to
> mobile device applications
> intermittently connected devices
> clients with high network latencies (e.g. Internet)
.NET Data Access
Features
 .NET supports
> Connected and disconnected data architectures
> Microsoft SQL Server data sources interaction from desktop and mobile
platforms
> Interaction with other database servers through ODBC and OLE from
desktop platforms only
 .NET data access classes contained in
> System.Data - Common data access types
> System.Data.SqlClient - Types used for interacting with MS SQL Server
> System.Data.Odbc - Types used for ODBC database interaction
> System.Data.OleDb - Types used for OLE database interaction
.NET Connected Data
Objects
 Connection object (e.g. SqlConnection)
> Represents connection to data source; used by other objects to interact with data
source
 Command object (e.g. OdbcCommand)
> Represents queries to database or calls to stored procedures
 DataReader object (e.g. OleDbDataReader)
> Allows iteration through rows returned from a query
 Transaction object (e.g. SqlTransaction)
> Provides transactional support
 Parameter object (e.g. SqlParameter)
> Represents parameters to queries or stored procedures
 DataAdapter object (e.g. SqlDataAdapter)
> Bridge between database and the disconnected data objects of ADO .NET
> Used in passing data between ADO .NET objects and data source
Connected Data Access
Example
using System.Data.SqlClient;
...
string connStr = "Initial Catalog=Northwind;Data
Source=localhost;Integrated Security=SSPI;";
string insertQuery = "INSERT INTO Customers (CustomerID,
CompanyName) Values('NWIND', 'Northwind Traders')";
SqlConnection conDB = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand(insertQuery);
cmd.Connection = conDB;
conDB.Open();
cmd.ExecuteNonQuery();
conDB.Close();
ADO .NET Disconnected Data
Objects
 DataTable object
> Stores data as collection of rows and columns
 DataColumn object
> Stores information about structure of a DataTable column
 Constraint object
> Enables constraints to be placed on data stored in a DataTable
 DataRow object
> Contains single record from a DataTable
 DataSet object
> Most important ADO .NET object
> Container for multiple DataTables and DataRelations
 DataRelation object
> Defines relationships between DataTables in a DataSet
 DataView object
> Provides sorting and filtering of data in a DataSet
> Enables binding of data to WinForms controls
Using ADO .NET Objects
 ADO .NET objects can
> be created and manipulated independently of a data source
> be constructed to mirror the relational structure of a data source
 Using a DataAdapter object, a DataSet can
> be filled with data from a data source
> merge changed values back in to a data source
> become an offline cache of the data required by an application
- Allows application to operate even when network connection is not
present
Disconnected Data Access
Example
using System.Data;
using System.Data.SqlClient;
...
string connStr = "Initial Catalog=Northwind;Data Source=localhost; Integrated
Security=SSPI;";
SqlConnection conDB = new SqlConnection(connStr);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand("SELECT * FROM Suppliers", conDB);
conDB.Open();
DataSet ds = new DataSet("Customers");
adapter.Fill(ds);
conDB.Close();
string criteria = "Surname = Smith";
DataRow[] matchRows = ds.Tables["Customers"].Select(criteria);
foreach (DataRow row in matchRows) {
string forename = row["Forename"];
string forename = row["Surname"];
Console.WriteLine("Customer "+forename+" "+surname);
}
Databases and Mobile
Devices
 All the preceding techniques can be used with
mobile devices and Compact Framework
 Mobile devices support three other techniques
> SQL Server CE
- SQL Server database engine for WinCE devices
> SQL Server CE Remote Data Access (RDA)
- enables two-way transfer of data between SQL CE database and
networked SQL Server database
> SQL Server Merge Replication
- more powerful mechanism for two-way data transfer between SQL CE
database and networked SQL Server database with automatic conflict
resolution
SQL Server CE
 Lightweight version of MS SQL Server for Windows CE devices
 Supports
> creation, querying, updating and deleting of databases on device
> useful for local caching of data from network databases to enable offline operation
 Supports databases up to 2GB but size limited by available memory
 Accessible from Compact Framework using classes in
System.Data.SQlServerCe namespace
>
>
>
>
>
SqlCeEngine - used to creates new databases
SqlCeConnection
SqlCeCommand
SqlCeDataAdapter
SqlCeDataReader
 Use is similar to standard SQL client
SqlCE Remote Data
Access
 Based around SqlCeRemoteDataAccess class
 Two primary methods
> Pull()
- retrieves data from networked SQL server and copies it to table in local
SQL CE database
- pulled records not locked on networked database
> Push()
- writes modifications back to networked SQL server based on data in
local SQL CE database table
- overwrites changes made by other users to networked database
(optimistic concurrency control)
- may result in lost updates
 Networked SQL Server requires IIS Web server and
specific configuration for RDA
SqlCe Merge Replication
 Extension of SQL Server Merge Replication to
mobile devices
 Three databases used
> Publisher - makes data available for replication
> Distributor - manages replication and updates
> Subscriber - receives/uses replicated data (on CE device)
 Configurable resolvers used to automatically deal
with multiple updates without loss of data
 Merge replication vs Remote Data Access
> requires much more configuration than RDA
> much easier to use – automatically deals with conflicts
Summary
 In this session we have discussed
> Databases in distributed applications
> Connected database access with .NET
> ADO .NET and the disconnected database architecture
> Distributed data access from mobile and disconnected clients
 The accompanying practical exercises demonstrate
> Use of ADO .NET classes in manipulating data
> Using ADO .NET to retrieve data from a networked database using Web
services
Reading and Resources
Reading



Thomas Connolly & Carolyn Begg, Database Systems: A Practical
Approach to Design, Implementation, and Management, AddisonWesley, 2002
David Sceppa, Microsoft ADO .NET Core Reference, Microsoft
Press, 2002
Andy Wigley & Stephen Wheelwright, Microsoft Compact Framework
Core Reference, Microsoft Press, 2003
Chapters 13 – 17, pp 429 – 586
Resources

Microsoft Developer Network, SQL Server Documentation,
http://msdn.microsoft.com/library/default.asp?url=/nhp/default.asp?contentid=
28000409