Silverlight 3 OOB 名词解释 OOB (Out of Browser): Silverlight 3新特性之一。在浏览器中运行的Web应用界面与传统桌面软件比起来总是死板,不够灵活的。因此,人们就产生了需求,想在浏览器之外运行web应用。Adobe的Air可以实现这个功能,而Google的解决方案是Chrome里的shortcuts。给Web应用建立了shortcuts之后,就可以

Silverlight 3 OOB

名词解释

OOB (Out of Browser): Silverlight 3新特性之一。在浏览器中运行的Web应用界面与传统桌面软件比起来总是死板,不够灵活的。因此,人们就产生了需求,想在浏览器之外运行web应用。Adobe的Air可以实现这个功能,而Google的解决方案是Chrome里的shortcuts。给Web应用建立了shortcuts之后,就可以按照人们习惯的方式启动这个应用,而界面也很传统软件非常接近了。微软的解决方案则是Mesh,或者最新的Silverlight OOB功能。

原理简析

分离程序

当用户第一次浏览应用程序可能是在浏览器的某个位置。当你的程序支持out-of-browser(OOB)体验时,用户可以通过引起事件分离程序。接着会出现下面的情况:

该动作捕获浏览器(例子中虚拟地址 http://foo.com/mysloob.xap)并创建一个OOB程序。

  • 程序(XAP)需要再一次通过浏览器请求数据。
  • 当XAP下载时,在低信任区域中取得本地存储的元数据,包括XAP的原始URI元数据以及重要的ETag信息(本质上是时间戳)。

首次运行OOB

如果我们关闭程序并再次在桌面上运行程序:

在这种情况下程序会检查它的元数据XAP的原始URI并进行一次请求。对比HTTP的响应数据(代码以及Etag)。如果程序没有更新,程序会正常运行。事实上,程序的检查请求基本上会是这样:

  1. GET /silverlight/oob/ClientBin/OutOfBrowser.xap HTTP/1.1
  2. If-Modified-Since: Thu, 19 Mar 2009 03:52:35 GMT
  3. User-Agent: Silverlight
  4. Host: timheuer.com
  5. X-P2P-PeerDist: Version=1.0
  6. Accept-Encoding: peerdist
  7. HTTP/1.1 304 Not Modified
  8. Last-Modified: Thu, 19 Mar 2009 03:52:15 GMT
  9. Accept-Ranges: bytes
  10. ETag: "f2e3a81746a8c91:445"
  11. X-Powered-By: ASP.NET
  12. Date: Thu, 19 Mar 2009 03:55:18 GMT

需要注意的是HTTP 304 Not Modified的响应。没有更新信息发送时我们可以看到没有传递信息。程序不会发生变化。在API层,作用于改变DetachedUpdatesAvailable状态的Application.Current.ExecutionState没有被触发。

用户从桌面运行,程序升级

现在我们更新程序并上传到服务器。用户下一次运行程序时,同样的请求出现:

再一次,请求发送元数据信息。不过这次,有更新了。过程也是加倍的。连同响应发送了新时间戳/ETag,请求同样包括了更新程序。请求会是这样的:

  1. GET /silverlight/oob/ClientBin/OutOfBrowser.xap HTTP/1.1
  2. If-Modified-Since: Thu, 19 Mar 2009 03:52:35 GMT
  3. User-Agent: Silverlight
  4. Host: timheuer.com
  5. X-P2P-PeerDist: Version=1.0
  6. Accept-Encoding: peerdist
  7. HTTP/1.1 200 OK
  8. Content-Length: 15557
  9. Content-Type: application/x-silverlight-app
  10. Last-Modified: Thu, 19 Mar 2009 03:56:29 GMT
  11. Accept-Ranges: bytes
  12. ETag: "ce39d0ae46a8c91:445"
  13. X-Powered-By: ASP.NET
  14. Date: Thu, 19 Mar 2009 03:56:45 GMT  17: <data>

“data”之上的部分事实上是更新XAP的数据(注意Content-Length与Content-Type headers)。

  • Application.Current.ExecutionState改变为DetachedUpdatesAvailable 状态。
  • 本地存储的XAP更新了数据。

当前还没有选项可以拒绝更新数据。如果程序已更新,用户就会获得它们。这是开发团队考虑到不同使用环境的设定。同样的,不能强制用户关闭程序或者阻止程序继续使用。在某种意义上,你或许可以通过更新程序使下次运行时屏蔽UI。再次运行程序(从本地机器)会进行数据更新,更新请求会跟首次相近:

  1. GET /silverlight/oob/ClientBin/OutOfBrowser.xap HTTP/1.1
  2. If-Modified-Since: Thu, 19 Mar 2009 03:56:49 GMT
  3. User-Agent: Silverlight
  4. Host: timheuer.com
  5. X-P2P-PeerDist: Version=1.0
  6. Accept-Encoding: peerdist
  7. HTTP/1.1 304 Not Modified
  8. Last-Modified: Thu, 19 Mar 2009 03:56:29 GMT
  9. Accept-Ranges: bytes
  10. ETag: "ce39d0ae46a8c91:445"
  11. X-Powered-By: ASP.NET
  12. Date: Thu, 19 Mar 2009 03:57:12 GMT

上述是Silverlight 3 OOB的基本原理。当程序被分离,与app相关元数据被存储。每一次运行时检查一次元数据,确认升级是否可用。如果程序离线,也不会阻止程序运行。这与部署.NET Framework的ClickOnce观念类似。

转载于:https://www.cnblogs.com/Areas/archive/2011/08/26/2154592.html

Silverlight 3 OOB 原理相关推荐

  1. Silverlight的OOB特性

    Out Of Brower 传输层协议使用带外数据(out-of-band,OOB)来发送一些重要的数据,如果通信一方有重要的数据需要通知对方时,协议能够将这些数据快速地发送到对方.为了发送这些数据, ...

  2. Silverlight实例教程 - Out of Browser开篇

    众所周知,学习一门IT技术,最关键的是实践,无论是软件开发还是网络调试,只要在真实环境下勤于动手和思考,很快就能掌握一门技术,Silverlight也不例外.为了帮助更多朋友快速学习掌握Silverl ...

  3. 分享Silverlight/WPF/Windows Phone一周学习导读(06月13日-06月18日)

    分享Silverlight/WPF/Windows Phone一周学习导读 本周Silverlight学习资源更新: 小D学blend-----优美简洁的mp3播放器 D调の幸福 Silverligh ...

  4. 分享Silverlight/WPF/Windows Phone一周学习导读(1月17日-1月23日)

    上周微软Silverlight团队发布"微软发布Silverlight Native Extensions 1.0 - 扩展OOB应用功能",对于Silverlight开发人员而言 ...

  5. 分享Silverlight/WPF/Windows Phone一周学习导读(10月16日-10月22日)

    分享Silverlight/WPF/Windows Phone一周学习导读(10月16日-10月22日) 本周Silverlight学习资源更新 Silverlight:分包下载及SEO优化方案 菩提 ...

  6. Silverlight - Out of Browser配置,安装和卸载

    Silverlight 实例教程索引 Silverlight 实例教程 - Out of Browser开篇 Silverlight 实例教程 - Out of Browser配置,安装和卸载 Sil ...

  7. 一起谈.NET技术,Silverlight实例教程 - Out of Browser的Debug和Notifications窗口

    Silverlight 实例教程索引 Silverlight 实例教程 - Out of Browser开篇 Silverlight 实例教程 - Out of Browser配置,安装和卸载 Sil ...

  8. Silverlight Com组件支持全解析

    从4月份Mix 10大会微软发布 Silverlight 4 至今,SL的第四个4版本的推出已经历时半年之久, 昨日在SBlakeMore.Com上看到一组关于采用Silverlight Com组件实 ...

  9. Silverlight实例教程 - Out of Browser的Debug和Notifications窗口

    熟悉Silverlight的朋友应该知道,Silverlight从1.0版本到现在的4.0版本,其功能性越来越强大,从下图我们可以看出,Silverlight的应用模型的一个转变过程,从Javascr ...

最新文章

  1. python【蓝桥杯vip练习题库】ALGO-140 P1101(提货单)
  2. 编程软件python怎样开始学-Python 3.7从零开始学
  3. 从单体应用到微服务架构演化
  4. session过期设置
  5. JSON序列化(stringify)对象时排除某些属性的两种方法
  6. 游戏中的整容术! 《Honey Select》捏人系统剖析
  7. Django基础必备三件套: HttpResponse render redirect
  8. JavaWeb知识总结
  9. fedora nginx php,在fedora16下安裝nginx + php-fpm
  10. libiconv安装
  11. 2020-10-13 Comsol学习1
  12. ps里文字变形、、、
  13. 环境工程学(整理知识点)
  14. 阿里云域名的注册到使用流程
  15. DLP Lightcrafter™ 4500 EVM常见问题答疑
  16. Gsensor驱动调试
  17. 【Educational Codeforces Round 61 (Rated for Div. 2) D.Stressful Training】二分
  18. 计算机考试综合模块怎么做,《综合素质》几大模块备考指导要知道!
  19. L.G.Hassebrook团队结构光论文记录
  20. 集成百度ORC 识别报 Fatal signal 11 (SIGSEGV) (RenderThread) 错误(已解决)

热门文章

  1. NVIDIA DLI 深度学习培训 | 北京 上海两站新年火热来袭
  2. php 5 windows,PHP 5.5 正式版发布,不再支持 Windows XP
  3. echarts 三环圆环_echarts实现环形进度图
  4. linux里面vim自动显示行号,linux中vim永久显示行号、开启语法高亮
  5. mysql 插入 point_mysq Point类型 查询和插入操作:insert和select
  6. 浪潮服务器 虚拟光驱,使用IPMI功能远程安装Windows Server 2003操作系统步骤
  7. ap心理可以用计算机吗,AP考试哪些科目需要使用计算器
  8. ESXI忘记密码怎么办
  9. 切换图片 ImageSwitcher
  10. querydsl动态 sql_Spring data jpa 复杂动态查询方式总结