专注

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

在前例生成的silverlight解决方案中, 除了介绍过的Silverlight项目, 还有一个Asp.Net项目,该项目包含有SilverlightApplication1TestPage.aspx和SilverlightApplication1TestPage.html,打开任意一个文件,你会看到其中都包含<object>标签,如下所示:

image

OBJECT标签定义了一个嵌入的对象,当浏览器解析这部分代码时,会调用第三方插件(通过type属性值来关联)来渲染这部分区域。浏览器要分析这个object, 必须先安装Silverlight 的ActiveX插件,它默认安装在 C:\Program Files\Microsoft Silverlight\3.0.50106.0。

完整的执行流程如下:

1 用户打开浏览器,输入SilverlightApplication1TestPage.html。
2 浏览器下载.html页面,并开始解析页面。
3 当浏览器解析到<object>标签,根据Type值开始加载第三方插件,在这个例子中,type值是application/x-silverlight-2,这是个MIME类型,跟Silverlight3关联。众所周知,浏览器的插件有自己的规范,如果你要自定义插件, 必须实现规定的接口,在Silverlight插件中,实现这些接口的文件是npctrl.dll(位于C:\Program Files\Microsoft Silverlight\3.0.50106.0),它是非托管的windows动态链接文件,这个DLL会构建silverlight运行时,运行时是silverlight程序的运行环境。

Silverlight Presentation Core

Presentation Core 主要负责渲染浏览器里的任何东西,处理用户交互,播放音频,解析XAML。所有这些功能都由 agcore.dll实现,它是个典型的WIN32 DLL。

Silverlight coreCLR

当浏览器加载完Silverlight插件后, 它完成了以下三件事:

  • 启动Silverlight运行时。
  • 下载包含Silverlight程序的.xap文件。
  • 实例化Application对象,显示首页面。

CoreCLR是Silverlight版本的CLR,与.NET Framework的CLR相比,为了适应网络下载,它的大小只有4M左右。CoreCLR功能由coreclr.dll实现(位于C:\Program Files\Microsoft Silverlight\3.0.50106.0),coreclr.dll是个WIN32 DLL,所以它是运行在非托管环境中。

XAP文件

在运行Silverlight程序之前, 浏览器必须先到服务器下载xap文件,xap文件包含运行silverlight程序所以的东西,包括dll,xaml等,你可试着将xap文件改成.zip,再用解压缩文件打开,就可以看到.xap到底都包含了哪些文件。

在我们例子中的.xap文件中, 包含以下2个文件:

AppManifest.xaml
SilverlightApplication1.dll
System.Windows.Controls.Navigation.dll


image

AppManifest.xaml是应用程序清单,silverlight运行时根据这个清单,知道要加载哪些dll,并且哪个dll提供程序的入口,

image

通过以上的文件,我们可以知道程序入口是SilverlightApplication1.App,App继承自System.Windows.Application, 这个对象位于SilverlightApplication1.dll中。

程序启动

当silverlight运行时已经启动,.xap文件已经下载到本地,一切准备工作就算完毕了, 接下来就是运行silverlight程序,流程如下:

1 实例化SilverlightApplication1.App对象。
2 执行Application.Startup事件委托。该委托实际调用Application_Startup(),在该方法中实例化MainPage对象并将其赋于App.RootVisual。
3 调用MainPage.InitializeComponet。
4 调用App.InitializeComponet。在该方法中调用Application.LoadComponent(),LoadComponent()根据xaml文件构建App对象。

posted on 2011-02-12 20:52  中金黄金  阅读(487)  评论(0编辑  收藏  举报