`
csstome
  • 浏览: 1522440 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Silverlight之out of Browser模式

 
阅读更多

摘要:在Silverlight中所有应用都可以以一种叫做OOB(Out of Browser)模式的方式脱离浏览器运行,在OOB模式下应用程序将获得更多的信任,甚至可以和windows api通信,今天就来看一下如何构建OOB应用。

主要内容:

  1. 什么是OOB
  2. 构建OOB应用
  3. 自定义OOB窗口
  4. OOB应用升级

一、什么是OOB

Silverlight out of browser从字面理解就是脱离浏览器的应用,是可以安装到本地的运行在浏览器外的应用,是一个具有独立窗口的web应用。在OOB模式下silverlight看起来更像是C/S应用,但是它却具有web应用的特性。这样一来就可以让用户像在C/S系统中一样体验绚丽、丰富的Web特性。相比浏览其中运行silverlight来讲,oob除了运行方式不同之外,还会获得更多的权限信任、更多的本地化内容,这样以来很多浏览器中很难做到甚至无法做到的事情在oob中也同样可以实现。目前很多silverlight应用都支持oob模式,例如pptv剧场版就是一个很好的案例:

PPTVOOB

二、构建OOB应用

在Visual Studio中构建OOB应用很简单,只需要简单几步设置即可完成。在此之前先看一下没有对项目做OOB设置之前的情况。

简单建一个silverlight应用,运行之后的状态如下:

NoOOB

点击右键发现当前只有一个菜单:

NoOOBContextMenu

OK,现在对项目进行OOB设置:

在项目中右键Properties,进入Silverlight选项,点击Enable running application out of browser,此时下面的"Out of Browser Setting"按钮将变成可用状态,点击此按钮弹出下面的设置窗口:

OOBSettingUI

然后做如下设置,这里设置了窗口大小、所需图标以及Trust权限(选中该项后安装时需要用户确认):

OOBSeted

图标:cmjLogo16cmjLogo32cmjLogo48cmjLogo128

设置完成后可以直接启动此项目(SilverlightApplicationOOB)进行调试而不必在对于的web项目(SilverlightApplicationOOB.Web)中运行,效果如下:

OOBModeDubug

这里为了对比不妨在浏览器中查看效果:

OOBSetedInBrowser

可以看到在右键菜单中多了一个选项,点击此选项可以直接将程序安装到计算机上,安装时由于之前设置了Trust所以需要用户确认以及设置开始和桌面快捷方式:

OOBTrust

安装完成后就可以直接看OOB下的效果:

OOBInStartMenu

OOBRuning

为了让用户有更好的体验,使用右键进行安装未免不够专业并且用户体验较差,一般情况下会选择使用程序进行安装控制,代码很简单:



在程序中通过Application.Current.Install()方法进行安装,当然在这之前最好进行状态检测看程序是不是已经在浏览器外运行。另外在安装时也可以使用Application.Current.InstallState跟踪安装状态。有了上面的代码接下来就可在界面放一个按钮,然后在不同的状态下动态给用户不同的提示。

XAML代码:

CS代码:

安装完后如何卸载呢,事实上可以按照一般C/S程序的方式卸载,或者在Web中运行此程序右键进行删除。

三、自定义OOB窗口

在上面或许您已经看到了,OOB设置窗口中有以下窗口风格设置:

OOBWindowStyle

这个选项在很多时候是很有用的,上面窗口使用的是默认风格(Default),窗口操作(最大化、最小化、关闭、移动、窗口大小设置)均调用windows api。当然,相应的界面也显得呆板一些,如果你的应用想要拥有炫酷的界面,那么Default或许无法满足你的需求。但是silverlight已经为您预留了接口,后面No BorderBorderless Round Corners就给你无限的遐想空间。下面就来看一下如何自定义一个OOB窗口。

要自定义窗口其实就是要实现最小化、最大化、关闭、窗口移动、窗口大小设置功能,除了窗口大小设置功能之外其他功能均在标题栏实现,而窗口大小的resize操作一般是放到窗口右下角进行的,因此为了便于复用,接下来会创建两个用户控件:TitleBar和ResizeButton。

创建一个silverlight class library项目Cmj.MyWeb.MySilverlight,添加一个UserControl,命名为TitleBar。TitleBar就是标题栏部分,实现最小化、最大化、关闭、窗口移动操作。标题栏主要包括ico、标题文本、最小化按钮、最大化按钮和关闭按钮几部分,这里不妨使用Grid布局将其分为一行五列,分别对应ico、标题和三个按钮。为了使控件在使用时自适应宽度,可以将标题部分所在的列设置为"*",并且注意不要给UserControl设置Width和Height属性,只需要设置DesignWidth和DesignHeight即可。在第一列中放一个Image控件用于显示应用程序图标,在第二列中放一个TextBlock显示标题内容,其余三列放三个Button按钮用于实现窗口最小化、最大化和关闭。然后准备四个图标作为按钮的背景(最大化按钮需要最大化状态和正常状态两个图标):minizizemaximizeNormalmaximizeMaxclose

有了这些之后接下来就需要实现各部分功能了。最小化、最大化只需要设置MainWindow的WindowState即可;关闭时调用Close方法;而拖动操作可以交给Grid来做,在Grid的MouseLeftButtonDown中调用MainWindow的DragMove方法。需要注意的是最大化按钮的图标有两种状态,需要根据不同的状态动态改变图标。

到此为止TitleBar的功能基本上已经实现,但作为一个通用控件最好把一些内容交给使用者来操作以便增加控件灵活性,这里定义Icon、Title、Background属性用户设置标题栏图标、标题内容和标题栏背景。下面是TitleBar前台XAML和后台CS代码:


TitleBar在上面已经完成接下来就来实现窗口的resize操作,在项目中再添加一个UserControl命名为ResizeButton,在ResizeButton中放置Image控件来显示拖拽图标risize,接下来设置UserControl的MouseLeftButtonDown事件调用MainWindow的DragResize方法实现拖拽功能,在MouseEnter和MouseLeave事件中更改鼠标指针为SizeNESW和Arrow,代码如下:


两个控件都已经开发完毕,剩下的工作就是如何使用了。在SilverlightApplicationOOB中引用Cmj.MyWeb.MySilverlight的dll。接着在Main.Xaml中添加命名空间:xmlns:cmj="clr-namespace:Cmj.MyWeb.MySilverlight.MyUserControl;assembly=Cmj.MyWeb.MySilverlight"

(控件前缀任意命名,这里命名为cmj),然后在Main.Xaml中定义TitleBar和ResizeButton并设置相关属性:

下面是安装和运行效果:

CustomWindow

四、OOB应用升级

上面的OOB应用看起来跟在Web中运行没有两样,又可以以类似于B/S的方式运行,但是大家都知道B/S有一个很多的弊端就是升级问题,那么OOB应用如何升级呢?总不能每次运行程序先删除再安装一次吧?事实上OOB模式下升级工作很简单,只要在程序需要升级时修改AssemblyVersion版本(在项目的AssemblyInfo.cs文件中),然后在程序启动时调用Application.Current.CheckAndDownloadUpdateAsync()方法就能完成更新工作,这里将更新操作写到前面OOBInstall类中。为了便于观看效果,在loaded事件中添加更新操作,接着在浏览器中运行并将之前安装的程序删除重新安装。然后对Main.Xaml做稍许改变(在其中添加一个TextBlock),修改版本信息为,1.0.0.1

OOBInstall添加更新方法后:

在MainPage后台代码中调用:

重新编译程序,再启动程序,程序会自动更新,然后提示更细成功:

UpdateSuccessTip

接着重启应用,会发现程序更新后的效果:

Updated

OK,今天就到这里吧!程序下载download

知识共享许可协议 作品采用知识共享署名 2.5 中国大陆许可协议进行许可,欢迎转载,演绎或用于商业目的。但转载请注明来自崔江涛(KenshinCui),并包含相关链接。
分享到:
评论

相关推荐

    Out of Browser存取本地文件系统

    当Silverlight应用以Out of Browser模式运行时,它可以获得更多的权限,比如访问本地文件系统。 **访问本地文件系统的权限** 在默认情况下,Silverlight应用在浏览器中运行时受到严格的沙箱限制,无法直接访问用户...

    Silverlight 客戶端桌面模式(OOB 模式)

    在 Silverlight 的众多特性中,"Out-of-Browser"(OOB)模式是一个特别引人注目的功能,它使得 Silverlight 应用程序能够脱离浏览器独立运行,就像传统的桌面应用程序一样。 **一、OOB模式的引入** OOB 模式是 ...

    Silverlight OOB.rar

    开发者可以使用Visual Studio进行远程调试,首先在项目设置中启用"允许远程调试",然后在运行应用时选择"Out-Of-Browser"模式,Visual Studio会自动连接到运行中的应用进行调试。此外,日志记录和错误处理也是调试...

    Silverlight OOB应用源码

    Silverlight是微软推出的一种富互联网应用程序(RIA)平台,它允许开发者创建具有丰富视觉效果和交互性的应用程序,这些应用程序可以在网页上运行,也可以以“Out-of-Browser”(OOB)模式独立于浏览器运行。...

    Silverlight完美入门.rar

    最后,你将了解Silverlight的部署和生命周期管理,以及如何利用Silverlight OOB(Out-of-Browser)功能,使应用能在桌面环境中运行。 总之,《Silverlight完美入门》涵盖了Silverlight开发的各个方面,无论你是Web...

    silverlight 5安装包

    6. **企业级功能**:Silverlight 5为商业应用提供了更多支持,如Out-of-Browser (OOB)模式,允许应用在浏览器外部运行,提供类似桌面应用的体验。 然而,要充分利用这些特性,开发者需要在计算机上安装Visual ...

    Silverlight.rar

    - **Silverlight for Out-of-Browser (OOB)**:允许应用程序在浏览器外独立运行,拥有类似桌面应用的特性。 3. **开发环境搭建** 开发Silverlight应用,需要安装Visual Studio IDE和Silverlight开发工具。Visual ...

    Silverlight入门

    - **OOB(Out-Of-Browser)应用**:学习如何创建离线应用,提供更丰富的用户体验。 ### 8. 进阶主题 - **MVVM模式**:探讨Model-View-ViewModel模式在Silverlight中的应用,提高代码组织和可测试性。 - **性能优化*...

    silverlight 2.0 安装文件

    6. **OOB(Out-of-Browser)支持**:Silverlight 2.0引入了离线应用功能,允许用户将应用程序安装到桌面,即使没有互联网连接也能运行。 7. **XAML(eXtensible Application Markup Language)**:Silverlight 2.0 ...

    Silverlight漂亮界面主键

    在实际应用中,Silverlight还可以用于创建桌面应用程序(通过Out-of-Browser模式),并且它支持深度集成到.NET框架,这意味着可以充分利用.NET的类库和开发工具。然而,随着Silverlight的逐步淘汰,开发者现在更倾向...

    Silverlight环境下使用调用网页使用超链接

    本主题聚焦于在Silverlight 5环境下,利用Visual Studio 2010(VS2010)开发出一个Out-of-Browser(OOB)应用,该应用能模拟浏览器功能,特别强调了如何在这样的应用中实现对电子地图、网页及超链接的访问。...

    Silverlight教程

    发布应用时,可以将其嵌入网页、作为独立应用或打包成Out-of-Browser (OOB)应用。 ### 九、Silverlight实战 学习Silverlight不仅仅是理论,实践是关键。本教程中的PPT和doc文件将提供详细的步骤,引导你完成从创建...

    Silverlight 4.0

    它支持Out-of-Browser(OOB)运行模式,这意味着应用程序可以像桌面应用一样离线运行,并且能够自定义窗口外观和位置。此外,它强化了RIA(Rich Internet Application)特性,通过WCF RIA Services可以轻松地与...

    Silverlight Developer5.zip

    - **离线应用**:通过Out-of-Browser(OOB)功能,用户可以在不连接互联网的情况下使用Silverlight应用。 - **安全性**:内建的安全机制确保了应用的运行安全,如沙盒环境限制了脚本的执行权限。 **6. 开发流程** ...

    Silverlight.2.0

    Silverlight 2.0引入了离线模式,即Out-of-Browser支持,允许应用程序在没有浏览器的情况下运行,增强了应用的可用性和灵活性。 7. **集成AJAX和Web服务** Silverlight 2.0可以无缝集成AJAX和Web服务,使得应用...

    Silverlight_Developer_5.0.60401.0

    6. **RIA特性**:Silverlight支持异步通信、离线应用、浏览器外运行模式(Out-of-Browser,OOB),以及深度链接和页面导航,提供了丰富的ria特性。 7. **调试工具**:开发工具集成了强大的调试器,可以方便地对...

    silverlight上传示例

    首先,理解Silverlight文件上传的核心是利用Silverlight的浏览器外交互(Out-of-Browser,OOB)特性,以及Silverlight与服务器端通信的手段,如Silverlight的异步编程模型和HTTP请求。Silverlight 4及以上版本提供了...

    Silverlight 2.0 Demo

    此外,还引入了Out-of-Browser(OOB)功能,允许应用程序在浏览器之外运行。 - **Silverlight 4.0**:增强了对RIA的进一步支持,添加了更多控件、打印功能、拖放支持以及对摄像头和麦克风的访问。同时,对于企业...

    Silverlight4开发版与SKD

    - **OOB(Out-Of-Browser)支持**:Silverlight 4应用可以离线运行,无需浏览器支持,增强了应用的可部署性和可用性。 - **多摄像头支持**:对于视频应用,Silverlight 4支持多个摄像头输入,为多媒体应用提供了更...

    使用Silverlight5 在vs2010平台上设计OOB模拟浏览器访问网页

    本项目主要探讨的是如何在Visual Studio 2010中利用Silverlight 5创建一个Out-of-Browser(OOB)应用程序,这种应用程序可以在用户计算机上独立运行,而不是局限于浏览器环境。OOB模式为Silverlight应用提供了更大的...

Global site tag (gtag.js) - Google Analytics