技术开发 频道

初识Silverlight 4及其架构

  核心展现部件Core presentation framework包括了XAML parser, UI Core, Inputs, DRM(digital rights management), Media, Deep Zoom等,多数是需直接与具体的操作系统API打交道的功能,所以这里没有CLR Execution Engine.

  • XAML parser负责解析XAML,能兼容不同规格的XAML
  • UI Core负责向量,bitmap,动画,文字的渲染
  • Inputs负责处理键盘,鼠标等设备的输入
  • DRM负责处理数字媒体的数字版权管理
  • Media负责处理多媒体的处理,支持不同的媒体格式和编码器
  • Deep zoom是用于高分辨率图片的放大和缩小
  • Layout负责UI元素的定位

  .net framework for Silverlight 是供应用程序使用的商业"库"。包括Data, WCF, WPF, BCL等。

  • BCL提供了.net平台上的基本类型, 集合collections,泛型Generics,加密等
  • WCF提供了应用程序处理WCF相关功能的一些类型, 用于处理SOAP, REST, RSS/ATOM等
  • Data提供了LINQ, LINQ to xml等
  • WPF提供了一些UI控件,将数据绑定到这些控件,布局,处理用户输入的一些功能。

  .net framework for Silverlight分布在若干个.net程序集中。有一部分的程序集(比如BCL)是随Silverlight 安装器在用户浏览器中安装,有一部分是在Silverlight SDK中,应用程序引用到了相关的程序集,才会随应用程序一起发布到服务器上,当有用户访问应用程序时,这些.net framework程序集才随应用程序的程序集一起下载到用户的浏览器中被CLR执行引擎(CLR Execution Engine)执行。

  CLR执行引擎(CLR Execution Engine)是这里面的核心,负责执行应用程序的.net 代码和.net framework的.net代码。CLR总是基于一个宿主。通常的宿主是一个浏览器,在浏览器外的场景时的宿主是一个操作系统进程。Silverlight 4对其CLR做了改进,Silverlight 4的CLR与桌面应用程序的CLR的差别进一步缩小。

  DLR提供了对动态语言的支持。目前支持JScript, Iron Python, Iron Ruby。这是Silverlight 4新提供的特性。

  Silverlight 4还有一些编程相关的特性:如独立存储(Isolated storage),后台线程,安全的文件管理,序列化,XAP打包,XML处理,HTML与托管代码的交互。

  • 隔离的存储提供一种安全的方式让Silverlight程序去访问浏览器本地的文件系统。
  • 后台工作者线程使异步,多线程在Silverlight上成为了可能。
  • 安全的文件管理提供一个安全的文件打开对话框,允许文件上传等。
  • 序列化使对象的序列化存储和恢复成为了可能。
  • XAP打包提供了Application类和工具来打XAP的包。.xap的包有应用程序和入口点,以便让用户浏览器插件来运行这个.xap包。应用程序的发布都是需要一个.xap包。
  • XML处理包含了处理Xml的功能。XmlReader类和XmlWriter类提供了最基本的XML处理功能,同时XLinq让开发者可以用c#或者VB.net就可以查询Xml中的数据。
  • HTML与托管代码的交互让开发者可以在托管代码中直接用HTML DOM就可以管理HTML页面里的UI元素,同时也可以写Javascript代码调用托管代码的功能,访问其中的方法,属性,激发其事件等。这个功能就为上图中的Javascript Engine和MS AJAX Library提供了可能。

  上图中的浏览器宿主(Browser Host)是用户浏览器插件提供的一个环境。它提供了运行一个Silverlight应用程序的基础环境,如Application服务,HTML DOM的集成,网络通信的基础,还有安装器。使用托管API的Silverlight应用程序都有一个继承Application类的类,有一个程序入口点,浏览器宿主(Browser Host)为应用程序建好了运行环境,然后才调用应用程序的入口。

  结束语

  以上是关于Silverlight 4的一些粗浅的认识。是任何一个Silverlight开发者想知道的内容。如果更深入些,就从多个方面来了解:它的原理,它的处理周期,它的部署,它的安全性,它的伸缩性,它的分布式计算能力,它的容错能力,等等等等。本人也是刚开始学,所知有限。有待进一步学习。等有了一点东西了再写。

0
相关文章