Asynchronous Method Support

Asynchronous Method Support

Postby 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
danfinucane
 
Posts: 4
Joined: Mon 01 Nov 2010 19:30

Postby 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?
StanislavK
Devart Team
 
Posts: 1710
Joined: Thu 03 Dec 2009 10:48

Postby 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
danfinucane
 
Posts: 4
Joined: Mon 01 Nov 2010 19:30

Postby 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.
StanislavK
Devart Team
 
Posts: 1710
Joined: Thu 03 Dec 2009 10:48

Postby danfinucane » Wed 03 Nov 2010 14:34

Excellent. Thank you.
danfinucane
 
Posts: 4
Joined: Mon 01 Nov 2010 19:30

Postby 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.
mikhail_mikheev
 
Posts: 1
Joined: Wed 21 Mar 2012 13:26

I agree with Mikhail, please add async support

Postby 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
danfinucane
 
Posts: 4
Joined: Mon 01 Nov 2010 19:30

Postby 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.
Pinturiccio
Devart Team
 
Posts: 1893
Joined: Wed 02 Nov 2011 09:44

Re: Asynchronous Method Support

Postby 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.
dphansen
 
Posts: 1
Joined: Fri 14 Mar 2014 11:23

Re: Asynchronous Method Support

Postby Pinturiccio » Wed 19 Mar 2014 16:11

We are investigating the issue, but we can't tell any timeframe at the moment.
Pinturiccio
Devart Team
 
Posts: 1893
Joined: Wed 02 Nov 2011 09:44

Re: Asynchronous Method Support

Postby 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.
Richicoder
 
Posts: 1
Joined: Wed 07 Oct 2015 14:45

Re: Asynchronous Method Support

Postby 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.
Pinturiccio
Devart Team
 
Posts: 1893
Joined: Wed 02 Nov 2011 09:44

Re: Asynchronous Method Support

Postby 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
Skippermix
 
Posts: 2
Joined: Mon 27 Mar 2017 14:01

Re: Asynchronous Method Support

Postby Pinturiccio » Tue 28 Mar 2017 16:39

Unfortunately the situation is the same, and we can't tell any timeframe at the moment.
Pinturiccio
Devart Team
 
Posts: 1893
Joined: Wed 02 Nov 2011 09:44

Re: Asynchronous Method Support

Postby 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
Skippermix
 
Posts: 2
Joined: Mon 27 Mar 2017 14:01


Return to dotConnect for Oracle