1.1 Silverlight概述
1.1.1 什么是Silverlight
Silverlight的前身是WPF/E,它是微软推出的一种跨浏览器、跨平台的富互联网应用程序开发技术,具有极其优越的矢量图形、动画和多媒体支持的能力,内置支持丰富的网络通信功能,迄今为止发布了1.0和2.0两个版本,本书将以Silverlight 2为主要版本进行讲解。Silverlight 2具有如下功能。
◆ WPF和XAML:Silverlight包含WPF技术的一个子集,大大扩展了浏览器中用于创建UI的元素。
◆ 对JavaScript的扩展:Silverlight提供对通用浏览器脚本语言的扩展,可以控制浏览器UI,包括使用WPF元素。
◆ 跨浏览器、跨平台支持:Silverlight应用程序可以在任意平台上的所有通用浏览器上自如运行,作为开发人员完全不必担心用户具有何种浏览器或平台。
◆ 与现有应用程序集成:Silverlight应用程序可以与现有JavaScript和ASP.NET AJAX代码无缝集成,以增强已有的功能。
◆ 可以访问.NET Framework编程模型和相关工具:可以使用诸如IronPython等动态语言及C#和Visual Basic等语言创建基于Silverlight的应用程序,可以使用Visual Studio的开发工具开发基于Silverlight的应用。
◆ 丰富的网络支持:Silverlight包括对TCP上的HTTP的支持,可以调用WCF或任何基于SOAP的服务并接收XML、JSON或RSS等数据,并且支持Socket通信。
◆ LINQ支持:Silverlight包括语言集成查询(LINQ)。
1.1.2 Silverlight架构
Silverlight平台作为一个整体,由两个主要部分构成:核心表示层框架和Silverlight中的.NET Framework,前者提供面向UI和用户交互的组件和服务(包括用户输入、用于Web应用程序的轻量型UI控件、媒体播放、数字版权管理和数据绑定),表示层功能(包括矢量图形、文本、动画和图像),此外还包括用于指定布局的可扩展应用程序标记语言(XAML);Silverlight中包含一个.NET Framework的子集,其中包括数据集成、可扩展Windows控件、网络、基类库、垃圾回收和公共语言运行时。这两部分之间的关系可以用图1-1来表示。
图1-1
其中核心表示层组件包括如下几个部分。
◆ 输入:处理来自硬件设备(例如键盘和鼠标、绘图设备和其他输入设备)的输入。
◆ UI呈现:呈现矢量和位图图形、动画及文本。
◆ 媒体:具有播放和管理各种类型音频和视频文件(例如,.WMP和 .MP3文件)的功能。
◆ 控件:支持可通过应用样式和模板来自定义的可扩展控件。
◆ 布局:可以动态定位UI元素。
◆ 数据绑定:可以链接数据对象和UI元素。
◆ DRM:可以对媒体资产启用数字版权管理。
◆ XAML:为XAML标记提供分析器。
Silverlight中的.NET Framework包括如下几个部分。
◆ 数据:支持语言集成查询(LINQ)和LINQ to XML功能,这些功能简化了集成和使用不同源数据的过程,还支持使用XML和序列化类来处理数据。
◆ 基类库:一组.NET Framework库,这些库提供了基本编程功能,例如字符串处理、正则表达式、输入和输出、反射、集合和全球化。
◆ WCF支持:提供的功能可简化对远程服务和数据的访问。其中包含浏览器对象、HTTP请求和响应对象、对跨域HTTP请求的支持、对RSS/Atom联合源的支持及对JSON和SOAP服务的支持。
◆ CLR:Silverlight中的公共语言运行时称之为CoreCLR,提供了内存管理、垃圾回收、类型安全检查和异常处理。
◆ WPF控件:Silverlightk中提供了一组丰富的控件,其中包含Button、Calendar、CheckBox、DataGrid、DatePicker、HyperlinkButton、ListBox、RadioButton和ScrollViewer等。
◆ 动态语言运行时(DLR):支持动态编译和执行脚本语言,以编写基于Silverlight的应用程序。包括一个可插接式模型,用来添加Silverlight所使用的其他语言的支持。
1.1.3 Silverlight的跨平台能力
由于Silverlight的应用程序是跨平台的,因此它们可以在当今大多数Web浏览器中运行,下表为微软官方公布的Silverlight所支持的操作系统与浏览器对照表。
虽然目前微软官方并没有提供针对Linux的开发程序和安装包,但是在社区中有一个开源项目“Moonlight”,将Silverlight从Windows平台移植到了Linux平台,该项目的目标是让Silverlight运行在Linux平台下,并且提供在Linux平台下的Silverlight开发包。Moonlight的官方站点是http://www.mono-project.com/Moonlight,如图1-2所示。
图1-2