2015-05-13 44 views
1

如何將數據添加到MOngo Db同步?使用異步方法在服務器中添加用戶數據是一個好主意嗎?如何將數據同步添加到Mongo Db?

我有用戶登記表,當上創建按鈕,它應該添加用戶數據蒙戈DB收集用戶的點擊。但在Mongo數據庫網站中,他們解釋了使用c#驅動程序插入數據的異步方法。但我想同步插入它。 1.用戶點擊創建按鈕 2.將數據插入MongoDB 3.向用戶顯示成功消息。

這裏在步驟2中,如果是異步的,它會去第3步沒有完成第2步是否正確? 因此,用戶在完成請求之前將獲得成功消息。這不是一個好主意嗎?

使用異步方法添加用戶信息是否是一種很好的邏輯?

爲什麼C#蒙戈DB驅動程序只提供異步選擇插入\找到數據?

+0

如果使用await,它會鎖定主線程直到它結束。 – Brduca

+0

閱讀我的問題,我認爲它可以幫助:[插入使用InsertOneAsync(.NET驅動程序2.0)新文件] [1] [1]:http://stackoverflow.com/questions/29599412/insert -new-document-using-insertoneasync-net-driver-2-0 – Hana

回答

0

您可以使用關鍵字await輕鬆地將異步調用到同步調用:

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

爲什麼在C#實現驅動程序的所有操作由默認異步?因爲與其他方式同步使用異步API更容易。

此外,通常使用異步API導致一般更敏感和更快的應用,因爲它很容易讓開發人員編寫執行許多同時操作的應用程序。立即取代結果,將正在進行的異步操作存儲在Task中,並在需要時解決它們。有關更多信息,請閱讀MSDN上的文章「Asynchronous Programming with Async and Await」。

+0

感謝您的回答 – Gayathri

1

是否使用異步方法在服務器添加的用戶數據是個好主意?

是的,因爲它允許服務器在等待I/O完成時處理其他請求,即允許相同數量的線程處理更多的請求。

此外,使用.Result.Wait()強制同步是危險的,因爲如果您做得不對,您將會使用run into deadlocks

這是一個好的邏輯,添加使用異步方法,用戶信息?

僅異步意味着服務器可以使用該線程作爲中間的其他東西;這在很大程度上是透明的,即您的代碼不必太在意。出於實用目的,只需撥打await InsertOneAsync(...)或您調用的任何MongoDB驅動程序方法即可。

爲什麼c#mongo db驅動程序只提供異步選項來插入\查找數據?

異步是一個非常具有傳染性的功能:爲了有效地使用異步功能,您的所有代碼必須能夠處理它。

+1

感謝您的幫助 – Gayathri

相關問題