Asynchronous Method Support
-
- Posts: 4
- Joined: Mon 01 Nov 2010 19:30
Asynchronous Method Support
I installed your product because I want an Oracle ADO.NET provider that offered asynchronous communication to Oracle. After using reflector to look at your assemblies I was disappointed to see that you use Delegate.BeginInvoke to implement your asynchronous methods. Do you have any plans to offer an implementation that implements asynchronous behavior through asynchronous I/O utilizing Windows I/O completion ports? The delegate implementation you currently offer does not really provide any advantage over the synchronous alternative making use of the .NET thread pool.
Thanks.
dan finucane
Thanks.
dan finucane
-
- Devart Team
- Posts: 1710
- Joined: Thu 03 Dec 2009 10:48
Thank you for your suggestion, but at the moment we do not plan to implement functionality for interoperations with Oracle based on I/O Completion Ports. As for the BeginExecuteNonQuery and BeginExecuteReader methods, they are designed for background execution of SQL commands only, and are not supposed to speed up this execution. For example, the standard System.Data.SqlCommand.BeginExecuteReader method has an analogous behaviour.
As I can understand, you want to increase the performance of some data access scenario. Am I correct? If yes, could you please describe this scenario so that we can suggest a way of accelerating it?
As I can understand, you want to increase the performance of some data access scenario. Am I correct? If yes, could you please describe this scenario so that we can suggest a way of accelerating it?
-
- Posts: 4
- Joined: Mon 01 Nov 2010 19:30
You are not doing the same thing as SqlCommand. SqlCommand is using asynchronous IO at the network level. Asynchronous IO is much more efficient than using a delegate. With async io the work is being done in the network device driver without blocking a .NET thread whereas with the delegate you are blocking on a thread pool thread until the driver finishes its work.
Can a request be put in to the developers to modify your implementation use use async io? My primary reason for considering dotConnect was for it's async execution.
Thanks.
dan finucane
Can a request be put in to the developers to modify your implementation use use async io? My primary reason for considering dotConnect was for it's async execution.
Thanks.
dan finucane
-
- Devart Team
- Posts: 1710
- Joined: Thu 03 Dec 2009 10:48
-
- Posts: 1
- Joined: Wed 21 Mar 2012 13:26
Has something changed in plans to implement async methods properly (i.e. using async IO)?
I've just checked current release 6.78 and found that async methods still just call BeginInvoke on a delegate. It's a pity because dotConnect for Oracle was the last chance to find ADO.Net data provider for Oracle that supports async oprations. In fact current implementation of async methods doesn't have any advantages comparing with ODP.Net from Oracle from perspective of building scalable server applications.
I've just checked current release 6.78 and found that async methods still just call BeginInvoke on a delegate. It's a pity because dotConnect for Oracle was the last chance to find ADO.Net data provider for Oracle that supports async oprations. In fact current implementation of async methods doesn't have any advantages comparing with ODP.Net from Oracle from perspective of building scalable server applications.
-
- Posts: 4
- Joined: Mon 01 Nov 2010 19:30
I agree with Mikhail, please add async support
True async support would, utilizing I/O completion rather than blocking on a delegate, make your product standout. It will be even more noticeable when .NET 4.5 is released with the new async and await keywords making it easier to do async programming.
Thanks.
dan finucane
Thanks.
dan finucane
-
- Devart Team
- Posts: 2420
- Joined: Wed 02 Nov 2011 09:44
Re: Asynchronous Method Support
Is there any news on this. Calling OracleDataReader.ReadAsync() should behave just like it does on SqlDataReader. I bet you just need to override the DBDataReader.ReadAsync ()
Thanks in advance for an update on this.
Thanks in advance for an update on this.
-
- Devart Team
- Posts: 2420
- Joined: Wed 02 Nov 2011 09:44
Re: Asynchronous Method Support
We are investigating the issue, but we can't tell any timeframe at the moment.
-
- Posts: 1
- Joined: Wed 07 Oct 2015 14:45
Re: Asynchronous Method Support
Reviving this thread. Over a year later and the *Async methods still don't appear to be properly supported. .Net is now more than ever all in on async, proper async.
-
- Devart Team
- Posts: 2420
- Joined: Wed 02 Nov 2011 09:44
Re: Asynchronous Method Support
We are still investigating the issue. We will post here when we get any results, but we can't tell any timeframe at the moment.
-
- Posts: 4
- Joined: Mon 27 Mar 2017 14:01
Re: Asynchronous Method Support
Has this ever been implemented?Pinturiccio wrote:We are still investigating the issue. We will post here when we get any results, but we can't tell any timeframe at the moment.
Iam trying to do this:
Code: Select all
using (var sqlConnection = new OracleConnection(Connectionstring))
{
await sqlConnection.OpenAsync();
string sql = GetCommonSqlQuery(herdIds, true);
return await
sqlConnection.QueryAsync<Animal, Gender, Breed, Animal>(
sql,
(a, g, b) =>
{
a.Gender = g;
a.Breed = b;
return a;
});
}
This is using version 8.5.506.0 driver
-
- Devart Team
- Posts: 2420
- Joined: Wed 02 Nov 2011 09:44
Re: Asynchronous Method Support
Unfortunately the situation is the same, and we can't tell any timeframe at the moment.
-
- Posts: 4
- Joined: Mon 27 Mar 2017 14:01
Re: Asynchronous Method Support
Guess that means never, its 2017 I am a bit surprised you released a aspnet core driver without await/asyncPinturiccio wrote:Unfortunately the situation is the same, and we can't tell any timeframe at the moment.