一起谈.NET技术,从原理来看Silverlight 4的架构
2011-09-01 23:43
726 查看
简介
在前文<<初识Silverlight 4及其架构>>谈到要从多个方面来了解:Silverlight的原理,处理周期,部署,安全性,伸缩性,分布式计算能力,容错能力,等等等等。这篇从原理的角度来看Silverlight 4架构相关的一些事情。
浏览器的插件
前文已经介绍过,整个Silverlight平台中包括一个安装器。这个安装器负责将浏览器插件安装上,并在客户浏览器那里搭建起运行Silverlight程序的基础环境。初次浏览Silverlight内容的客户必须先安装一个浏览器插件。安装了插件之后,插件安装程序向IE, Firefox等浏览器注入了插件。我们可以在浏览器中的扩展管理中看到,如图1和图2:
图1
图2
同时我们可以看到文件夹C:\Program Files\Microsoft Silverlight\4.0.50826.0建立了。其中的文件有:
那么,在浏览器中的插件是怎么注册上去的呢? 让我们来看看注册表。
IE的插件:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{32C73088-76AE-40F7-AC40-81F62CB2C1DA}
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{DFEAF541-F3E1-4c24-ACAC-99C30715084A}
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{DFEAF541-F3E1-4c24-ACAC-99C30715084A}\InprocServer32
其键值是: c:\Program Files\Microsoft Silverlight\4.0.50826.0\npctrl.dll
Firefox的插件:
HKEY_LOCAL_MACHINE\SOFTWARE\MozillaPlugins\@Microsoft.com/NpCtrl,version=1.0
Path=c:\Program Files\Microsoft Silverlight\4.0.50826.0\npctrl.dll
ProgId: AgControl.AgControl.4.0
增加的MIME类型:
MIME: application/x-silverlight
MIME: application/x-silverlight-2
Silverlight如何工作?
Silverlight是以宿主浏览器为基础环境的。npctrl.dll作为插件直接与宿主浏览器接口。npctrl.dll本身是个ActiveX控件,可以供我们调用。npctrl.dll会调用agcore.dll来处理一些非托管的API, 也会调用coreclr.dll来创建一个CLR。我们编写的Silverlight应用程序是运行在coreclr.dll创建的CLR当中的。这个图可以很好地帮你理解:
图3
注:
npctrl.dll:Silverlight plug-in
agcore.dll and coreclr.dll:Core services
CLR execution engine 和相关的AppDomain都是由coreclr.dll搭建的。我们的Silverlight程序运行在其中。
Silverlight Runtime
有一些文章提到了Silverlight Runtime这个术语。指的就是在用户机器上安装的用来运行Silverlight程序的环境。这篇文章提到的内容都是关于Silverlight runtime的。我们可以再多看看C:\Program Files\Microsoft Silverlight\4.0.50826.0目录下的文件。比如BCL所在的mscorlib.dll,注意到其大小没有,它比通常的Desktop安装,即普通的.net framework安装的mscorlib.dll小了不少。还有System.Windows.dll也是。我们可以查看一下其中的类型。其类型与普通的.net framework的System.Windows.dll差别挺大。
结束语
到目前为止,我们只看到了一点点MSDN上没有讲的东西。还有很多东西有待我们去发掘。
在前文<<初识Silverlight 4及其架构>>谈到要从多个方面来了解:Silverlight的原理,处理周期,部署,安全性,伸缩性,分布式计算能力,容错能力,等等等等。这篇从原理的角度来看Silverlight 4架构相关的一些事情。
浏览器的插件
前文已经介绍过,整个Silverlight平台中包括一个安装器。这个安装器负责将浏览器插件安装上,并在客户浏览器那里搭建起运行Silverlight程序的基础环境。初次浏览Silverlight内容的客户必须先安装一个浏览器插件。安装了插件之后,插件安装程序向IE, Firefox等浏览器注入了插件。我们可以在浏览器中的扩展管理中看到,如图1和图2:
图1
图2
同时我们可以看到文件夹C:\Program Files\Microsoft Silverlight\4.0.50826.0建立了。其中的文件有:
驱动器 C 中的卷没有标签。 卷的序列号是 A474-0C97 C:\Program Files\Microsoft Silverlight\4.0.50826.0 的目录 2010/09/26 11:10 <DIR> . 2010/09/26 11:10 <DIR> .. 2010/08/26 00:59 5,961,544 agcore.dll 2010/08/26 00:59 15,688 agcp.exe 2010/09/26 11:09 <DIR> ar 2010/09/26 11:09 <DIR> bg 2010/09/26 11:09 <DIR> ca 2010/08/26 02:48 3,518,464 coreclr.dll 2010/08/26 00:59 73,552 coregen.exe 2010/09/26 11:09 <DIR> cs 2010/09/26 11:09 <DIR> da 2010/09/26 11:08 <DIR> de 2010/09/26 11:09 <DIR> el 2010/09/26 11:08 <DIR> es 2010/09/26 11:09 <DIR> et 2010/09/26 11:09 <DIR> eu 2010/09/26 11:09 <DIR> fi 2010/09/26 11:08 <DIR> fr 2010/09/26 11:09 <DIR> he 2010/09/26 11:09 <DIR> hr 2010/09/26 11:09 <DIR> hu 2010/09/26 11:09 <DIR> id 2010/09/26 11:08 <DIR> it 2010/09/26 11:08 <DIR> ja 2010/09/26 11:08 <DIR> ko 2010/09/26 11:09 <DIR> lt 2010/09/26 11:09 <DIR> lv 2010/08/26 02:48 253,952 Microsoft.VisualBasic.dll 2010/09/26 11:09 <DIR> ms 2010/08/26 02:48 1,589,248 mscorlib.dll 2010/09/26 11:09 6,187,008 mscorlib.ni.dll 2010/08/26 02:48 4,096 mscorrc.dll 2010/09/26 11:09 <DIR> nl 2010/09/26 11:09 <DIR> no 2010/08/26 00:59 1,023,816 npctrl.dll 2010/08/26 02:48 760,832 npctrlui.dll 2010/09/26 11:09 <DIR> pl 2010/09/26 11:09 <DIR> pt 2010/09/26 11:09 <DIR> pt-BR 2010/09/26 11:09 <DIR> ro 2010/09/26 11:08 <DIR> ru 2010/08/26 00:59 350,064 Silverlight.Configuration.exe 2010/08/26 02:48 747,520 Silverlight.ConfigurationUI.dll 2010/09/26 11:09 <DIR> sk 2010/09/26 11:09 <DIR> sl 2010/08/26 00:59 426,848 SLMSPRBootstrap.dll 2008/07/10 13:32 5,587 slr.dll.managed_manifest 2010/09/26 11:09 <DIR> sr-Cyrl-CS 2010/09/26 11:09 <DIR> sr-Latn-CS 2010/09/26 11:09 <DIR> sv 2010/08/26 02:48 536,576 System.Core.dll 2010/09/26 11:09 2,365,440 System.Core.ni.dll 2010/08/26 02:48 233,472 system.dll 2010/08/26 02:48 225,280 System.Net.dll 2010/09/26 11:09 652,288 System.Net.ni.dll 2010/09/26 11:09 665,088 System.ni.dll 2010/08/26 02:48 413,696 System.Runtime.Serialization.dll 2010/09/26 11:10 1,186,816 System.Runtime.Serialization.ni.dll 2010/08/26 02:48 520,192 System.ServiceModel.dll 2010/09/26 11:10 1,598,976 System.ServiceModel.ni.dll 2010/08/26 02:48 73,728 System.ServiceModel.Web.dll 2010/09/26 11:10 138,240 System.ServiceModel.Web.ni.dll 2010/08/26 02:48 143,360 System.Windows.Browser.dll 2010/09/26 11:10 374,272 System.Windows.Browser.ni.dll 2010/08/26 02:48 1,470,464 System.Windows.dll 2010/09/26 11:10 4,473,856 System.Windows.ni.dll 2010/08/26 02:48 319,488 System.Xml.dll 2010/09/26 11:10 844,288 System.Xml.ni.dll 2010/09/26 11:09 <DIR> th 2010/09/26 11:09 <DIR> tr 2010/09/26 11:09 <DIR> uk 2010/09/26 11:09 <DIR> vi 2010/09/26 11:08 <DIR> zh-Hans 2010/09/26 11:09 <DIR> zh-Hant 32 个文件 37,153,739 字节 42 个目录 39,298,207,744 可用字节
那么,在浏览器中的插件是怎么注册上去的呢? 让我们来看看注册表。
IE的插件:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{32C73088-76AE-40F7-AC40-81F62CB2C1DA}
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{DFEAF541-F3E1-4c24-ACAC-99C30715084A}
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{DFEAF541-F3E1-4c24-ACAC-99C30715084A}\InprocServer32
其键值是: c:\Program Files\Microsoft Silverlight\4.0.50826.0\npctrl.dll
Firefox的插件:
HKEY_LOCAL_MACHINE\SOFTWARE\MozillaPlugins\@Microsoft.com/NpCtrl,version=1.0
Path=c:\Program Files\Microsoft Silverlight\4.0.50826.0\npctrl.dll
ProgId: AgControl.AgControl.4.0
增加的MIME类型:
MIME: application/x-silverlight
MIME: application/x-silverlight-2
Silverlight如何工作?
Silverlight是以宿主浏览器为基础环境的。npctrl.dll作为插件直接与宿主浏览器接口。npctrl.dll本身是个ActiveX控件,可以供我们调用。npctrl.dll会调用agcore.dll来处理一些非托管的API, 也会调用coreclr.dll来创建一个CLR。我们编写的Silverlight应用程序是运行在coreclr.dll创建的CLR当中的。这个图可以很好地帮你理解:
图3
注:
npctrl.dll:Silverlight plug-in
agcore.dll and coreclr.dll:Core services
CLR execution engine 和相关的AppDomain都是由coreclr.dll搭建的。我们的Silverlight程序运行在其中。
Silverlight Runtime
有一些文章提到了Silverlight Runtime这个术语。指的就是在用户机器上安装的用来运行Silverlight程序的环境。这篇文章提到的内容都是关于Silverlight runtime的。我们可以再多看看C:\Program Files\Microsoft Silverlight\4.0.50826.0目录下的文件。比如BCL所在的mscorlib.dll,注意到其大小没有,它比通常的Desktop安装,即普通的.net framework安装的mscorlib.dll小了不少。还有System.Windows.dll也是。我们可以查看一下其中的类型。其类型与普通的.net framework的System.Windows.dll差别挺大。
结束语
到目前为止,我们只看到了一点点MSDN上没有讲的东西。还有很多东西有待我们去发掘。
相关文章推荐
- 一起谈.NET技术,初识Silverlight 4及其架构
- 一起谈.NET技术,深入解读Silverlight的布局原理
- 一起谈.NET技术,Silverlight实例教程 - Out of Browser的Debug和Notifications窗口
- 一起谈.NET技术,Silverlight 布局(附照片墙示例及源码)
- 一起谈.NET技术,Silverlight 2.5D RPG游戏技巧与特效处理:(十二)魔法系统
- 一起谈.NET技术,Silverlight 游戏开发小技巧:动感小菜单2
- 一起谈.NET技术,Silverlight 游戏开发小技巧:透明背景的Silverlight程序
- 一起谈.NET技术,.NET 分布式架构开发实战之二 草稿设计
- 一起谈.NET技术,关于Windows Phone数据库和Silverlight本地文件操作
- 一起谈.NET技术,模拟IIS向Silverlight输出策略文件
- 一起谈.NET技术,当Silverlight同时遇上TCP和HTTP的WCF服务
- 一起谈.NET技术,JAVA与.NET的相互调用——TCP/IP相互调用基本架构
- 一起谈.NET技术,使用WCF实现SOA面向服务编程—— 架构设计
- 一起谈.NET技术,Silverlight 的多线程能力(下)
- 一起谈.NET技术,Silverlight 游戏开发小技巧:星球大战字幕效果
- 一起谈.NET技术,.NET分布式架构开发实战之一 故事起源
- 一起谈.NET技术,Silverlight与HTML双向交互
- 一起谈.NET技术,走向ASP.NET架构设计——第五章:业务层模式,原则,实践(后篇)
- 一起谈.NET技术,发布NGuestBook(一个基于.NET平台的分层架构留言本小系统)
- 一起谈.NET技术,Silverlight中自定义控件