我需要从我的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