Silverlight 和 .NET 应用程序使用不同 CLR 意味着你不克当片独针对 .NETSilverlight以浏览器的插件方式。

Silverlight 2  包含一个 CLR,但并无是另外 .NET 应用程序和次序集应用的
CLR. Silverlight CLR 也称之为 CoreCLR,在规划时充分考虑了不同用途。CoreCLR
专也跨越平台互操作性而规划,可及 CLR
同时运转并支持不同之平安模型与不同版本的根底类库。

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

CoreCLR 是 Silverlight 使用的虚拟机。它仿佛于为 .NET Framework 2.0
及重新强版本提供强有力力量的 CLR,也包含相似的类型加载与废品收集 (GC) 系统。

正文的显要在于探究Silverlight的圆架构,以及Silverlight应用程序是什么在浏览器被运行的,各个子有些的来意是呀。

CoreCLR 采用非常简单的代码访问安全性 (CAS) 模型——它比桌面 CLR
更简便,Silverlight
只需要在应用程序级别强制执行安全策略。这是坐当单身为阳台的 Web
客户端,它不克凭任何异常之现企业或者机器策略,而且也非该允许用户改现有政策。但为产生一对例外情况,比如
OpenFileDialog 和
IsolatedStorage(存储配额更改),在这种情况下,Silverlight
需要用户之鲜明同意才会打破沙箱的默认规则集。OpenFileDialog
用于访问文件系统,而 IsolatedStorage
的意图是造访名义上隔断的囤积并提高存储配额。

 

Silverlight 和 .NET 应用程序使用不同 CLR 意味着你不克当少数独针对 .NET
应用程序和 Silverlight 应用程序的种遭到援和一个程序集。主要问题来当
mscorlib 程序集齐。Silverlight
正常使用所欲的成效集聚非常小-仅仅是基础。但另外 .NET
程序集还如链接标准版本的 mscorlib,这虽是问题所在。

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对号落座:

 

图片 1

 

MSDN杂志及出零星篇稿子详细的座谈了CoreCLR:

2.      CoreCLR

哪些才会使.Net代码在Web前端执行,如何才能够如我们耳熟能详的.Net技术接轨适用于Web前端,于是微软出了CoreCLR。简单来说即使是CoreCLRbring
.NET to Web.

像CLR可以使得.Net代码在桌面应用程序中实行同样,有了CoreCLR,.Net
Framework的代码和应用程序的代码就好在浏览器被履行了。

使用 CoreCLR
编写Silverlight:http://msdn.microsoft.com/magazine/cc721609

2.1  CoreCLR与CLR

CoreCLR和CLR有啊异样哪?首先两者是基于相同份代码库,其实行引擎完全相同。只是为着使之CLR更切合Web,做了有的事务:

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

–   只需要提供Workstation GC.

Silverlight 2 中之安全性:http://msdn.microsoft.com/magazine/cc765416

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,如下图:

 

图片 2

当PAL层上定义了跟Win32同等的API接口,在Mac操作系统及会叫还定向。

 

3.      运行

3.1  Silverlight运行条件

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

生图是MSDN关于Silverlight运行条件之图例:

 

图片 3

 

3.2  Silverlight运行顺序

最后咱们看一下Silverlight应用在浏览器被凡是安让执行之:

–   浏览某个带有Silverlight的网页

–   浏览器加载Plug-in

–   Plug-in创建CoreCLR以及任何的劳动

–   同时浏览器下载xap文件

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

 

图片 4

全文完。

最近再次举行有根据Silverlight的控件开发,感觉用打构造上来梳理一下Silverlight。

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

 

作者:Ted    葡萄城资深架构师,控件产品专家

相关文章