从原理来看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上没有讲的东西。还有很多东西有待我们去发掘。

 

目录
相关文章
|
3月前
|
机器学习/深度学习 算法 文件存储
神经架构搜索NAS详解:三种核心算法原理与Python实战代码
神经架构搜索(NAS)正被广泛应用于大模型及语言/视觉模型设计,如LangVision-LoRA-NAS、Jet-Nemotron等。本文回顾NAS核心技术,解析其自动化设计原理,探讨强化学习、进化算法与梯度方法的应用与差异,揭示NAS在大模型时代的潜力与挑战。
743 6
神经架构搜索NAS详解:三种核心算法原理与Python实战代码
|
1月前
|
机器学习/深度学习 自然语言处理 监控
23_Transformer架构详解:从原理到PyTorch实现
Transformer架构自2017年Google发表的论文《Attention Is All You Need》中提出以来,彻底改变了深度学习特别是自然语言处理领域的格局。在短短几年内,Transformer已成为几乎所有现代大型语言模型(LLM)的基础架构,包括BERT、GPT系列、T5等革命性模型。与传统的RNN和LSTM相比,Transformer通过自注意力机制实现了并行化训练,极大提高了模型的训练效率和性能。
|
4月前
|
存储 监控 算法
园区导航系统技术架构实现与原理解构
本文聚焦园区导航场景中室内外定位精度不足、车辆调度路径规划低效、数据孤岛难以支撑决策等技术痛点,从架构设计到技术原理,对该系统从定位到数据中台进行技术拆解。
190 0
园区导航系统技术架构实现与原理解构
|
6月前
|
存储 人工智能 自然语言处理
为什么混合专家模型(MoE)如此高效:从架构原理到技术实现全解析
本文深入探讨了混合专家(MoE)架构在大型语言模型中的应用与技术原理。MoE通过稀疏激活机制,在保持模型高效性的同时实现参数规模的大幅扩展,已成为LLM发展的关键趋势。文章分析了MoE的核心组件,包括专家网络与路由机制,并对比了密集与稀疏MoE的特点。同时,详细介绍了Mixtral、Grok、DBRX和DeepSeek等代表性模型的技术特点及创新。MoE不仅解决了传统模型扩展成本高昂的问题,还展现出专业化与适应性强的优势,未来有望推动AI工具更广泛的应用。
3262 4
为什么混合专家模型(MoE)如此高效:从架构原理到技术实现全解析
|
5月前
|
存储 消息中间件 canal
zk基础—2.架构原理和使用场景
ZooKeeper(ZK)是一个分布式协调服务,广泛应用于分布式系统中。它提供了分布式锁、元数据管理、Master选举及分布式协调等功能,适用于如Kafka、HDFS、Canal等开源分布式系统。ZK集群采用主从架构,具有顺序一致性、高性能、高可用和高并发等特点。其核心机制包括ZAB协议(保证数据一致性)、Watcher监听回调机制(实现通知功能)、以及基于临时顺序节点的分布式锁实现。ZK适合小规模集群部署,主要用于读多写少的场景。
|
6月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
204 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
|
1月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
4月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
229 0

热门文章

最新文章