`
wangxiaohigh
  • 浏览: 1430019 次
文章分类
社区版块
存档分类
最新评论

Silverlight 结构分析

 
阅读更多

Silverlight是微软提供的一种Web前端应用程序开发框架,是微软RIA的主要应用程序开发平台。Silverlight以浏览器的插件方式,提供丰富的多媒体展示功能以及更多交互性的Web前端解决方案。

本文的重点在于探讨Silverlight的整体架构,以及Silverlight应用程序是如何在浏览器中运行的,各个子部分的作用是什么。

1. 整体结构

Silverlight是以浏览器插件方式运行的,在安装完Silverlight后,我们来看一下安装目录:C:/ProgramFiles/Microsoft Silverlight/4.0.50917.0,主要文件如下:

- npctrl.dll

实现了浏览器plug-in接口,Silverlight通过这个ActiveX控件与宿主浏览器进行交互。该Assembly会调用agcore来进行绘制,以及coreclr来创建CLR,Silverlight应用程序就是依赖于这个CLR中而被运行的。

- agcore.dll

Silverlight Presentation Foundation,包括多媒体展示、基于向量的绘制引擎等等。这个DLL为什么会以“ag”打头哪?在元素周期表中银(Silver)是47号元素,被称为AG(拉丁语),所以微软就把Silverlight的展现层Assembly称为“agcore”了-:)

- coreclr.dll

- mscorlib.dll

- system.*.dll

Coreclr简单来说就是CLR for Silverlight,就是专门为Silverlight而定制的CLR,用来执行Silverlight代码。其他的DLL文件在WPF的类库中都有,只不过现在尺寸小了很多,这是作为浏览器应用所必须的。

下图是Silverlight architecture的图例,你可以把上面的DLL对号入座:

2. CoreCLR

如何才能使.Net代码在Web前端执行,如何才能使我们熟悉的.Net技术继续适用于Web前端,于是微软退出了CoreCLR。简单来说就是CoreCLRbring .NET to Web.

如同CLR可以使得.Net代码在桌面应用程序中执行一样,有了CoreCLR,.Net Framework的代码以及应用程序的代码就可以在浏览器中执行了。

2.1 CoreCLR与CLR

CoreCLR与CLR有什么差别哪?首先两者是基于同一份代码库,其执行引擎完全相同。只是为了使的CLR更适合Web,做了一些事情:

- 基于Web应用场景,对JIT进行优化,加快程序启动时间;

- 只需要提供Workstation GC.


2.2 CoreCLR安全模型

Web应用程序都是不被信任的,你不能容忍一个Web应用程序来操纵用户本地的数据,或者在浏览器中的其他应用程序。

一贯以来,.NET开发人员使用CAS来阻止不受信任的代码执行特权操作。考虑到Silverlight只需一个沙箱,而该沙箱又等同于 Web页面中用来运行脚本的沙箱。CoreCLR简化了安全模型,去掉了CAS模型,定义所有的应用程序代码都是透明代码,信任级别最低,它无法提升权限或访问计算机上的敏感资源或信息。

对于SilverlightOOB的应用来说,可以通过一些配置来使其在受信环境中运行。


2.3 Silverlight BCL

Silverlight base class library是.Net base class library的子集,完全基于原来的代码基构建。为了适应Web应用的需求,做了一些改变:

- 减少尺寸

作为浏览器插件,用户需要快速的下载安装,运行,Silverlight提供的类库必需具有很小的尺寸。所以基于浏览器应用的特点移除一些不必要的特性,例如Console,COM操作,还有CodeAccess Security等等。

- 添加特性

同时也为Silverlight添加了必要的特性功能,例如IsolatedStorage等等。

2.4 跨平台支持

Silverlight提供了一个平台抽象层来支持更多的操作系统例如MacOS X,如下图:

在PAL层上定义了跟Win32相同的API接口,在Mac操作系统上会被重新定向。

3. 运行

3.1 Silverlight运行环境

Silverlight应用程序被托管在浏览器中,通过Silverlight插件加载CoreCLR,然后CoreCLR为应用程序创建AppDomian,最后初始化SilverlightApplication类。

下图是MSDN关于Silverlight运行环境的图例:

3.2 Silverlight运行顺序

最后我们看一下Silverlight应用在浏览器中是如何被执行的:

- 浏览某个带有Silverlight的网页

- 浏览器加载Plug-in

- Plug-in创建CoreCLR以及其他的服务

- 同时浏览器下载xap文件

- CoreCLR创建AppDomain,最后实例化Application类。

全文完。

最近再做一些基于Silverlight的控件开发,感觉需要从结构上来梳理一下Silverlight。

写的比较仓促,希望批评指正。

分享到:
评论

相关推荐

    First.Floor.Software.Silverlight.Spy.v.4.0.3.1

    发现你感兴趣的Silverlight项目,可以使用Silverlight Spy进行侦测,查看部分源代码,以及项目结构,有利于Silverlight项目开发学习。 Silverlight Spy是一个免费的.NET 3.5工具,用来对显示Silverlight 2内容...

    SilverLightSky4.05 include Kegen

    发现你感兴趣的Silverlight项目,可以使用Silverlight Spy进行侦测,查看部分源代码,以及项目结构,有利于Silverlight项目开发学习。 Silverlight Spy是一个免费的.NET 3.5工具,用来对显示Silverlight 2内容的...

    Reflector for.NET(反编译工具)

    它是一个类浏览器和反编译器,可以...经过多年的发展,Reflector for .NET已经发展到了5.1版本,并且提供了相当丰富的插件,利用这些插件我们可以浏览Silverlight程序结构、浏览WPF资源文件、与TestDriven.net集成等

    .Net 十大必备工具之一Reflector 5.1

    相信大名鼎鼎的Reflector for .NET...经过多年的发展,Reflector for .NET已经发展到了5.1版本,并且提供了相当丰富的插件,利用这些插件我们可以浏览Silverlight程序结构、浏览WPF资源文件、与TestDriven.net集成等。

    .Net平台下知识网络系统及其搜索引擎的设计与实现

    分析了树形结构的特点,提出了递归寻路径法,将知识信息层次清晰地展现给用户,并实现节点间路径的获取。通过对Lucene.Net全文检索技术的研究,将其与SQL Server数据库的索引技术相结合,实现了一个高效的检索引擎。

    管家婆分销 ERP A8 TOP9.81

    管家婆分销ERP系列采用B/S结构,应用Internet,企业总部与各分支机构,甚至供应商和代理商在同一平台上协同办公,实现对异地分支机构销售、库存、费用、办公等信息的全方位实时掌控。 产品特点 实施快捷 维护方便 ...

    工作流程引擎.包含大量文档2012813

    运行环境: BS结构. windows xp, windows server. win7 IIS6.0以上. .net4.0. Office2007 (如果需要单据打印.) 开发语言: VS2010, .net4.0 c#.net. 客户端: FireFox 3.0以上. IE7+,或者使用IE内核的浏览器. 组成部分:...

    驰骋工作流引擎源码

    运行环境: BS结构. windows xp, windows server. win7 IIS6.0以上. .net4.0. Office2007 (如果需要单据打印.) 开发语言: VS2010, .net4.0 c#.net. 客户端: FireFox 3.0以上. IE7+,或者使用IE内核的浏览器. 组成部分:...

    2018 猎豹网校 教程大全 资源难找赶紧保存吧

    猎豹网校 高级软件测试分析师[MP4] 猎豹网校 大家可以学的C语言[MP4] 猎豹网校 Windows程序设计 初级课程(二)[MP4] 攻防[MP4] 北风网 C++反汇编基础:Win32平台(逆向实例、动态调试实例)[MP4] 安卓 Android ...

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术

    第1章 服务器控件概述及开发环境部署 .1 1.1 自定义服务器控件 1 1.2 服务器控件在软件开发过程中的作用 1 ...附录a .net 3.5技术教程系列——collection/asp.net ajax/ silverlight/jquery ...646

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    1.4 本文的结构安排 8 第二章 多窗口类浏览器设计 11 2.1 多窗口类浏览器需求分析 11 2.1.1 Activity简介 11 2.1.2 Fragment简介 11 2.1.3 多窗口类浏览器需求 12 2.2 多窗口浏览器模式的实现机制 12 2.2.1安卓...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part1

    注意:由于文件大小为111MB,但本人的上传权限只有60MB,所以分开两部分压缩上传。解压前必须与part2一起解压。...附录a .net 3.5技术教程系列——collection/asp.net ajax/ silverlight/jquery ...646

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part2

    注意:由于文件大小为111MB,但本人的上传权限只有60MB,所以分开两部分压缩上传。解压前必须与part2一起解压。...附录a .net 3.5技术教程系列——collection/asp.net ajax/ silverlight/jquery ...646

    《程序员》杂志2012年第1期.pdf (免费积分下载)

    我们最熟悉的是技术平台(或称开发平台、计算平台),指软件应用能够在其上运行的软件和硬件环境,硬件体系结构、操作系统、API、运行库、编程框架等都是常见的平台。随着Web的普及,浏览器及其插件如Flash和...

    一款非常好的WPF编程宝典2010 源代码

    1.2.5 Silverlight 12 1.3 WPF体系结构 13 1.4 结束语 17 第2章 XAML 19 2.1 理解XAML 20 2.1.1 WPF之前的图形用户界面 20 2.1.2 XAML变体 21 2.1.3 XAML编译 22 2.2 XAML基础 22 2.2.1 XAML名称空间 23 ...

    Apress.Pro.WPF.in.C.Sharp.2008.2nd.Edition.Feb.2008

    1.2.5 Silverlight 12 1.3 WPF体系结构 13 1.4 结束语 17 第2章 XAML 19 2.1 理解XAML 20 2.1.1 WPF之前的图形用户界面 20 2.1.2 XAML变体 21 2.1.3 XAML编译 22 2.2 XAML基础 22 2.2.1 XAML名称空间 23 2.2.2 后台...

Global site tag (gtag.js) - Google Analytics