MongoDB与Silverlight的结合

4

有人在Silverlight中使用过mongodb吗?你使用了哪个驱动程序?Silverlight仅支持异步套接字;但是看起来可用的C#驱动程序是同步的。


3个回答

4
相信不信由你,我在Silverlight中的第一个MongoDB项目是用IronPython和一些C#完成的。这是在2009年,我们使用了类似于0.8或0.9的MongoDB版本......所以已经有一段时间了。
我想这是2.x Silverlight,因此更难实现直接的数据库连接。尽管如此,我仍然建议您按照当时我的路线进行操作。
在服务器端使用REST+JSON API,并通过该API与客户端通信。我们使用Python完成了这个项目,但现在有一些很棒的预构建Mongo REST接口,例如Sleepy Mongoose,如果您不想自己创建。
这样做的最大优点在于安全性问题:即使进行身份验证,客户端到服务器的直接数据库连接也存在用户进入您的数据库的风险...到那时,他们可以为所欲为,因为MongoDB身份验证限制了对数据库的访问,但不限制人们可以看到或删除什么。在某些情况下,这甚至不需要反汇编代码,因为我记得有开发浏览器插件可以让您使用IronPython和IronRuby脚本运行Silverlight应用程序。

还有其他原因,包括同步问题,但总体而言,我认为使用一个干净、安全的服务器接口与Silverlight通信会更好。


问题在于我们正在开发的应用程序是用于MongoDB的管理工具。因此,无法实现服务器端接口。 - Eugeny89

2

最好在服务器上使用官方的10gen MongoDB C#驱动程序,并在其上放置一个轻量级的Web API,可以通过WCF、SOAP、REST等方式被您的Silverlight应用程序消费。


问题在于我们正在为MongoDB开发管理工具。因此,我不想在服务器上使用特殊的东西。但是我喜欢你的想法,关于使用官方的C#驱动程序。但最好通过WCF RIA服务在客户端使用它。 - Eugeny89
前几天我看了一下MongoExplorer,感觉很不错,做得很好! - Chris Fulstow
我们使用的是2009年的旧驱动程序,将其用于Silverlight的异步套接字时遇到了很大的困难。如果我们能够以某种方式使用官方驱动程序,那就太好了! - Eugeny89
你们都提供了一些服务器技巧,但我认为你的答案最接近。给你加50分。 - Eugeny89

1

从Silverlight访问mongoDB似乎不是一个好的实践。

我建议您将所有命令封装在一个干净的WCF服务(可能是数据服务)中,并完全抽象出mongo的管道。

这将允许您精确控制可以执行哪种操作,谁可以执行该命令以及使用可适应性协议。


嗯,我不完全理解你的帖子。你建议使用类似于WCF RIA服务的东西? - Eugeny89
不是特别针对RIA服务,但至少涉及:mongodb <--> 自定义服务(WCF是一种实现方式)<--> 您的应用程序。事实上,您将mongodb特定内容封装在自定义服务中。 - Steve B
嗯,我明白了。也许您可以提供一些类似解决方案的链接?采用某些解决方案是否可能仍然不需要除Silverlight之外的任何东西来运行应用程序?附注:请不要像其他人那样建议在服务器端使用技巧。 - Eugeny89
我的建议是你需要在服务器端创建一个服务。 - Steve B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接