最近做项目在考虑数据库层,是用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观点
那么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在处理复杂数据类型时提供了更多的方法等等。