2012-02-01 87 views
0

我正在構建一個必須與MongoDB數據庫進行通信的小應用程序。當然,在DB前面有一個web服務,我是而不是試圖直接從silverlight訪問數據庫。起初我想這個服務返回BSON對象以便客戶端管理它們。將BSON傳遞給Silverlight客戶端?

這甚至可能嗎?看起來我甚至無法將BSON驅動程序的dll添加到Silverlight應用程序(它們在關閉「添加引用」對話框後立即從引用中消失,這似乎表明它們與Silverlight不兼容)。

或者我可能完全迷失了,誤解了一切?這是我第一次嘗試用MongoDb ...

謝謝!

回答

0

爲什麼要操縱客戶端上的BSON對象?

我會說:讓mongodb驅動程序處理BSON,然後將數據轉換爲更可用的格式(JSON/XML或類似)並將其傳遞給silverlight客戶端。

這是更好,因爲:

  1. 客戶不知道基礎數據庫。如果BSON格式升級會怎麼樣?您將不得不重新編譯和部署所有客戶端。

  2. 客戶端不知道底層數據庫。它使用自己的基於JSON(XML)的協議與服務器進行通信。您甚至可以將DB切換到MySQL,並且客戶端不會注意到。

+0

是的,這是我採取的路線。我的推理是我可能會有很多數據,並且我認爲這是一種雙重轉換,一種是從BSON格式轉換爲交換格式(如JSON),然後從這種格式轉換爲最終的客戶端可處理格式。只是不想做兩次,一次在服務器上,一次在客戶端... – Palantir 2012-02-01 08:11:14

+0

@Palantir:這是一個微型優化。我相信你有更大的事情要擔心:-) – 2012-02-01 08:13:19

+0

對@SergioTulentsev最大的尊重,這是一個警察。我所從事的應用程序通過大量客戶小批量傳輸數據。我們添加了BSON序列化選項,並使用共享查找表從字符串字段名切換爲整數。新格式約爲JSON數據大小的50%(類似於協議緩衝區),解析速度也快了1/3。它將爲我們節省大量帶寬成本。我們爲iOS客戶端使用了.NET服務器,但您可以嘗試使用Silverlight的這個lib:http://code.google.com/p/mongodb-silverlight-driver/。因人而異。 – 2012-07-11 13:30:43

相關問題