当前位置:  开发笔记 > 编程语言 > 正文

我应该使用c#mongodb驱动程序的同步方法还是异步方法?

如何解决《我应该使用c#mongodb驱动程序的同步方法还是异步方法?》经验,为你挑选了1个好方法。

在c#mongodb驱动程序中,有同步和异步方法,如下所示?

_mongoCollection.InsertOneAsync(entity);
_mongoCollection.Insert(entity);

我相信,在大多数情况下,在数据访问层中异步完成的工作量会很少。因此,我正在等待数据库调用,如下所示:

await _mongoCollection.InsertOneAsync(entity);
await _mongoCollection.DeleteOneAsync(query);
await _mongoCollection.Find(query).ToListAsync();

现在我的问题是:由于我正在等待数据库调用,因此这里没有看到异步方法的使用。那么,我应该使用异步方法吗?(或)我应该使用同步方法吗?



1> sellotape..:

我认为先前的答案缺少异步的要点;也就是说,当您使用异步方法**时,您将在(大部分)I / O操作完成时释放正在使用的线程,并且该线程可在您应用程序的其他位置使用;例如,为其他请求提供服务。

假设Mongo数据库位于另一台服务器上。即使有了快速的网络和快速的Mongo实例,每个命令仍然可能需要5毫秒的时间,在2GHz CPU上,这是1000万个时钟周期。尽管由于各种开销而不会让所有这些代码都可以在运行代码时使用,但是如果您拥有可以高效使用附加线程的应用程序,您仍将获得好处。

因此,如果您的应用是例如网站,API或UI,那么我将使用异步方法。如果它是单线程控制台应用程序,那么您可能不会获得任何上述好处。

-

**这假设Mongo异步方法是真正的异步方法,而不仅仅是同步方法的包装器。

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有