Silverlight运行原理 解析综合版(一)

Silverlight运行原理

Silverlight通过什么方式和服务器端的托管代码进行交互。
Silverlight也许是把托管dll下载到本地执行。
用工具跟踪http请求后,果然如此。

1. IE加载页面后。IE缓存中加载了 HTML页面、Silverlight.JS、XAP应用程序包。

Silverlight运行原理 解析综合版(一)_第1张图片

2.FF调试网络通信发现。先加载HTML页面-- Silverlight.JS---得到一个LInkID--- XAP应用程序包—安装Silverlight的图片

Silverlight运行原理 解析综合版(一)_第2张图片
-得到一个LInkID,其实也是下面那个图片。PNG也是那个图片

Silverlight运行原理 解析综合版(一)_第3张图片

Silverlight运行原理 解析综合版(一)_第4张图片

原来Silverlight按xaml里指定的类库名,下载相应的 .dll和 .pdb文件(他们结合在一起是一个 XAP应用程序文件包)到客户端,在本地环境加载后执行。
这样看来,下载完所有库后,Silverlight运行原理就和Winform是一样的了。
同样的原因,Silverlight项目编译的文件都放在ClientBin 的目录下,就是说这个目录的文件都是要下载到客户端运行的。用于支持Silverlight的运行。

那么为什么应用程序已经下载下来了。却还是可以在断点调试啊。这个和ASP.NET的原理是一样的。IIS的虚拟目录指向的就是你的VS中的项目目录。而VS中的调试是针对于IIS的请求的处理。 Silverlight3.0 JS代码和后台调试的关系是后台代码可调试,而JS不可调试。是因为下面写了

Silverlight调试 指的是什么

VS为什么可以响应JS调试:调试前的设置你会发现。JS调试必须先把浏览器的禁用调试设置不选。这证明其实JS的调试虽然是通过VS来运行的。可VS在调试JS中时的作用和FireBUG一样的。都是针对浏览器调试的。而为什么有人说调试JS时,后台就没办法调试。JS调试针对是浏览器的。后台调试是针对IIS的请求的。所以这样时他们是没有冲突的。

测试前注意:IE开禁用脚本调试

不选择 Silverlight调试时。XAML的后台断点被忽略。JS和后台代码都可以调试。

当开Silverlight调试时,JS代码的VS调试器提示不能用。因为他开一个用于检测Silverlight了。所以说JS调试和Silverlight冲突。Silverlight运行原理 解析综合版(一)_第5张图片

结构:

Silverlight运行原理 解析综合版(一)_第6张图片

Ø Silverlight 项目文件结构

一个标准的Silverlight项目一般包括如下几个部分:

² Web页面:用于嵌入或是宿主基于Silverlight的应用程序。

在部分包含了两个独立的javascript文件,这两个javascript脚本分别用于创建silverlight和检查本地是否安装silverlight插件。

一个

中包含Silverlight,它由中的