我在网上看到了很多东西,它们展示了如何使用 Silverlight 来增强网页的概念证明教程,方法是将任务交给它以利用线程、操作 DOM、实现类似彗星的功能等。
这一切似乎都很有趣,但是,有没有人有任何真实世界的用例可以分享,因为我似乎找不到很多。
我在网上看到了很多东西,它们展示了如何使用 Silverlight 来增强网页的概念证明教程,方法是将任务交给它以利用线程、操作 DOM、实现类似彗星的功能等。
这一切似乎都很有趣,但是,有没有人有任何真实世界的用例可以分享,因为我似乎找不到很多。
当然。我使用 HTML DOM 交互有几个原因。
首先,将现有 ASP.NET 应用程序迁移到 Silverlight 时。在我们使用的架构中,该应用程序非常基于 AJAX,并带有大量回调。我们无需为 Silverlight 重新发明轮子,而是能够使用 DOM 交互来提供一个桥梁,以便 Silverlight 控件可以以类似的方式回调。这意味着使用 ASP.NET 安全和视图状态信息从服务器获取信息并拉入 Silverlight 应用程序。我们已经以 JSON 格式返回数据,因此可以直接解析回 Silverlight 应用程序。
另一个例子是与第三方控件和服务的交互。例如,Google Analytics 提供了丰富的页面跟踪功能。这个项目提供了一个很好的例子:
http://silverlightanalytics.codeplex.com/
即使您在 Silverlight 中运行应用程序可以集成的位置,您实际上也是在跟踪点击、操作和页面浏览量。
我使用过的另一个地方是 Silverlight 不用作应用程序,而是更多地用作页面上的部件或控件。虽然 Silverlight 控件可以使用本地通信相互通信,但这不适用于其他非 Silverlight 控件。通过使用 HTML-DOM 桥,您可以轻松地在组件之间构建基于 JavaScript 的通信。例如,也许 Silverlight 控件是一个交互式世界地图,可让您浏览到某个区域。当您选择该区域时,它会引发一个 JavaScript 事件,其他控件会根据该原因进行侦听和更新。
您还可以将 Silverlight 用作类似于 Captcha 控件的控件,其中您的表单使用 DOM 桥来验证用户对 Silverlight 应用程序的输入。
我见过标签云应用程序,其中 Silverlight 控件使用 DOM 交互来遍历当前页面,然后基于此生成动画标签云。
希望那些提供一些真实世界的例子。
我使用 DOM-Bridge 的一件事是引发事件。托管我的应用程序的 html 页面订阅这些事件并做出相应的反应。
例如,我的应用程序接收并显示来自 WCF Web 服务的销售数据。当数据发生变化时,会引发一个事件,以便页面的其余部分可以显示其他内容。
如果您不能使用 ASP.Net,那么在 Silverlight 中询问和接收来自 Web 服务的数据比在 Javascript 中更容易且更不容易出错(而且速度也更快,因为您可以使用优化的“binary-xml”编码器)。
我认为 DOM 桥在您分发 Silverlight 应用程序以嵌入任意网站时最有用,在这些网站您无法对后端环境做出假设,但需要提供与 SL 应用程序交互的能力。