Skip to Main Content

ODP.NET

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Why odp.net does not implement ExecuteDbDataReaderAsync?

OnurGumusMay 3 2019 — edited May 6 2019

According to Microsoft documentation for DBCommand.ExecuteDbDataReaderAsync: Providers should implement this method to provide a nondefault implementation for  overloads. The default implementation invokes the synchronous method and returns a completed task, blocking the calling thread.

However I can see OracleManagedDataAccess did not implement this in OracleCommand class. As a result  all reading calls via oracle are blocking and synchronous! I find this very odd and very counter productive in terms of performance. Is there any particular reason  this method is not overridden in OracleCommand?

This post has been answered by Alex Keh-Oracle on May 3 2019
Jump to Answer

Comments

Alex Keh-Oracle
Answer

The current async implementation, task-based, is the third .NET iteration for asynchronous programming models. Before task-based async, there was event-based pattern and the async programming model. .NET async programming patterns have been around since near the beginning of .NET FW itself. And the reason why these async models have changed over time is because there was never a popular async model until the most recent iteration.

And therein lies the reason why ODP.NET has taken a wait and see approach. Async .NET programming is not new, but historically it had never gone mainstream.

With that said, Oracle is working on supporting task-based async. We'll have more details during Oracle OpenWorld in September.

Marked as Answer by OnurGumus · Sep 27 2020
OnurGumus

Dear Alex,

I disagree with your below comment:

" Async .NET programming is not new, but historically it had never gone mainstream."

As of now except Oracle, all database vendors that support .NET, also support proper asynchronous API.

Alex Keh-Oracle

Hi Onur,

What I meant by that statement was that the event-based pattern and the async programming model were not popular among .NET developers and eventually abandoned by Microsoft. Vendors who devoted much effort to supporting those earlier two models had to invest yet again in async with the task-based async pattern. Oracle has approached supporting a new async pattern relatively cautiously when noting the history.

user12186381

Hi Alex,

Any plans to make the async make GA?

I see that we have a pre-release available, but clearly states that should be used in Production Environments.

I'm just waiting for the final release to start using it in our projects.

Thanks,

Alex Keh-Oracle

ODP.NET Async is part of 23c client. When 23c DB goes GA, the client will also be GA.

The plan is to have DB 23c GA in the first half of 2024.

1 - 5

Post Details

Added on May 3 2019
5 comments
542 views