如何編寫適用於 SqlServer 和 Oracle 的 .Net 應用程序(現在不推薦使用 System.Data.OracleClient)
另請參閱System.Data.OracleClient 命名空間已終止?
(首先不要驚慌,Microsoft 尚未刪除 System.Data.OracleClient,但它不在 .net 4 的客戶端版本中)
通過使用 System.Data.OracleClient 可以實現此用途,但 Microsoft 已決定棄用 OracleClient。(OracleClient 是 Microsoft 為 Oracle 開發的 ADO.NET 提供程序,並作為 .NET Framework 的一部分提供。)
您可以使用 ODP.Net,但是您是否希望您的 Sql Server 客戶必須安裝 ODP.Net?(您希望您的任何客戶都必須安裝 Oracle 軟體嗎?)
DataDirect不是一個選項,因為它需要花費一條胳膊和一條腿;如果您需要將單個伺服器連接到大型機,它可能幾乎是負擔得起的。然而,期望所有客戶都購買它不是一種選擇。
從 C# 遷移到 Java 不是一個好的選擇,因為我是一名 C# 程序員並且希望能夠謀生!
像大多數必須支持多個 RDBMS 的 ISV 一樣,我們只需要一個允許我們使用與 SqlServer 相同的 Oracle 的小子集的解決方案。因此 System.Data.OracleClient 對我們來說已經足夠強大了。
(也許我們應該開始將所有數據儲存在平面文件中,這樣客戶的 DBA 就不會再試圖告訴我們如何編寫軟體了。Oracle DBA 更糟糕!)
我真正的問題是如何編寫與 Oracle 對話的 .NET 軟體,我們可以輕鬆地將其安裝為與 SqlServer 對話的 .NET 軟體。不得不使用 ODP.NET 只會讓 oracle 客戶端安裝更加痛苦,而且還會出錯。
如果我使用的是 JAVA,我可以只使用 JDBC 類型 4 驅動程序。Microsoft 為 SqlServer 提供了一種,Oracle 為 Oracle 提供了一種。然而,甲骨文似乎希望盡可能難地使用.Net,而微軟希望盡可能地使用甲骨文。
到目前為止,最好的選擇看起來像devArt 的 dotConnect。
然而,我開始質疑 .NET 是否是 ISV 的一個很好的開發系統,因為遲早你總會遇到需要 oracle 支持的客戶。在 Java 世界中,他們似乎已經解決了這個問題。
看起來 Oracle 可能即將推出一個明智的完全託管的 ADO.NET 提供程序,它自己甚至可能很容易安裝!請參閱此處聲稱 Beta – 2011,生產 – 2011 年底。
編輯:完全託管的 ODP.NET 現在可以在生產中使用。它非常小(小於 10MB)並且不依賴於其他文件。你可以在這裡獲得它:
<http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html>
原答案:
輕鬆確保所需的 Oracle 客戶端軟體(包括 ODP.NET)在部署機器上始終可用的一種方法是將其嵌入到您的應用程序中。由於 XCOPY ODP.NET 可用,ODP.NET 的嵌入變得更加容易。您可以從此連結下載它:
<http://www.oracle.com/technology/software/tech/windows/odpnet/index.html>
使用 XCOPY ODP.NET,您在部署應用程序時需要做的所有事情如下:
1)將您的應用程序複製到目標機器
- 執行“install.bat”,將幾個 Oracle DLL 複製到目標機器(包括 ODP.NET 和 Oracle 客戶端 (OCI) 軟體)
3)執行“configure.bat”,它執行“gacutil”並更新目標機器的系統資料庫
- 為您的應用程序提供連接字元串資訊。您可以使用 EZCONNECT 連接字元串 (“hostname@servicename”),或者您(或您的客戶)可以通過將 TNS_ADMIN 系統資料庫項或環境變數設置為指向另一個已配置 sqlnet 連接別名的 Oracle 主目錄來共享預先存在的 sqlnet 配置。
而已!真的就是這麼簡單。
我希望您能仔細查看上面連結中的 ODP.NET XCOPY,以親自了解如今將 ODP.NET 嵌入您的應用程序是多麼容易。
附加條款:
如果您選擇不將 ODP.NET 嵌入到您的應用程序中,無論是 Microsoft OracleClient 還是 ODP.NET,都需要在任何部署機器上安裝額外的 Oracle 客戶端 (OCI) 軟體。這兩種情況的唯一區別是,當您使用 ODP.NET 時,它還需要存在於部署機器上。好消息是,在您的客戶機器上安裝的典型 Oracle 已經包含 ODP.NET。
現在,如果您的目標機器已經安裝了 ODP.NET,您不需要做任何其他事情。您只需要分發您的應用程序。如果您確實需要使用標準安裝程序安裝 ODP.NET,您也可以從上面提供的連結下載它。標準的 ODP.NET 安裝只需幾分鐘即可為您配置好一切。
同樣,您可以使用 EZConnect 連接字元串使網路配置變得輕而易舉,或者使用 TNS_ADMIN 系統資料庫項或環境變數來利用您的客戶已經習慣使用的預先存在的連接別名。
希望這可以幫助,
克里斯蒂安·謝伊
甲骨文
請隨時在我們的功能請求網站上提供有關此功能和其他未來功能的回饋: http ://apex.oracle.com/pls/apex/f?p=18357:46