Welcome

首页 / 软件开发 / Silverlight / Silverlight在线:Silverlight在偶尔连接的环境中的应用

Silverlight在线:Silverlight在偶尔连接的环境中的应用2012-07-10 MSDN Dave Brown人们生活在联机的世界中,至少一部分人在一定时间内是这样的。在未来的某一天,也许带宽会超出我们的需要,让我们时时在线,但 今天还不可能。如今,我们只能偶尔连接,偶尔拥有足够的带宽。谁也无法预料在某一时刻会发生什么样的事。

面对这样的现实,为了设计出能够带来最佳用户体验的应用程序,我们有无数的体系结构可以选择。

胖模式及瘦模式的智能客户端均有一个共同的特点,即部署在本地计算机上,因此不需要连接网络即可运行这些应用程序。另一方面, 传统的基于浏览器的应用程序必须连接到远程 Web 服务器才能运行。

在这两种极端情况之间,各种选择越来越多。所有这些选择都提供不同功能让应用程序脱机运行,在 UI 设计上也有不同程度的灵活性 和交互性,还提供了各种级别的安全限制。我们将讨论偶尔连接的应用程序的最新发展,这些应用程序可以提供高度互动的用户体验,并 且可以在浏览器内部或外部运行。我们将提供进行网络连接检测的代码示例,以及在联机时用于上传和下载数据的后台工作程序。

背景

让我们看看本次讨论中涉及的一般应用程序的进化过程。我们的示例从只能在 Windows 操作系统上运行的简单胖客户端应用程序开始 。尽管该程序允许用户脱机工作,但初始解决方案的局限性愈发明显:

要求支持多种操作系统。第一版只支持部分潜在用户。

部署问题导致用户群安装的各个版本出现差异。

由于愈发需要一个能够跨多种操作系统工作、尽量减少部署问题的轻量级解决方案,因此应用程序被重写为简单的瘦客户端 HTML 应用 程序。但是,这又导致了其他一系列问题:

应用程序的 UI 功能受到限制,直观性降低。

需要长时间的浏览器兼容性测试。

在许多用户的网络基础设施上的性能表现不佳。例如,每次用户需要填写表单时都要下载大量参考数据,并且需要大量脚本才能提供验 证中涉及的逻辑。

用户不能脱机使用该应用程序。

很明显,这一版本并未达标。

在这种情况下,最理想也是唯一的解决方法就是拥有直观、灵活的 UI 的富 Internet 应用程序 (RIA)。这种应用程序需要让用户在联 机时管理大量数据并执行异步的数据上传和数据验证,而不需要锁定 UI。它应该支持脱机工作和访问客户端上的数据存储。它应该集成客 户端上的硬件设备,例如照相机。最后,理想的解决方案应该从“开始”菜单或应用程序图标启动,而不是局限在 Web 浏览器中。

Silverlight 可以满足上述这些要求。Silverlight 3 引入了“脱离浏览器的体验”的概念,并在 Silverlight 4 中得到扩展。而且 ,Silverlight 4 还引入了与特定文件夹(如“我的图片”)和硬件设备(如网络摄像机)进行交互的功能。(使用此增强功能的应用程 序将提示用户,该应用程序需要提升信任等级并获得用户同意才能安装。有关受信任应用程序的详细信息,请参见 msdn.microsoft.com/library/ee721083(v=VS.95)。)在本文中,我们将集中探讨构建既可联机工作又可脱机工作的应用程序体系结构时 遇到的一般问题。

图 1 显示了一个粗略的体系结构,可作为候选方案。

图 1 候选的高级体系结构