微軟將從 .NET 4 以后的版本棄用 System.Data.OracleClient。
這是微軟官方 ADO.NET Team Blog 去年就公布的消息:
http://blogs.msdn.com/adonet/archive/2009/06/15/system-data-oracleclient-update.aspx
我剛用 VS 2010 測試了一下,才確認這項消息的正確性。OracleClient 是微軟針對 Oracle 開發所研發的 ADO.NET Data Provider,從 .NET 1.x 開始,就已成為 .NET Framework 類庫的一部分,它與微軟 Visual Studio 的集成性非常好。
該篇博文內容大概是說,微軟未來不再支持 System.Data.OracleClient 這個 Data Provider 的研發,從 .NET 4 以后的版本,會將該類庫移除 [1]。因此,雖然現在 System.Data.OracleClient 在 VS 2010 / .NET 4 里仍可使用,但在開發和編譯時,會出現大量的「deprecated (不建議使用)」警告,如下圖 1。
根據 ADO.NET OracleClient 產品經理 Himanshu Vasishth 的說法,這對大家現有的項目和代碼沒有任何影響,大家仍可繼續用 OracleClient 來開發應用程序,但 ADO.NET Team 強烈建議用戶和開發人員,改用其他廠商或第三方供應商的 Oracle provider。
未來微軟對自家的 System.Data.OracleClient,不會再推出新功能,只會針對重大問題和 bug 做修正,并會繼續將這些修正發布在 .NET Framework 4.0 的 service packs。另 System.Data.OracleClient 3.5 的支持會從 2013 年延長到 2018 年,System.Data.OracleClient 4.0 的支持則與 .NET Framework 4.0 的生命周期相同。

圖 1 以 Visual Studio 2010 Ultimate RC 版 / .NET 4 項目測試,開發和編譯時會出現大量的 Warning
表面上看起來,是有很大比例的客戶、MVPs 和開發人員,傾向用合作廠商或第三方廠商的 Oracle provider,且因為 Oracle 數據庫的改版和更新速度也很快,這些第三方廠商能比較快地推出搭配 Oracle 數據庫新功能的支持。微軟認為,自己無需再花資源和時間,追在 Oracle 的研發團隊和第三方提供者的后面跑。
我自己則認為,微軟此舉絕對有戰略意義,不見得像該博文所說的,只是為了節省從 .NET 到 Oracle 的版本控制或性能等研發資源。微軟的目的之一,可能是想將他的客戶,能從 Oracle 多拉一些回來。若客戶的項目有特殊需求、關鍵應用,或想用一些 .NET 訪問數據庫的特定語法和性能優化 [2],建議你用微軟的 SQL Server;否則很對不起,要是將來 .NET 4.x、5、6、7、...平臺有什么好用的功能、框架或語法,屆時 Oracle 官方的 prodvider 不支持,就請各位用戶自行負責,或直接現在就改用 SQL Server 來開發新的項目。
所以,隨著 .NET 平臺和 Visual Studio 越來越好用、營銷越做越夸張,將來也會有越來越多的開發人員、IT 決策者會「強烈建議」他們的客戶,最好使用微軟的 SQL Server (大家都省時省事),而不要用 Oracle,否則一些開發方便性、執行性能上的甜頭,例如一些 ADO.NET / DataReader 的語法甜頭 [2],或像 LINQ to SQL 的輕量級和方便性,或是像現在 SQL Server 2008 新加入的一些類型和功能:HierarchyID 階層類型、FileStream 大型對象的存儲、地理空間類型 (Spatial Data Type),或是像 Service Broker 交換信息 (實現 SOA),或是未來一些新的 .NET 框架,若你堅持要用 Oracle 數據庫,以上的種種可能將無法有效地和 .NET 程序整合。
若客戶仍堅持相信 Oracle 才能處理海量關鍵的應用,沒關系,微軟將來會告訴你,「一般的」應用開發,用 Oracle Data Provider for .NET (ODP.NET) 或一些 ORM 框架,仍可正常運作,但勢必 .NET Framework 平臺的許多新功能和好處,你將會無法享用。若你仍不愛用 SQL Server,仍想用 Oracle/Java 或 Sybase (SAP) 等其他的解決方案,請不要忘記,現在企業的應用開發,已越來越走向被 .NET / Visual Studio 一家獨攬的趨勢。你的項目不用我家的 SQL Server,將來幾年后若你的系統要改版或添加功能,后果自負。當然,SQL Server 只能運作在 Windows 操作系統上,最好將來所有企業新開發的項目,都被綁在 .NET/Visual Studio + SQL Server + Windows 上,若未來幾年 Java 無法有效地發展或各個流派仍繼續分歧,連帶也會影響客戶在新項目選用 Oracle 數據庫的意愿。如此一來,二十年后微軟將一統全世界企業的系統后臺,屆時號令天下誰敢不從。
本文同步發布在「ADO.NET - 博客園小組」:
http://home.cnblogs.com/group/ado/
--------------------------------------------------------------------------
相關文章:
[1] Oracle and ADO.NET (.NET 4, 中文版的內容尚未更新)
http://msdn.microsoft.com/en-us/library/77d8yct7.aspx
[2] DataReader 程序性能優化、透過 SqlConnection 的 ChangeDatabase 方法切換不同數據庫而不啟用分布式事務
http://www.rzrgm.cn/WizardWu/archive/2008/07/11/1241174.html
http://www.rzrgm.cn/WizardWu/archive/2010/02/16/1668769.html
http://www.rzrgm.cn/WizardWu/archive/2010/02/04/1663127.html
[3] System.Data.OracleClient 將走入歷史, 作者:李明儒 (繁體中文)
http://blog.darkthread.net/blogs/darkthreadtw/archive/2010/05/14/bye-ado-net-oracleclient.aspx
http://blog.darkthread.net/blogs/darkthreadtw/archive/2009/10/11/road-to-oracle-linq.aspx
[4] migrate to the Oracle Data Provider for .NET
http://www.oracle.com/technology/tech/dotnet/msoc/index.html
http://cshay.blogspot.com/2009/07/microsoft-deprecates-oracleclient-time.html
[5] 其他網絡文章 (簡體中文)
http://bbs.dameng.com/viewthread.php?tid=859
http://www.pin5i.com/showtopic-24628.html
http://hi.baidu.com/coollzh/blog/item/51b4f235ddc2b81b91ef3964.html
http://lichao.net/weblog/web-development/aspnet/140.html
[6] Oracle 11g 學習筆記
http://www.rzrgm.cn/WizardWu/archive/2008/11/25/1340867.html
http://www.rzrgm.cn/WizardWu/archive/2008/11/27/1342174.html
http://www.rzrgm.cn/WizardWu/archive/2008/11/28/1343100.html
http://www.rzrgm.cn/WizardWu/archive/2008/11/30/1344096.html
http://www.rzrgm.cn/WizardWu/archive/2008/12/07/1349665.html
--------------------------------------------------------------------------
這是微軟官方 ADO.NET Team Blog 去年就公布的消息:
http://blogs.msdn.com/adonet/archive/2009/06/15/system-data-oracleclient-update.aspx
我剛用 VS 2010 測試了一下,才確認這項消息的正確性。OracleClient 是微軟針對 Oracle 開發所研發的 ADO.NET Data Provider,從 .NET 1.x 開始,就已成為 .NET Framework 類庫的一部分,它與微軟 Visual Studio 的集成性非常好。
該篇博文內容大概是說,微軟未來不再支持 System.Data.OracleClient 這個 Data Provider 的研發,從 .NET 4 以后的版本,會將該類庫移除 [1]。因此,雖然現在 System.Data.OracleClient 在 VS 2010 / .NET 4 里仍可使用,但在開發和編譯時,會出現大量的「deprecated (不建議使用)」警告,如下圖 1。
根據 ADO.NET OracleClient 產品經理 Himanshu Vasishth 的說法,這對大家現有的項目和代碼沒有任何影響,大家仍可繼續用 OracleClient 來開發應用程序,但 ADO.NET Team 強烈建議用戶和開發人員,改用其他廠商或第三方供應商的 Oracle provider。
未來微軟對自家的 System.Data.OracleClient,不會再推出新功能,只會針對重大問題和 bug 做修正,并會繼續將這些修正發布在 .NET Framework 4.0 的 service packs。另 System.Data.OracleClient 3.5 的支持會從 2013 年延長到 2018 年,System.Data.OracleClient 4.0 的支持則與 .NET Framework 4.0 的生命周期相同。

圖 1 以 Visual Studio 2010 Ultimate RC 版 / .NET 4 項目測試,開發和編譯時會出現大量的 Warning
以下是該文的后續討論中,所列出的一些 System.Data.OracleClient 替代方案:
- ODP.NET from Oracle:
Oracle 自家的解決方案,正宗且永久免費,使用人數及技術社區眾多,聽說性能比微軟的 Oracle driver 更優 (這點未證實),但只提供基本的數據訪問功能,不支持 ADO.NET Entity Framework。
在 ODP.NET 10.2.0.4 之前的版本,常被抱怨版本號碼必須與 Oracle 數據庫正確對應。但聽說新的 ODP.NET 11g,已可與所有版本的 Oracle 數據庫兼容 (包括 9.2 版本),且在同一個操作系統上可安裝多個版本。
http://www.oracle.com/technology/tech/windows/odpnet/newfeatures.html
http://www.oracle.com/technology/tech/dotnet/msoc/index.html - Devart dotConnet for Oracle:
正式名稱是 OraDirect.NET,可免費使用。可支持 ADO.NET Entity Framework。
http://www.devart.com/dotconnect/oracle/
http://devart.com/dotconnect/ - DataDirect ADO.NET Data Provider for Oracle:
可支持 ADO.NET Entity Framework。
http://www.datadirect.com/products/net/net_for_oracle/index.ssp
http://www.datadirect.com/index.ssp - Oracle Multi-Tier .Net Provider from OPENLINK:
http://uda.openlinksw.com/dotnet/mt/dotnet-oracle-mt/
http://www.openlinksw.com/
表面上看起來,是有很大比例的客戶、MVPs 和開發人員,傾向用合作廠商或第三方廠商的 Oracle provider,且因為 Oracle 數據庫的改版和更新速度也很快,這些第三方廠商能比較快地推出搭配 Oracle 數據庫新功能的支持。微軟認為,自己無需再花資源和時間,追在 Oracle 的研發團隊和第三方提供者的后面跑。
我自己則認為,微軟此舉絕對有戰略意義,不見得像該博文所說的,只是為了節省從 .NET 到 Oracle 的版本控制或性能等研發資源。微軟的目的之一,可能是想將他的客戶,能從 Oracle 多拉一些回來。若客戶的項目有特殊需求、關鍵應用,或想用一些 .NET 訪問數據庫的特定語法和性能優化 [2],建議你用微軟的 SQL Server;否則很對不起,要是將來 .NET 4.x、5、6、7、...平臺有什么好用的功能、框架或語法,屆時 Oracle 官方的 prodvider 不支持,就請各位用戶自行負責,或直接現在就改用 SQL Server 來開發新的項目。
所以,隨著 .NET 平臺和 Visual Studio 越來越好用、營銷越做越夸張,將來也會有越來越多的開發人員、IT 決策者會「強烈建議」他們的客戶,最好使用微軟的 SQL Server (大家都省時省事),而不要用 Oracle,否則一些開發方便性、執行性能上的甜頭,例如一些 ADO.NET / DataReader 的語法甜頭 [2],或像 LINQ to SQL 的輕量級和方便性,或是像現在 SQL Server 2008 新加入的一些類型和功能:HierarchyID 階層類型、FileStream 大型對象的存儲、地理空間類型 (Spatial Data Type),或是像 Service Broker 交換信息 (實現 SOA),或是未來一些新的 .NET 框架,若你堅持要用 Oracle 數據庫,以上的種種可能將無法有效地和 .NET 程序整合。
若客戶仍堅持相信 Oracle 才能處理海量關鍵的應用,沒關系,微軟將來會告訴你,「一般的」應用開發,用 Oracle Data Provider for .NET (ODP.NET) 或一些 ORM 框架,仍可正常運作,但勢必 .NET Framework 平臺的許多新功能和好處,你將會無法享用。若你仍不愛用 SQL Server,仍想用 Oracle/Java 或 Sybase (SAP) 等其他的解決方案,請不要忘記,現在企業的應用開發,已越來越走向被 .NET / Visual Studio 一家獨攬的趨勢。你的項目不用我家的 SQL Server,將來幾年后若你的系統要改版或添加功能,后果自負。當然,SQL Server 只能運作在 Windows 操作系統上,最好將來所有企業新開發的項目,都被綁在 .NET/Visual Studio + SQL Server + Windows 上,若未來幾年 Java 無法有效地發展或各個流派仍繼續分歧,連帶也會影響客戶在新項目選用 Oracle 數據庫的意愿。如此一來,二十年后微軟將一統全世界企業的系統后臺,屆時號令天下誰敢不從。
本文同步發布在「ADO.NET - 博客園小組」:
http://home.cnblogs.com/group/ado/
--------------------------------------------------------------------------
相關文章:
[1] Oracle and ADO.NET (.NET 4, 中文版的內容尚未更新)
http://msdn.microsoft.com/en-us/library/77d8yct7.aspx
[2] DataReader 程序性能優化、透過 SqlConnection 的 ChangeDatabase 方法切換不同數據庫而不啟用分布式事務
http://www.rzrgm.cn/WizardWu/archive/2008/07/11/1241174.html
http://www.rzrgm.cn/WizardWu/archive/2010/02/16/1668769.html
http://www.rzrgm.cn/WizardWu/archive/2010/02/04/1663127.html
[3] System.Data.OracleClient 將走入歷史, 作者:李明儒 (繁體中文)
http://blog.darkthread.net/blogs/darkthreadtw/archive/2010/05/14/bye-ado-net-oracleclient.aspx
http://blog.darkthread.net/blogs/darkthreadtw/archive/2009/10/11/road-to-oracle-linq.aspx
[4] migrate to the Oracle Data Provider for .NET
http://www.oracle.com/technology/tech/dotnet/msoc/index.html
http://cshay.blogspot.com/2009/07/microsoft-deprecates-oracleclient-time.html
[5] 其他網絡文章 (簡體中文)
http://bbs.dameng.com/viewthread.php?tid=859
http://www.pin5i.com/showtopic-24628.html
http://hi.baidu.com/coollzh/blog/item/51b4f235ddc2b81b91ef3964.html
http://lichao.net/weblog/web-development/aspnet/140.html
[6] Oracle 11g 學習筆記
http://www.rzrgm.cn/WizardWu/archive/2008/11/25/1340867.html
http://www.rzrgm.cn/WizardWu/archive/2008/11/27/1342174.html
http://www.rzrgm.cn/WizardWu/archive/2008/11/28/1343100.html
http://www.rzrgm.cn/WizardWu/archive/2008/11/30/1344096.html
http://www.rzrgm.cn/WizardWu/archive/2008/12/07/1349665.html
--------------------------------------------------------------------------
浙公網安備 33010602011771號