一起谈.NET技术,从原理来看Silverlight 4的架构

简介:   简介  在前文谈到要从多个方面来了解:Silverlight的原理,处理周期,部署,安全性,伸缩性,分布式计算能力,容错能力,等等等等。这篇从原理的角度来看Silverlight 4架构相关的一些事情。

  简介

  在前文<<初识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上没有讲的东西。还有很多东西有待我们去发掘。

目录
相关文章
|
16天前
|
人工智能 前端开发 编译器
【AI系统】LLVM 架构设计和原理
本文介绍了LLVM的诞生背景及其与GCC的区别,重点阐述了LLVM的架构特点,包括其组件独立性、中间表示(IR)的优势及整体架构。通过Clang+LLVM的实际编译案例,展示了从C代码到可执行文件的全过程,突显了LLVM在编译器领域的创新与优势。
37 3
|
19天前
|
运维 持续交付 云计算
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
52 1
|
2天前
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
15天前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
27天前
|
开发框架 安全 .NET
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱。它不仅加速了应用开发进程,提升了开发质量和可靠性,还促进了创新和业务发展,培养了专业人才和技术社区,为软件开发和数字化转型做出了重要贡献。
24 5
|
27天前
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
28 4
|
27天前
|
机器学习/深度学习 人工智能 Cloud Native
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台。本文深入解析 .NET 的核心优势,探讨其在企业级应用、Web 开发及移动应用等领域的应用案例,并展望未来在人工智能、云原生等方面的发展趋势。
33 3
|
27天前
|
敏捷开发 缓存 中间件
.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素
本文深入探讨了.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素,并通过企业级应用和Web应用开发的实践案例,展示了如何在实际项目中应用这些模式,旨在为开发者提供有益的参考和指导。
24 3
|
27天前
|
开发框架 安全 Java
.NET技术的独特魅力与优势,涵盖高效的开发体验、强大的性能表现、高度的可扩展性及丰富的生态系统等方面,展示了其在软件开发领域的核心竞争力
本文深入探讨了.NET技术的独特魅力与优势,涵盖高效的开发体验、强大的性能表现、高度的可扩展性及丰富的生态系统等方面,展示了其在软件开发领域的核心竞争力。.NET不仅支持跨平台开发,具备出色的安全性和稳定性,还能与多种技术无缝集成,为企业级应用提供全面支持。
29 3
|
19天前
|
监控 持续交付 API
深入理解云计算中的微服务架构:原理、优势与实践
深入理解云计算中的微服务架构:原理、优势与实践
33 0