我需要從我的C#/ .NET應用程序連接並對oracle數據庫執行一些操作。由於它是一個高負載的服務器應用程序,我希望我只使用異步調用來執行數據庫操作。使用C#,.NET與Oracle數據庫進行異步數據庫操作?
據我所知,System.Data.OracleClient is obsolete now,我有什麼選擇做到上面做到?
我需要從我的C#/ .NET應用程序連接並對oracle數據庫執行一些操作。由於它是一個高負載的服務器應用程序,我希望我只使用異步調用來執行數據庫操作。使用C#,.NET與Oracle數據庫進行異步數據庫操作?
據我所知,System.Data.OracleClient is obsolete now,我有什麼選擇做到上面做到?
我幾年前還沒有看過這個,但是當我看時這是不可能的。異步。操作只能由SQL Server客戶端支持。
您唯一的選擇是創建您自己的異步方法。這是有據可查的,所以我不會在這裏再次討論它。
您可以在sqlserver中創建job然後安排它立即執行。這一切都可以在一個查詢中完成。 Oracle也有類似的概念。
您可以使用DBMS_JOB或更現代的DBMS_SCHEDULER讓Oracle運行並返回。 Oracle可以同時運行多少個作業,並確保它足夠滿足您的應用程序的可配置限制。
您也可以使用Oracle AQ。設置一個隊列,有1..n個正在看隊列的工作。
你不需要改變任何編程方法,你只需要從不同的來源得到你的DLL。微軟本質上是說(如果我理解這篇文章的話)他們的System.Data.OracleClient版本已經被折舊了,但是Oracle提供的版本是可以使用的版本。
這有點讓人困惑,當我第一次使用.NET代碼工作Oracle數據庫時,出現了這個問題,但Oracle和Microsoft都有稱爲「System.Data.OracleClient」的庫。
因此,得到Oracle的一個,並使用完全相同的代碼來處理您使用Microsoft的異步調用。
但問題是,ODP.NET不支持異步操作! – Hemant 2010-01-30 03:52:47
@Hemant--對不起,我認爲Oracle版本的庫會具有相同的功能。你有使用ThreadPool的經驗嗎?您可以通過讓您創建的每個線程啓動它自己的連接來開發自己的異步框架。這絕對是一個更多的工作,但它可能是唯一的選擇。 – 2010-01-30 17:58:03