如何同步向Mongo Db添加数据?

时间:2015-05-13 13:17:28

标签: c# asp.net .net mongodb mongodb-.net-driver

如何同步向MOngo Db添加数据?使用异步方法在服务器中添加用户数据是一个好主意吗?

我有用户注册表单,当用户点击“创建”按钮时,它应该将用户数据添加到Mongo数据库集合中。但是在Mongo db站点中,他们已经解释了使用c#驱动程序插入数据的异步方法。但我想同步插入它。 1.用户单击“创建”按钮 2.将数据插入Mongo DB 3.向用户显示成功消息。

这里在步骤2中,如果它是异步的,它将转到步骤3而不完成第2步正确吗? 因此,用户将在完成请求之前获得成功消息。这不是一个好主意吗?

使用异步方法添加用户信息是一个很好的逻辑吗?

为什么c#mongo db驱动程序只提供插入\ find数据的异步选项?

2 个答案:

答案 0 :(得分:1)

  

使用异步方法在服务器中添加用户数据是一个好主意吗?

是的,因为它允许服务器在等待I / O完成时处理其他请求,即允许相同数量的线程处理更多请求。

另外,使用.Result.Wait()强制同步是危险的,因为如果你做得不对,你会run into deadlocks

  

使用异步方法添加用户信息是一个很好的逻辑吗?

异步只意味着服务器可以使用该线程来处理其他内容;这在很大程度上是透明的,即您的代码不必太在意。出于实际目的,只需调用await InsertOneAsync(...)或您正在调用的任何MongoDB驱动程序方法。

  

为什么c#mongo db驱动程序只提供插入\ find data的异步选项?

异步是一种非常“传染性”的功能:为了有效利用异步功能,您的所有代码都必须能够处理它。

答案 1 :(得分:0)

您可以使用await关键字轻松将异步调用转换为同步调用:

var results = await collection.Find(conditions).ToListAsync();

为什么C#驱动程序默认将所有操作实现为异步?因为与其他方式相比,同步使用异步API更容易。

此外,通常使用异步API会导致应用程序响应更快,速度更快,因为它使开发人员可以轻松编写执行许多同时操作的应用程序。而不是立即await结果,将正在进行的异步操作存储在Task中,并在需要时解决它们。有关详细信息,请阅读MSDN上的文章“Asynchronous Programming with Async and Await”。

相关问题