Silverlight – 浏览器外应用程序
Silverlight – 浏览器外应用程序
我们现在将探索 Silverlight 对可以安装在最终用户机器上的应用程序的支持,以便像普通的 Windows 应用程序一样在 Web 浏览器之外运行。您可能希望应用程序能够在浏览器外运行的三个主要原因 –
- 相互作用
- 离线
- 提升信任度
相互作用
它可以实现更好的交互设计。Web 的导航模型不是特别适合某些应用程序。例如,地址栏和返回按钮可能会浪费空间,而且毫无用处。
Silverlight 的重要性如下所示 –
-
Web 应用程序可以使用客户端技术(例如 Silverlight、Flash 或 AJAX)为单个页面提供持续更新,或许无需导航到其他页面。
-
在某些应用程序中,用户可能会在浏览器认为是单个页面的内容上花费几分钟甚至几个小时。
-
对于此类应用程序,“后退”按钮最终会产生相当令人惊讶的退出应用程序效果,因为它会将您转回到进入应用程序之前所在的任何页面。
-
显然,非 Web 类应用程序通常通过运行在浏览器之外更好地提供服务,因为这摆脱了 Chrome 浏览器。通常,可用性不是浏览器耗尽的唯一原因。
离线
使用此功能的另一个原因是启用离线执行。当为浏览器外操作安装 Silverlight 应用程序时,它会被复制到本地计算机上的每个用户存储库中,并通过用于启动应用程序的常用操作系统机制(例如 Windows 上的“开始”菜单)变得可用。
-
即使用户没有互联网连接,该应用程序也将可用。
-
显然,这仅对不完全依赖服务器端信息的应用程序有帮助。
-
例如,如果没有网络连接,包裹递送服务的自动跟踪应用程序就没有多大用处。
-
对于某些应用程序,在偶尔出现连接故障期间继续工作的能力非常有用。
提升信任度
Silverlight 的第 4 版增加了对受信任应用程序的支持。Silverlight 的安全沙箱通常会阻止某些特权操作,例如访问用户的文件。
但是,浏览器外的应用程序可能会请求提升。如果用户批准了该请求,应用程序就能够完成任何普通 Windows 应用程序能够完成的更多工作,例如使用 COM 自动化或自定义窗口边框。
在浏览器中运行的应用程序永远不会被信任,所以如果你想使用这些功能,你必须编写一个浏览器外的应用程序。
启用OOB
我们如何编写浏览器外应用程序?这很容易。我们必须在 Silverlight 的项目属性中更改单个设置,它只会向AppManifest.xaml添加一个合适的设置。
让我们看看它是如何工作的。
-
当您的清单指示支持浏览器外执行时,这没有初始效果。该应用程序将像往常一样在浏览器中运行。
-
但是,如果用户右键单击,标准 Silverlight ContextMenu 会提供一个额外的项目来在计算机上安装应用程序。
-
如果用户选择该项目,则会出现一个对话框,要求确认。它还询问是否可以从“开始”菜单、桌面或两者访问应用程序。
-
您不必依赖上下文菜单。您还可以提供一个按钮,用户可以单击该按钮来安装应用程序,因为有一个 API,您可以调用它来启动安装。
-
当您以编程方式开始安装时,用户仍会看到该对话框。未经用户同意,您不能安装您的应用。
Silverlight 应用程序
这是一个非常简单的 Silverlight 应用程序。下面给出的是它的 XAML 代码。
<UserControl x:Class = "SimpleOob.MainPage" xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable = "d" d:DesignHeight = "300" d:DesignWidth = "400"> <Grid x:Name = "LayoutRoot" Background = "White"> <Border BorderBrush = "Blue" BorderThickness = "4" CornerRadius = "20" > <Border.Background> <LinearGradientBrush StartPoint = "0,0" EndPoint = "0,1"> <GradientStop Offset = "0.0" Color = "White" /> <GradientStop Offset = "0.15" Color = "#cef" /> <GradientStop Offset = "1.0" Color = "White" /> </LinearGradientBrush> </Border.Background> <TextBlock HorizontalAlignment = "Center" VerticalAlignment = "Center" Text = "Silverlight Application" TextOptions.TextHintingMode = "Animated" TextAlignment = "Center" TextWrapping = "Wrap" FontSize = "72" FontFamily = "Trebuchet MS" > <TextBlock.Effect> <DropShadowEffect Color = "#888" /> </TextBlock.Effect> </TextBlock> </Border> </Grid> </UserControl>
步骤 1 – 要启用浏览器外执行,请转到项目的Properties,然后单击 Silverlight 选项卡。我们需要做的就是 –在浏览器中选中启用正在运行的应用程序复选框。
如果您运行此应用程序,您会注意到您根本不会获得 Web 浏览器。
事实上,Visual Studio 已经代表你做出了决定。当您启用浏览器外执行时,它不公平地更改了您的调试设置。
第 2 步– 因此,在解决方案资源管理器中,注意 Silverlight 项目现在以粗体显示,表明它是一个启动项目。
以前不是这样。它曾经是网络项目。现在,我们不希望那样,因为我们想展示该复选框如何为最终用户更改内容。
第 3 步– 我们将网络项目设置回启动项目。
第 4 步– 再次运行该应用程序,您将看到该应用程序现在又回到了浏览器中。
步骤 5 – 右键单击网页。您会在上下文菜单中注意到通常的 Silverlight 条目,以及要安装的额外项目。
步骤 6 – 当您选择第二个选项时,安装应用程序对话框如下所示。
请注意,它显示了应用程序来自的网站的根 URL。我们使用的是 Visual Studio 提供的本地调试 Web 服务器,这就是为什么它说 localhost。
步骤 7 – 单击OK,应用程序在与浏览器分开的自己的窗口中运行。
可能很自然地认为该窗口以某种方式归浏览器所有或连接到浏览器,但事实并非如此。你可以关闭浏览器,这个窗口会一直存在。更重要的是,您可以关闭此窗口,然后完全不使用浏览器重新运行应用程序。
步骤 8 – 如果您在“开始”菜单中打开“搜索”对话框并开始键入应用程序名称,它会像任何普通的 Windows 应用程序一样显示。
第 9 步– 您可以在浏览器不在视线范围内的情况下运行它。
卸载应用程序
应用程序上的默认上下文菜单提供了一种简单的方法来做到这一点。用户可以合理地期望像卸载任何其他应用程序一样卸载它。
您也可以通过右键单击网页并选择删除此应用程序…来删除。
带外设置
尽管我们只需要更改一个设置即可启用浏览器外操作,但实际上,您通常需要做更多的事情。该AppManifest.xaml文件可以包含相关的几个设置外的浏览器操作,即我们通常通过Visual Studio配置。
您可能已经注意到,当您选中复选框以启用运行 out-ofbrowser 时,Visual Studio 启用了一个标记为Out-of-Browser Settings的按钮。
让我们通过单击按钮来看看它。它将产生以下对话框。
-
我们可以配置的第一件事是显示为Window Title的文本。
-
我们还可以选择修复窗口尺寸和位置,但我们暂时将它们保留为自动。
-
此快捷方式名称显示在“开始”菜单中,以及安装应用程序后的桌面链接中。
-
它也是出现在上下文菜单和安装应用程序对话框中的文本。
-
当我将鼠标悬停在快捷方式上时,此应用程序说明会出现在工具提示中。
-
我们可以提供各种尺寸的图标。这些必须内置到您的项目中。