Microsoft net framework data access
This presentation is the property of its rightful owner.
Sponsored Links
1 / 56

Microsoft .NET Framework Data Access PowerPoint PPT Presentation


  • 114 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

Microsoft .NET Framework Data Access

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Microsoft net framework data access

Microsoft .NET Framework Data Access

Ramesh Theivendran

John Powell

Borland Software Corporation


Agenda

Agenda

  • Database Connectivity in .NET

  • Borland Data Provider (BDP)

  • Resolving .NET DataSet

  • Data Remoting in .NET

  • Message Queues


Database connectivity net

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

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

    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

    DataSnap vs ADO.NET


    Datasnap vs ado net1

    DataSnap vs ADO.NET

    • Better representation of relational data

    • Tighter XML and XSD support

    • Resolving to be handled by the developer

    • XML for data remoting


    Dataset methods

    DataSet methods

    ApplyUpdates()

    Delta

    CancelUpdates()

    LoadFromFile()

    SaveToFile()

    Data

    XMLDataSet

    EmptyDataSet()

    • Update()/AcceptChanges()

    • GetChanges()

    • RejectChanges()

    • ReadXml()

    • ReadXmlSchema()

    • WriteXml()

    • WriteXmlSchema()

    • GetXml()

    • GetXmlSchema()

    • Clear()


    Net data provider architecture

    .NETData Provider Architecture

    .NET Client

    D

    O

    T

    N

    E

    T

    OLEDB

    Managed

    BDP

    Managed

    SQL Server

    Managed

    COM Interop layer

    C

    O

    M

    OleDb

    Provider

    OleDb

    Provider

    TDS

    GDS32

    OCI

    DB client

    MSSQL

    IB

    ORACLE

    RDBMS


    Microsoft framework data access

    BDP Components

    Data Explorer

    BDP Designers

    ISQLConnection

    ISQLCommand

    ISQLCursor

    ISQLMetaData

    ISQLResolver

    ISQLSchemaCreate

    ISQLDataSource

    bdpDatasources.xml

    bdpConnections.xml

    DB client wrapper

    DB


    Bdp for net

    BDP for .NET

    • Namespace Borland.Data.Provider

      • BdpConnection

      • BdpTransaction

      • BdpCommand

      • BdpParameter, BdpParameterCollection

      • BdpDataReader

      • BdpDataAdapter

      • BdpException

      • BdpError, BdpErrorCollection

      • BdpCommandBuilder


    Bdp for net1

    BDP for .NET

    • Namespace Borland.Data.Common

      • ISQLConnection

      • ISQLCommand

      • ISQLCusor

      • BdpType

    • Namespace Borland.Data.Schema

      • ISQLDataSource

      • ISQLMetaData

      • ISQLResolver

      • ISQLSchemaCreate

    • Namespace Borland.Data.Design


    Bdpconnection

    BdpConnection

    • Implements IDbConnection

    • Delegates to ISQLConnection implementation

    • Properties:

    • ConnectionString

    • ConnectionOptions

    • State

    • Methods:

    • Open(),Close()

    • CreateCommand()

    • BeginTransaction()

    • ChangeDatabase()

    • GetMetaData(), GetResolver()


    Bdpcommand

    BdpCommand

    • Implements IDbCommand

    • Delegates to ISQLCommand implementation

    • Properties:

    • Connection

    • CommandType

    • CommandText

    • Parameters, ParameterCount

    • Transaction

    • CommandOptions

    • Methods:

    • Prepare(), ExecuteNonQuery(),

    • ExecuteReader(), ExecuteScalar(), Close()


    Bdpdatareader

    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

    BdpTransaction

    • Implements IDbTransaction

    • Delegates to ISQLConnection implementation

    • Properties:

    • Connection

    • IsolationLevel

    • Methods:

    • Commit()

    • Rollback()


    Sample code

    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 code1

    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

    • BdpParameter: Implements IDbDataParameter, IDataParameter

    • Properties:

    • ParameterName

    • DbType

    • BdpType

    • BdpSubType

    • Direction

    • Value

    • Precision, Scale, MaxPrecision


    Demos

    Demos

    • Retrieving data using BdpDataReader

    • Inserting records using runtime Parameter binding


    Bdpdataadapter

    BdpDataAdapter

    • Extends DbDataAdapter and Implements IDbDataAdapter

    • Properties:

    • SelectCommand, DeleteCommand, InsertCommand, UpdateCommand

    • DataSet

    • Active

    • StartRecord

    • MaxRecords

    • TableMappings

    • Methods:

    • Fill(),FillSchema()

    • Update(), AutoUpdate()

    • GetFillParameters()


    Bdpcommandbuilder

    BdpCommandBuilder

    • Properties:

    • DataAdapter

    • QuotePrefix

    • QuoteSuffix

    • ReadOnly

    • ExcludeFilter

    • Methods:

    • GetInsertCommand()

    • GetDeleteCommand()

    • GetUpdateCommand()

    • RefreshSchema()


    Demos1

    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 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

    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

    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…


    Demos2

    Demos

    • 8. Metadata retrieval

    • 9. Schema Creation

    • 10. Data Migration - BdpCopyTable


    Net dataset resolving

    .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 resolving1

    .NET DataSet Resolving

    DataSet

    DataTables

    Interbase

    BDP

    BDP

    DataSync

    DataHub

    MSSQL

    SQLClient

    Oracle

    ODP.NET


    Demos3

    Demos

    • 11. 2-tier DataHub and DataSync

    • 12. Master-Detail resolving


    Net remoting

    .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 remoting1

    .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 remoting2

    .NET Remoting

    ClientProcess

    Server Process

    Proxy

    Remote Object

    Formatter

    Formatter

    Server ChannelSink

    Client ChannelSink

    TransportSink

    TransportSink


    Net remoting3

    .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 clientsSingleCall

    • Separate object for each request

    • Does not participate in lifetime lease

    • No state maintained, best choice for load balancing


    Net remoting4

    .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 remoting5

    .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;

    • }


    Demos4

    Demos

    • 13. Simple DataSet remoting


    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 remoting1

    DataSet Remoting

    DataSet

    Interbase

    RemoteServer (SAO)

    DataHub

    DataSync (CAO)

    MSSQL

    RemoteConnection

    Oracle

    DataSync (CAO)


    Demos5

    Demos

    • 13. Multi-tier using RemoteConnection and RemoteServer


    Remoting vs web services

    Remoting vs Web Services


    Message queues

    Message Queues

    • MOM: Asynchronous distributed applications

    • Reliable, offline access

    • Robust, guaranteed delivery

    • Priority messaging

    • Transactional messages

    • Secure


    Message queues1

    Message Queues

    Server1

    Client1

    Message Queue

    Server2

    Client2

    Client3

    Ack.Queue


    Message queues2

    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

    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


    Messagequeue1

    MessageQueue

    • Queue types:

    • Private Queue – Local to the machine

    • MachineName\Private$\QueueNameFORMATNAME: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


    Microsoft framework data access

    Demo

    • 14. Send and Receive simple message

    • 15. Priority messages


    Message acknowledgement

    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

    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


    Microsoft framework data access

    Demo

    • 16. Message with Acknowledgement

    • 17. Journal messages

    • 18. Purge Journal messages


    Receiving 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

    Retrieving Messages

    • Static and Dynamic retrieval Messages:

    • MessageQueue.GetAllMessage()

    • MessageQueue.GetEnumerator()

    • Static and Dynamic retrieval Message Queues:

    • MessageQueue.GetPrivateQueuesByMachine()

    • MessageQueue.GetMessgeQueueEnumerator()


    Transactional queue

    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()


    Microsoft framework data access

    Demo

    • 19. MessageQueue and Message Retrieval

    • 20. Transactional Queues


    Reliable mom

    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

    Questions?

    • [email protected]


  • Login