最近做项目在考虑数据库层,是用 System.Data.OracleClient(MSDP),还是 Oracle.DataAccess.dll(ODP.NET)。之前用的是 MSDP,可因为要处理 XML 文件,所以还用了一部分 ODP.NET。现在想全部使用 ODP.NET,于是查了点资料。最关键是 ODP.NET 是否稳定。
Microsoft .NET Framework 1.1 Data Provider for Oracle(MSDP)与 Oracle Data Provider for .NET(ODP.NET)9i 都很可靠,它们提供类似的功能。用它们中的任何一个开发应用程序,相似之处都大于它们的区别,因
为,这两个 DP(Data Prodvider)的相应类具有完全相同的命名和实现.NET框架的接口。然而,它们也有很多重要的不同之处:
在某些情况下,ODP.NET 中的数据类型更好地映射到本地 Oracle 数据类型。除了微软对复杂数据类型提供的方法外,如 LOBs、Timestamps、REF CURSORs 和 Oracle XML,ODP.NET 也提供。如果你使用这些数据类型,尽管用微软 DP(Data Provider)也可以完成,但ODP.NET使得软件开发更容易。ODP.NET 也提供微软没有的功能,如 database connections、information messages 和 error detail、array binding、PL/SQL associative arrays、transaction application failover (TAF)、以及 globalization。
微软 DP 被紧密地集成在 VS .NET IDE 中,这样,你就可以使用代码生成向导来 connections、commands和data adapters——ODP.NET 目前不能。微软DP的部署很容易,因为它是 .NET 框架 1.1 或其之后的一部分。微软 DP 支持 Oracle 客户端 8.1.7 或更高版本,而 ODP.NET 要求 Oracle 客户端 9.2 或更高版本。
在比较了 MSDP 和 ODP.NET 后,根据应用程序开发和部署的要求,选择正确的 DP。下面超链接是微软提供的这两个 DP 的详细区别。
参考 http://msdn.microsoft.com/en-us/library/ms971518
另外,在下面链接看到,微软已经在.NET框架4.0中 deprecated 它的 DP。请检索 Microsoft Kills Its Oracle Data Provider for ADO.NET 你会发现很多引用。
参考 http://blogs.msdn.com/b/adonet/archive/2009/06/15/system-data-oracleclient-update.aspx
那么 Oracle 的观点如何?既然微软在 .NET 框架 4.0 中不赞成 System.Data.OracleClient,也就不用多说了。
参考 http://www.oracle.com/technetwork/topics/dotnet/index-085703.html
参考 http://www.oracle.com/technetwork/topics/dotnet/index-154765.html
ODP.NET 与 MSDP 都可以使用,但是 MS 在.NET框架 4.0,也就是 VS 2010,建议开发人员不要使用 MSDP,意味着,微软意识到这种数据库接口是无法与大型数据库生产商竞争的,比如 Oracle,因为 ODP.NET 在处理复杂数据类型时提供了更多的方法等等。
Comparing the Microsoft .NET Framework 1.1 Data Provider for Oracle and the Oracle Data Provider for .NET http://msdn.microsoft.com/zh-cn/library/ms971518.aspx