Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Microsoft .NET Framework Data Access Ramesh Theivendran John Powell Borland Software Corporation Agenda Database Connectivity in .NET Borland Data Provider (BDP) Resolving .NET DataSet Data Remoting in .NET Message Queues Database Connectivity .NET Data Access - BDP, SQLClient, OLEDB, ODBC, ODP.NET Data Manipulation - .NET DataSet Data Remoting - .NET Remoting - ASP.NET Web Services (Stateless) - Message Queues (Asynchronous) Data Access Relational data access • • • ADO.NET (.NET) ODBC, OLEDB, ADO, BDE, dbExpress (Win32) JDBC (Java) Object data access • • • ECO, ObjectSpaces (.NET) BOLD, MTS (Win32) JDO, EJB (Java) OLAP, Data Mining • • • • MDX (MultiDimensional Expressions) DSO (Decision Support Objects) PivotTable Services XML/A ADO.NET Disconnected, n-tier data access model with good XML and XSD support. Core Components: – .NET DataSet – .NET Data Provider DataSnap vs ADO.NET dbExpress .NET Data Provider SQLConnection SQLCommand SQLCursor IDbConnection IDbCommand IDataReader DataSnap vs ADO.NET DataSnap .NET DataSet ClientDataset DataProvider DataSet IDbDataAdapter Better representation of relational data Tighter XML and XSD support Resolving to be handled by the developer XML for data remoting DataSet methods Update()/AcceptChanges() GetChanges() RejectChanges() ReadXml() ReadXmlSchema() WriteXml() WriteXmlSchema() GetXml() GetXmlSchema() Clear() ApplyUpdates() Delta CancelUpdates() LoadFromFile() SaveToFile() Data XMLDataSet EmptyDataSet() .NET Data Provider Architecture D O T N E T .NET Client OLEDB Managed BDP Managed SQL Server Managed COM Interop layer C OleDb O Provider M OleDb Provider TDS GDS32 MSSQL IB OCI DB client RDBMS ORACLE BDP Components Data Explorer BDP Designers ISQLConnection ISQLCommand ISQLCursor ISQLMetaData ISQLResolver ISQLSchemaCreate ISQLDataSource bdpConnections.xml DB client wrapper DB bdpDatasources.xml BDP for .NET Namespace Borland.Data.Provider – BdpConnection – BdpTransaction – BdpCommand – BdpParameter, BdpParameterCollection – BdpDataReader – BdpDataAdapter – BdpException – BdpError, BdpErrorCollection – BdpCommandBuilder BDP for .NET Namespace Borland.Data.Common – ISQLConnection – ISQLCommand – ISQLCusor – BdpType Namespace Borland.Data.Schema – ISQLDataSource – ISQLMetaData – ISQLResolver – ISQLSchemaCreate Namespace Borland.Data.Design BdpConnection Implements IDbConnection Delegates to ISQLConnection implementation Properties: ConnectionString ConnectionOptions State Methods: Open(),Close() CreateCommand() BeginTransaction() ChangeDatabase() GetMetaData(), GetResolver() BdpCommand Implements IDbCommand Delegates to ISQLCommand implementation Properties: Connection CommandType CommandText Parameters, ParameterCount Transaction CommandOptions Methods: Prepare(), ExecuteNonQuery(), ExecuteReader(), ExecuteScalar(), Close() BdpDataReader Implements IDataReader, IDataRecord Delegates to ISQLCursor Implementation Properties: IsClosed RecordsAffected FieldCount Depth Methods: Read(), NextResult() GetShemaTable(), GetName(), GetFieldType(), GetDataTypeName(), GetOrdinal(),GetDataType(), GetDataSubType() IsDBNull(), GetValues(), GetInt16(), GetInt32()….Close() BdpTransaction Implements IDbTransaction Delegates to ISQLConnection implementation Properties: Connection IsolationLevel Methods: Commit() Rollback() Sample code // Create a new Connection BdpConnection Conn = new BdpConnection(); String ConnStr = " provider=Interbase; assembly=Borland.Data.Interbase, Version=2.0.0.0, Culture=neutral, PublicKeyToken=91d62ebb5b0d1b1b; database=c:\\IB71\\examples\\database\\employee.gdb; username=sysdba;password=masterkey"; Conn.ConnectionString = ConnStr; //Establish connection to the database Conn.Open(); BdpTransaction Trans = Conn.BeginTransaction(); BdpCommand Comm = Conn.CreateCommand(); Comm.Connection = Conn; Comm.Transaction = Trans; Comm.CommandText = " SELECT * FROM ADDRESSBOOK"; BdpDataReader Reader = Comm.ExecuteReader(); Sample code if ( Reader != null ) { for (Int32 index = 0; index < Reader.FieldCount; index++) Console.WriteLine("Column Name = " + Reader.GetName(index)); while (Reader.Read()) { for (Int32 index = 0; index < Reader.FieldCount; index++) { //Assuming CHAR or VARCHAR columns Console.WriteLine(Reader.GetString(index)); } } Reader.Close(); } Trans.Commit(); Command.Close(); Conn.Close(); BdpParameter BdpParameter: Implements IDbDataParameter, IDataParameter Properties: ParameterName DbType BdpType BdpSubType Direction Value Precision, Scale, MaxPrecision Demos 1. Retrieving data using BdpDataReader 2. Inserting records using runtime Parameter binding BdpDataAdapter Extends DbDataAdapter and Implements IDbDataAdapter Properties: SelectCommand, DeleteCommand, InsertCommand, UpdateCommand DataSet Active StartRecord MaxRecords TableMappings Methods: Fill(),FillSchema() Update(), AutoUpdate() GetFillParameters() BdpCommandBuilder Properties: DataAdapter QuotePrefix QuoteSuffix ReadOnly ExcludeFilter Methods: GetInsertCommand() GetDeleteCommand() GetUpdateCommand() RefreshSchema() Demos 3. Provide and resolve data using BdpDataAdapter 4. SQL Generation using the BdpCommandBuilder 5. Calling Stored Procedures 6. Blob access 7. BDP and dbWeb MetaData Services MetaData retrieval Schema Creation Create Table,View,Indices Alter Table Drop Table, View, Indices Data Migration BdpCopyTable component SourceCommand Destination DestinationTable Why BDP.NET Open Architecture: Lets you add support to more DB’s easily Portable code : Write ones and connect to all DB’s Logical Data types mapped to .NET Native types Consistent data type mapping across DB’s Unlike OLEDB .NET Provider need not go through a COM interop layer. Support for Database specific features Supports metadata, schema creation and data migration services Cross platform availability (may be) BDP supported RDBMS INTERBASE 7, 7.5 ORACLE 9i,10g DB2 V 7.2, 8.x MSSQL 2000 / MSDE MSAccess Sybase 12.5 .NET DataStore (EBU) and more to follow… Demos 8. Metadata retrieval 9. Schema Creation 10. Data Migration - BdpCopyTable .NET DataSet Resolving DataHub and DataSync Provide and resolve data from multiple data source, master-detail Generates optimal SQL for resolving to BDP data sources Supports Live Data at design-time from any .NET data provider DataHub Properties: Active DataSet, DataPort Methods: ApplyChanges() Refresh() DataSync CommitBehavior .NET DataSet Resolving DataTables DataSet Interbase BDP DataHub DataSync BDP MSSQL SQLClient ODP.NET Oracle Demos 11. 2-tier DataHub and DataSync 12. Master-Detail resolving .NET Remoting Interprocess communication between application domains To Remote: 1. A remotable object 2. A host app domain to host the remote object and listen for requests 3. A client app domain that makes request for the object .NET Remoting Remotable Objects Marshal-By-Value ISerializable SerializableAttribute MarshalByValueComponent State of the object copied Marshal-By-Ref MarshalByRefObject State of the object stays in the app domain it was created .NET Remoting Client Process Server Process Proxy Remote Object Formatter Formatter Client ChannelSink TransportSink Server ChannelSink TransportSink .NET Remoting MBR Activation model Server activated Objects (SAO) Server object created only on the first method call Only a proxy is created when the client requests to create Default constructor only allowed Singleton One object servers all clients Lifetime controlled by lease Maintain state between clients SingleCall Separate object for each request Does not participate in lifetime lease No state maintained, best choice for load balancing .NET Remoting MBR Activation model Client activated Objects (CAO) Created on the server upon request to create a new object Non Default constructors can be used ObjRef is returned and a proxy is created on the client Can maintain state between client method calls Lifetime controlled by lease Published Objects Publish an already created object on the server Behaves as a Singleton SAO afterwards .NET Remoting MBR Lifetime Lease manager and Sponsors keep MBR alive Every app domain has a lease manager Lease manager periodically checks for lease expiry Infinite lifetime By overriding MarshalByRefObject.InitializeLifetimeService public override object InitializeLifetimeService() { return null; } Demos 13. Simple DataSet remoting DataSet Remoting RemoteServer, RemoteConnection public interface IDataService { String[] GetProviderList(); IDataProvider GetDataProvider(String ProviderName); } public interface IDataProvider { DataSet GetData(); Int32 SaveData(DataSet ds); DataProviderCollection Providers { get; set;} } RemoteTracker: ITrackingHandler RemoteClientSponsor DataSet Remoting DataSet RemoteServer (SAO) Interbase DataHub DataSync (CAO) MSSQL RemoteConnection DataSync (CAO) Oracle Demos 13. Multi-tier using RemoteConnection and RemoteServer Remoting vs Web Services Stateless objects Yes Yes Singleton objects Yes No Statefull objects Yes No TCP sockets for communication Yes No HTTP for communication Yes Yes Hosting in IIS Yes Yes Custom Hosting Yes No SOAP serialization Yes Yes Binary serialization Yes No Interoperability No Yes Message Queues MOM: Asynchronous distributed applications Reliable, offline access Robust, guaranteed delivery Priority messaging Transactional messages Secure Message Queues Server Client1 Client2 1 Message Queue Client3 Ack.Queue Server2 Message Queues System.Messaging Namespace MessageQueue Message MessageQueueEnumerator MessageEnumerator System.Messaging.MessageQueue Create(),Delete(),Purge() Exists() Path Send() Receive(), BeginReceive(), EndReceive() Peek(), BeginPeek(), EndPeek() MessageQueue Identifying a Queue: Path - Uniquely identified by Computer and Queue name - Online queues FormatName - Unique identifier generated by MSMQ - Online and Offline queues Label - Name given by the queue administrator - Useful when Message Queue are moved MessageQueue Queue types: Private Queue – Local to the machine MachineName\Private$\QueueName FORMATNAME:PRIVATE=MachineGUID\Queue# Label:QueueName Public Queue – Local or any computer you have rights MachineName\QueueName FORMATNAME:PUBLIC=QueueGUID Journal Queue - Save copies MachineName\QueueName\Journal$ FORMATNAME:PUBLIC=QueueGUID;JOURNAL Dead-letter Queue, Transactional dead-letter Queue Demo 14. Send and Receive simple message 15. Priority messages Message Acknowledgement Two types of acknowledgements: a. Message reached destination Queue b. Message retrieved from the destination Queue Positive or Negative acknowledgement Requesting for an Acknowledgement: AdministrationQueue Property AcknowledgeType Property None FullReachQueue FullReceiveQueue NegativeReceive PostiveArrive, PostiveReceive Ack. Messages have no Body, only a header with Correlation ID Journal Queues System Queue - Allow saving copies of messages Read-only for applications Messages are not removed as they are received Have Maximum quota and don’t report errors One Journal Queue per message Queue MessageQueue.UseJournalQueue Property Enable storage for any message received by the Queue One System Journal Queue per machine Message.UseJournalQueue Property This message, when sent will be recorded on the system journal MessageQueue.MaximumJournalSize Demo 16. Message with Acknowledgement 17. Journal messages 18. Purge Journal messages Receiving Messages Formatter Property IMessageFormatter XMLMessageFormatter BinaryMessageFormatter ActiveXMessageFormatter DenySharedReceive Property Close() will free it for others MessageReadPropertyFilter Property Enables or disable what property you want to receive Peek(), Receive() Retrieving Messages Static and Dynamic retrieval Messages: MessageQueue.GetAllMessage() MessageQueue.GetEnumerator() Static and Dynamic retrieval Message Queues: MessageQueue.GetPrivateQueuesByMachine() MessageQueue.GetMessgeQueueEnumerator() Transactional Queue All messages are delivered once and in order. Two types: Internal Transactions Between one or more Message queues External Transactions Message Queues and other resources through DTC MessageQueueTransaction Begin() Commit() Rollback() Demo 19. MessageQueue and Message Retrieval 20. Transactional Queues Reliable MOM MSMQ Supports Acknowledgements,Journaling, Recovery, Transactions, Asynchronous Receive/Peek, Priority “Every DAD needs MOM” “Real DAD needs no MOM” “A DAD needs MOM” Questions? [email protected]