博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一起谈.NET技术,从原理来看Silverlight 4的架构
阅读量:6318 次
发布时间:2019-06-22

本文共 5213 字,大约阅读时间需要 17 分钟。

  简介

  在前文<<>>谈到要从多个方面来了解: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上没有讲的东西。还有很多东西有待我们去发掘。

转载地址:http://mjcaa.baihongyu.com/

你可能感兴趣的文章
PAT 解题报告 1004. Counting Leaves (30)
查看>>
Android开发之蓝牙 --修改本机蓝牙设备的可见性,并扫描周围可用的蓝牙设备
查看>>
[Head First设计模式]生活中学设计模式——外观模式
查看>>
Repository模式中,Update总是失败及其解析
查看>>
.Net 转战 Android 4.4 日常笔记(2)--HelloWorld入门程序
查看>>
[原创]浅谈测试团队转型,思维模式的转变是关键
查看>>
Redis学习-SortedSet
查看>>
android CoordinatorLayout使用
查看>>
机器学习资料大汇总
查看>>
Python selenium 滚动条 详解
查看>>
poj1035Spell checker
查看>>
微信程序开发
查看>>
如何退出minicom【学习笔记】
查看>>
C++内存布局之虚拟继承
查看>>
Sqlserver 数据库基本查询
查看>>
图书馆维护系统总结
查看>>
[hadoop源码阅读][5]-counter的使用和默认counter的含义
查看>>
SAP HUM 如何对一个HU做上架?
查看>>
LINUX系统中动态链接库的创建与使用{补充}
查看>>
三维视觉国际会议首度在中国举办
查看>>