2012-02-01 59 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

相关问题