Oracle & SQL Server in a.NET World Silvano Coriani ( @microsoft.com Developer Evangelist...

Click here to load reader

  • date post

    01-May-2015
  • Category

    Documents

  • view

    220
  • download

    4

Embed Size (px)

Transcript of Oracle & SQL Server in a.NET World Silvano Coriani ( @microsoft.com Developer Evangelist...

  • Slide 1
  • Oracle & SQL Server in a.NET World Silvano Coriani (silvano.coriani@microsoft.com Developer Evangelist Microsoft Silvano Coriani (silvano.coriani@microsoft.com Developer Evangelist Microsoft
  • Slide 2
  • Agenda Il miglior RDBMS per.NET Microsoft SQL Server 2005 Ok, okviviamo in un mondo meticcio Oracle 8i/9i/10g (10.1.0,10.2.0) IBM DB2 UDB 8.2.2.NET Development Problemi simili, ambienti e soluzioni diverse Best practices e dintorni Il miglior RDBMS per.NET Microsoft SQL Server 2005 Ok, okviviamo in un mondo meticcio Oracle 8i/9i/10g (10.1.0,10.2.0) IBM DB2 UDB 8.2.2.NET Development Problemi simili, ambienti e soluzioni diverse Best practices e dintorni
  • Slide 3
  • RDBMS su Windows Intendiamoci Microsoft SQL Server 2005 il miglior RDBMS su Windows Miglior TPC-C su hw commerciale (x86-IA64) Migliori risultati su 2-4-6 processori (x86) Ha il Query Processor pi evoluto Miglior integrazione con la piattaforma di sviluppo Semplicit di gestione Auto-everything da sempre News con la versione 2005 Uno Storage Engine allaltezza di qualsiasi confronto Nuovi servizi integrati come il Broker, Notifications, ecc. Intendiamoci Microsoft SQL Server 2005 il miglior RDBMS su Windows Miglior TPC-C su hw commerciale (x86-IA64) Migliori risultati su 2-4-6 processori (x86) Ha il Query Processor pi evoluto Miglior integrazione con la piattaforma di sviluppo Semplicit di gestione Auto-everything da sempre News con la versione 2005 Uno Storage Engine allaltezza di qualsiasi confronto Nuovi servizi integrati come il Broker, Notifications, ecc.
  • Slide 4
  • RDBMS su Windows Ma non siamo soli Oracle, dalla 8i alla 10g (10.2.0) Pro (cosa gli invidio) La reputazione e il know how Lo storage engine Contro Query Proc solido ma non particolarmente smart Costi licenze comunque elevati, e componenti aggiuntive a pagamento Complessit di gestione (capacity planning, installazione, tuning, amministrazione) IBM DB 2 Pro Query proc decisamente interessante Il TPC-C benchmark su AIX e POWER5 Contro Versioni differenti sulle diverse piattaforme Funzionalit, comportamenti, modelli di programmazione Strumenti di gestione incoerenti Servizi poco integrati tra di loro Ma non siamo soli Oracle, dalla 8i alla 10g (10.2.0) Pro (cosa gli invidio) La reputazione e il know how Lo storage engine Contro Query Proc solido ma non particolarmente smart Costi licenze comunque elevati, e componenti aggiuntive a pagamento Complessit di gestione (capacity planning, installazione, tuning, amministrazione) IBM DB 2 Pro Query proc decisamente interessante Il TPC-C benchmark su AIX e POWER5 Contro Versioni differenti sulle diverse piattaforme Funzionalit, comportamenti, modelli di programmazione Strumenti di gestione incoerenti Servizi poco integrati tra di loro
  • Slide 5
  • RDBMS su Windows Ma in Oracle si fa. come faccio in SQL Server? Nello Storage Engine di SQL Server 2005 ci sono novit per i DEV che utilizzano normalmente Oracle Snapshot Isolation (e Read Committed S.I.) Data & index partitioning stato aggiunta la funzione ROW_NUMBER() per numerare i record di un resultset (evvai con le paginazioni!) Altre tecniche di programmazione tipiche del mondo Oracle possono essere facilmente imitate con SQL Server Ad esempio le famigerate Sequence Ma in Oracle si fa. come faccio in SQL Server? Nello Storage Engine di SQL Server 2005 ci sono novit per i DEV che utilizzano normalmente Oracle Snapshot Isolation (e Read Committed S.I.) Data & index partitioning stato aggiunta la funzione ROW_NUMBER() per numerare i record di un resultset (evvai con le paginazioni!) Altre tecniche di programmazione tipiche del mondo Oracle possono essere facilmente imitate con SQL Server Ad esempio le famigerate Sequence
  • Slide 6
  • Estendere il DBMS dallinterno con.NET SQL Server 2005 integra il CLR per estendere il DBMS Sia Oracle che DB2 consentono lutilizzo di estendere il motore relazionale con il codice managed, in modalit diverse Utilizzano la v1.1 del CLR Integrazione molto diversa rispetto a SQL Server 2005 Semplice hosting attraverso le interfacce COM del CLR Nessun utilizzo degli host attributes della v2.0 per garantire la stabilit dellhoster (utilizzo delle risorse, gestione eccezzioni, ecc.) SQL Server 2005 integra il CLR per estendere il DBMS Sia Oracle che DB2 consentono lutilizzo di estendere il motore relazionale con il codice managed, in modalit diverse Utilizzano la v1.1 del CLR Integrazione molto diversa rispetto a SQL Server 2005 Semplice hosting attraverso le interfacce COM del CLR Nessun utilizzo degli host attributes della v2.0 per garantire la stabilit dellhoster (utilizzo delle risorse, gestione eccezzioni, ecc.) Es. Oracle CLR Host
  • Slide 7
  • Windows Development Environment Support Visual Studio Environment IIS Oracle Developer Tools for VS.NET C++, C#, VB.NET Application Develop ODP.NET Deploy Oracle DB Extensions For.NET IIS (ASP ASP.NET) MTS/ COM+ Application Deploy Oracle Services for MTS Database Development
  • Slide 8
  • Sviluppare applicazioni client con.NET Strumenti.NET Data Providers di Microsoft, Oracle e IBM Oracle Developer Tools for Visual Studio.NET IBM DB2 Tools for Visual Studio.NET Reusable code Enterprise Library Data Access Application Blocks Oracle DB2 Problemi aperti Differenti dialetti SQL Ma standard ANSI-SQL 92 pi o meno rispettato Differenti funzionalit Sequence, Locking model, Stored Proc, supporto XML, ecc. ecc. Strumenti.NET Data Providers di Microsoft, Oracle e IBM Oracle Developer Tools for Visual Studio.NET IBM DB2 Tools for Visual Studio.NET Reusable code Enterprise Library Data Access Application Blocks Oracle DB2 Problemi aperti Differenti dialetti SQL Ma standard ANSI-SQL 92 pi o meno rispettato Differenti funzionalit Sequence, Locking model, Stored Proc, supporto XML, ecc. ecc.
  • Slide 9
  • Oracle e.NET sul client Microsoft.NET Data Provider per Oracle Prodotto da Microsoft Usa gli strumenti client di Oracle Oracle Data Provider per.NET (ODP.NET) Sviluppato da Oracle Integrazione completa Espone tutte le caratteristiche di un Oracle DB Oracle Connect per.NET (DataDirect) Altri metodi di accesso OLE DB.NET via OLE DB ODBC.NET via ODBC Microsoft.NET Data Provider per Oracle Prodotto da Microsoft Usa gli strumenti client di Oracle Oracle Data Provider per.NET (ODP.NET) Sviluppato da Oracle Integrazione completa Espone tutte le caratteristiche di un Oracle DB Oracle Connect per.NET (DataDirect) Altri metodi di accesso OLE DB.NET via OLE DB ODBC.NET via ODBC
  • Slide 10
  • ODP.NET Basics Disponibile gratuitamente.NET Developer Center http://www.oracle.com/technology/tech/dotnet/index.html Pu essere usato con Oracle8, Oracle8i, Oracle9i, e Oracle10g Il database server pu essere su Unix, Linux, Windows, etc. Client basato su.NET Supporta VS.NET 2002 e 2003 Supporta.NET Framework 1.0 e 1.1 Disponibile gratuitamente.NET Developer Center http://www.oracle.com/technology/tech/dotnet/index.html Pu essere usato con Oracle8, Oracle8i, Oracle9i, e Oracle10g Il database server pu essere su Unix, Linux, Windows, etc. Client basato su.NET Supporta VS.NET 2002 e 2003 Supporta.NET Framework 1.0 e 1.1
  • Slide 11
  • .NET Data Providers
  • Slide 12
  • ODP.NET DataSet Oracle DataAdapter Oracle Transaction Oracle Command Oracle Connection Oracle DataReader Layer Connesso (ODP.NET) Layer Disconnesso Oracle OracleCommand Builder Dati
  • Slide 13
  • ODP.NET Supporto completo a PL/SQL Packaged, non-packaged, anonymous, autonomous *Batch SQL disponibile con anonymous PL/SQL Data type nativi Oracle LOBS, REF Cursors, BFiles, N-data types, Dates, TimeStamps, Longs, Raws, etc. Mapping con tipi.NET *Connection pooling Min, Max, Timeout, Lifetime, Increment, Decrement Supporto completo a PL/SQL Packaged, non-packaged, anonymous, autonomous *Batch SQL disponibile con anonymous PL/SQL Data type nativi Oracle LOBS, REF Cursors, BFiles, N-data types, Dates, TimeStamps, Longs, Raws, etc. Mapping con tipi.NET *Connection pooling Min, Max, Timeout, Lifetime, Increment, Decrement
  • Slide 14
  • Integrazione con Visual Studio.NET Dynamic Help Documentazione ODP.NET F1 key Server Explorer Tables, views, e synonyms Query e view designer Stored procedures, functions, triggers, package bodies, package specifications Execute, create, delete Intellisense Drag-and-drop da Data toolbox Dynamic Help Documentazione ODP.NET F1 key Server Explorer Tables, views, e synonyms Query e view designer Stored procedures, functions, triggers, package bodies, package specifications Execute, create, delete Intellisense Drag-and-drop da Data toolbox
  • Slide 15
  • .NET e Oracle ADO.NET ODBC.NET OleDB Oracle ODP.NET VS.NET 2003 ASP.NET Web Services ADO.NET ODBC.NET OleDB Oracle ODP.NET VS.NET 2003 ASP.NET Web Services
  • Slide 16
  • Usare ADO.NET con Oracle Imports System.Data Imports System.Data.OracleClient Sub Main() Dim conn as New OracleConnection() conn.ConnectionString = _ "data source=zzz;" & _ "user id=scott;password=tiger" Try conn.Open() Console.WriteLine("Hello Oracle") Catch e as Exception Console.WriteLine("Failed connect") Finally If conn.State = _ ConnectionState.Open Then conn.Close() End If conn.Dispose() End Try End Sub Sub UseDataReader() Dim conn as New OracleConnection() conn.ConnectionString = _ "data source=symbolicname;" & _ "user id=scott;password=tiger" Dim cmd As New OracleCommand( _ "select * from emp", conn) Dim rdr As OracleDataReader Try conn.Open() rdr = cmd.ExecuteReader() While rdr.Read = True Console.WriteLine( _ "empno = {0}, ename = {1}", _ rdr("empno"), rdr("ena