Asynchronous Method Support

Discussion of open issues, suggestions and bugs regarding ADO.NET provider for Oracle
Post Reply
danfinucane
Posts: 4
Joined: Mon 01 Nov 2010 19:30

Asynchronous Method Support

Post by danfinucane » Mon 01 Nov 2010 19:38

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

StanislavK
Devart Team
Posts: 1710
Joined: Thu 03 Dec 2009 10:48

Post by StanislavK » Tue 02 Nov 2010 14:59

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?

danfinucane
Posts: 4
Joined: Mon 01 Nov 2010 19:30

Post by danfinucane » Tue 02 Nov 2010 17:54

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

StanislavK
Devart Team
Posts: 1710
Joined: Thu 03 Dec 2009 10:48

Post by StanislavK » Wed 03 Nov 2010 14:32

We will analyze the possibility of using I/O Completion Ports for asynchronous command execution methods. We will inform you here when our investigation is completed.

danfinucane
Posts: 4
Joined: Mon 01 Nov 2010 19:30

Post by danfinucane » Wed 03 Nov 2010 14:34

Excellent. Thank you.

mikhail_mikheev
Posts: 1
Joined: Wed 21 Mar 2012 13:26

Post by mikhail_mikheev » Wed 21 Mar 2012 13:37

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.

danfinucane
Posts: 4
Joined: Mon 01 Nov 2010 19:30

I agree with Mikhail, please add async support

Post by danfinucane » Wed 21 Mar 2012 14:47

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

Pinturiccio
Devart Team
Posts: 2420
Joined: Wed 02 Nov 2011 09:44

Post by Pinturiccio » Tue 27 Mar 2012 10:23

We will analyze the possibility of using I/O Completion Ports for asynchronous command execution methods but there is no timeframe.

dphansen
Posts: 1
Joined: Fri 14 Mar 2014 11:23

Re: Asynchronous Method Support

Post by dphansen » Fri 14 Mar 2014 11:33

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 () :D

Thanks in advance for an update on this.

Pinturiccio
Devart Team
Posts: 2420
Joined: Wed 02 Nov 2011 09:44

Re: Asynchronous Method Support

Post by Pinturiccio » Wed 19 Mar 2014 16:11

We are investigating the issue, but we can't tell any timeframe at the moment.

Richicoder
Posts: 1
Joined: Wed 07 Oct 2015 14:45

Re: Asynchronous Method Support

Post by Richicoder » Wed 07 Oct 2015 14:50

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.

Pinturiccio
Devart Team
Posts: 2420
Joined: Wed 02 Nov 2011 09:44

Re: Asynchronous Method Support

Post by Pinturiccio » Fri 09 Oct 2015 10:13

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.

Skippermix
Posts: 4
Joined: Mon 27 Mar 2017 14:01

Re: Asynchronous Method Support

Post by Skippermix » Mon 27 Mar 2017 14:08

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.
Has this ever been implemented?
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;
                        });
            }
Using Dapper, but I cant get it to run async, this dont return until the method is done quering the data

This is using version 8.5.506.0 driver

Pinturiccio
Devart Team
Posts: 2420
Joined: Wed 02 Nov 2011 09:44

Re: Asynchronous Method Support

Post by Pinturiccio » Tue 28 Mar 2017 16:39

Unfortunately the situation is the same, and we can't tell any timeframe at the moment.

Skippermix
Posts: 4
Joined: Mon 27 Mar 2017 14:01

Re: Asynchronous Method Support

Post by Skippermix » Wed 29 Mar 2017 06:09

Pinturiccio wrote:Unfortunately the situation is the same, and we can't tell any timeframe at the moment.
Guess that means never, its 2017 I am a bit surprised you released a aspnet core driver without await/async

Post Reply