最近做項目在考慮數據庫層,是用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在處理複雜數據類型時提供了更多的方法等等。