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类。