关键概念和技术
- ● 了解微软Silverlight技术的发展史
- ● 了解Silverlight1、2、3中的技术
- ● 阐述Silverlight3的平台支持
- ● 简单对比标准网站应用程序和ASP.NET与Silverlight插件之间的功能关系
Silverlight是微软最新开发的技术,它使开发面向Web的卓越用户体验的客户端成为目标和可能。Silverlight是一种跨平台跨浏览器的插件,由一系列包含了.NET和WPF的功能子集构成。当设计和开发Silverlight时,微软吸收引进了竞争对手已经提供的功能作为开发新产品的技术,所以Silverlight包含了许多功能和技术,是竞争对手所没有的。
Silverlight技术
目前可用的Silverlight版本是: v1.0、v2.0、v3.0。Silverlight 1.0是2007年底发布的,而且立即获得成功。它是一个.NET Framework 3.5和WPF的一些功能的子集。Silverlight 1.0技术还提供了如下功能:
● 创建和管理2-D图形和动画
● 处理鼠标、键盘和墨水输入
● 提供Windows Media 视频(WMV),Windows Media 音频(WMA)以及MP3媒体。
● 显示JPEG(JPG格式)和PNG图像格式
● 格式化和处理文本
● 使用HTTP下载器对象在相同的域内调用服务和下载服务器资源
● 解析扩展应用程序标记语言(XAML)内容
● 使用JavaScript处理W3C文档对象模型(DOM)
在Silverlight 1.0中的功能包含使用JavaScript访问。
Silverlight在Silverlight 1.0和Silverlight 2.0之间发布过一个临时测试版本(1.1版本)。但是,由于Silverlight 2.0中加入了强大的特性和功能,所以微软决定将其作为一个主版本发布,而不是一个临时生成版本。
2008年9月发布了Silverlight 2.0。
Silverlight 2.0中包含了所有Silverlight 1.0中的功能,另外还包含如下功能:
- ● 支持托管代码、包括使用C#、Visual Basic、IronPython、和IronRuby编写代码。
● 扩展了XAML语言
● 额外添加了WPF功能,即动态用户接口布局支持。
● 多种用户界面控件
● 改进并扩展了数据访问、数据绑定和网络编程功能。
Silverlight 3的测试版发布于2009年3月。按照Silverlight 2.0的发展路线,Silverlight 3.0包含了所有Silverlight 2中可用的功能:
● XAML元素可用于直接数据绑定属性.
● 控件和数据绑定支持数据验证.
● 完全支持级联样式.
● 现在也可以支持外部定义的资源,使资源库可以跨应用程序共享.
● 支持离线浏览应用程序,这就使Silverlight应用程序可以脱机使用,并有效利用用户本地资源.
● Silverlight SDK中加入了新的控件,包括文件保存对话框等.
● Silverlight框架中的程序集,现在是缓存在用户本地机器中,以提高性能。
● 更轻松地使用动画对象构建动画效果,包括反弹、弹性、圆圈、立方体.
● 设置考虑到了动画文本的同时提高性能.
● 提供一些API和功能可以用来编程方式修改位图图像.
● 像素着色效果可以应用在图形上,如阴影和模糊.
● 透视3-D变换可以应用于模拟3-D环境.
● 支持交互使用本地图形硬件(GPU)。
● 深度变焦的性能得到改善.
● 开发人员现在可以创建自己的音频视频媒体播放解码器.
● 真正的高清(HD)回放可以支持全屏模式.
● 现在的字体可以压缩并分发到应用程序中,应用程序也可以访问本地安装的字体.
● 能够很容易的确定一个应用程序是否离线或已经成功连接到Web.
● Silverlight 控件可以很容易地与他人的Silverlight通信.
● XML格式可以使用二进制序列化来提高网络性能.
● 一些辅助功能现在已包含在Silverlight中.
● Silverlight应用程序可以在Macintosh操作系统上进行开发.
● 一个导航框架也包含在Silverlight框架中.
可用的海量资源
自从Silverlight 1.0预览版发布后,业界一直热烈谈论Silverlight,网络上也充斥着大量的资源。Silverlight官方的主页是http://www.Silverlight.net/,其中包括可供下载的学习资源、教程和视频。
Figure 1-1 Silverlight.net 首页
前期使用者
随着Silverlight开始大规模应用在开发上,许多重大的标志性的Web项目都利用Silverlight技术重新设计他们的网站。这里介绍一些早期的使用者。
2008年奥运会网站在其核心功能上完全采用了Silverlight技术。新的奥运会网站提供点播收看奥运赛事、画中画、多角度摄像,以及DVD样式的导航控制。刚刚结束的温哥华冬奥会也是如此。
Figure 1-2 The 2008 NBC Olympics website
Hard Rock Cafe拥有世界上最大的摇滚乐纪念品收藏。Hard Rock Cafe已经利用一种新的成像技术,基于Silverlight的,所谓深度放大技术,来以独特的方式在网络上展示他们的纪念品收藏世界。
Figure 1-3 The Hard Rock Cafe rock-and-roll memorabilia website
世界摔跤娱乐网站也进行了重新设计,利用Silverlihgt技术提供流媒体和令人印象深刻的界面.
以上三个使用者只是众多早期使用者中的三个。更多Silverlight早期使用者可以通过注册并登陆http://silverlight.net/Showcase/站点进行浏览。
Figure 1-4 The Silverlight.net Showcase
Silverlight介绍
.NET 3.5中包含了.NET 2.0中的全部功能,以及一些新的技术。新的.NET 3.5框架技术包括Windows Presentation Foundation(WPF),Windows Communication Foundation (WCF),Windows Workflow Foundation(WF),Windows CardSpace,ASP.NET AJAX,和集成编程语言查询(LINQ)。
在讨论Silverlight时,WPF是一个联系点。因为Silverlight是WPF的一个子集。在.NET Framework 3.0/3.5之前,.NET Framework中包含的创建Windows 应用程序非常类似于Visual Basic 6窗口技术。更重要的是,GDI+库用于操作和显示图形、动画和媒体使用的是.NET Framework之前的C++等非托管库。由于.NET Framework的流行,微软开始围绕.NET 框架重新设计他们的技术和产品。微软重新设计WPF技术用来创建Windows应用程序和管理图形。使用WPF,开发人员可以创建旧技术不可能实现的用户界面效果。
为了使开发人员能够创建更高效更丰富的Web应用程序,微软集成了AJAX技术ASP.NET中。AJAX原来是微软使用ActiveX控件创建的技术,而那时被称为远程脚本。AJAX现在支持所有主流浏览器,而且微软定义AJAX为一种异步JavaScrip和XML。一个ASP.NET页面利用AJAX从Web服务器异步发送和接收数据,而用户不必等待与Web服务的通信完成,就可以继续在网页上进行操作。
虽然ASP.NET AJAX的改进,使用户体验得到了提升,而且在性能上也有所改善,但是AJAX使用JavaScript、XML、HTML以及其他Web技术实现的。每种浏览器所支持的标签和内容都可能不同于其他浏览器;因此,在使用传统Web技术开发网络应用程序时,包括ASP.NET和AJAX技术,开发啊人员必须确信浏览器显示的内容是开发人员想要的。
开发人员可以保证内容在所有平台和浏览器上显示一致的唯一方式就是利用浏览器插件。一个浏览器插件为开发人员提供一个封装的环境。在这个环境中,开发人员可以完全控制他们的流程和显示。Adobe Flash就是一个最流行的浏览器插件,用来识别和显示图形、动画以及媒体。为了与Adobe Flash竞争,微软开始研发可下载的浏览器插件。这个插件不仅仅能够用来识别和显示图形、动画和媒体,而且应该实现WPF的功能子集以及.NET 中的功能和技术。
微软Silverlight,最初称为Windows Presentation Foundation/Everywhere(WPF/E),是一个免费的浏览器插件。它类似于Java虚拟机(JVM)的作用。
Silverlight架构
习惯于开发标准Web应用程序或ASP.NET应用程序的开发人员,在开发Silverlight应用程序时,需要做些调整。Silverlight应用程序是下载到客户端并在客户端机器运行的。对Web服务器的回发只发生在如果出现手动启动Silverlight应用程序时。图1-5比较了Silverlight应用程序进程和ASP.NET应用程序进程。
Figure 1-5 Silverlight应用程序处理流程和ASP.NET应用程序处理流程的比较
当用户显示一个包含Silverlight控件的页面时,如果Silverlight插件尚未安装到用户的机器上,浏览器将会提醒用户下载并安装插件。一旦插件安装成功,Silverlight控件会下载并执行。运行Silverlight控件的请求后,控件将会在客户端机器初始化,然后仅在进行人工操作时,从Web服务器请求需要的资源。
Silverlight的版本
Silverlight目前是第三版。Silverlight 1.0版本发布与2007年,支持Windows媒体服务,并且可以使用JavaScript用于创建富客户端。
2007年最后一个季度,Silverlight发布了测试的1.1版本。Silverlight 1.1版本扩展了Silverlight 1.0版本的功能,来包括更多的对.NET Framework功能的支持和更多托管语言的支持,如C# 、VB、IronRuby、或IronPython。
经过对Silverlight 1.1版本的几次几次改革、扩大以及升级,微软决定推出新版本,而不仅仅是一个新的构建。因此,1.1版更名为2.0版。下图中显示了Silverlight 1.0版和Silverlight 2.0版中的主要功能。Silverlight 3.0的功能会在后面详细介绍。
Figure 1-6 Silverlight各版本功能差异
Silverlight 宿主
Web应用程序都是创建并部署在暴露在互联网中的Web服务器上。互联网上每个可用的资源都有他们唯一的地址。用户可以使用Web浏览器在线请求一个资源。大多数Web应用程序需要Web服务器宿主应用程序来满足最起码的要求。这个宿主服务器可能会包括特定的软件和硬件环境,并具有特定的配置方法。
Silverlight设计的目的是与服务器和客户端无关。这就意味着它可以隐蔽的宿主在任何Web服务器以及在任何Web客户端执行。事实上,Silverlight应用程序可以在目前支持的Web客户端执行(下面会详细介绍),而且可以宿主在几乎任何的虚拟Web服务器上。一个Silverlight应用程序的服务器端的宿主要求可以忽略不计,因为服务器只需要配置成可以宿主简单HTML应用程序即可。最常用的两个Web服务器是微软的Internet信息服务器(IIS)和Apache。
支持的Web客户端平台
宿主Silverlight应用程序的服务器只需要满足最基本的需求。然而,Silverlight插件可以下载并安装的Web客户端机器,必须运行的是Silverlight设计时支持的操作系统。最终的目标是Silverlight可以运行在任何操作系统上。但是目前,Silverlight插件只在如下操作系统可用。
Microsoft Windows
Silverlight支持微软如下的Windows版本:
- ● Microsoft Windows Vista
- ● Microsoft Windows XP SP2
- ● Microsoft Windows 2000
- ● Microsoft Windows 2003
- ● Microsoft Windows 2008
Macintosh
Silverlight支持如下版本的Macintosh操作系统:
- ● Mac OS 10.4.8+ (PowerPC)
- ● Mac OS 10.4.8+ (Intel based)
Linux
为了使Silverlight支持更多地网络客户端平台,微软与Novell公司达成一项协议,开发Linux操作系统中的Silverlight插件版本。一个著名的.NET Framework 版本,Mono项目,就可以运行在Linux操作系统。Silverlight插件运行在linux的版本叫做Moonlight。Mono项目的开源开发者们,为了保证Mono与微软开发的.NET Framework版本同步,做出了极大的努力。他们仅用了21天就完成了Moonlight的开发。
支持的Web浏览器
正如Silverlight将最终支持最多的操作系统一样,Silverlight将会最终支持最多的浏览器。但是Silverlight现在可用的浏览器如下:
Microsoft Internet Explorer
Internet Explorer是微软的Web浏览器. Silverlight首先支持Internet Explorer,而且完全支持下列版本的Internet Explorer:
- ● 运行在Windows Vista, Windows XP SP2, Windows Server 2003, 以及Windows Server 2008上的Internet Explorer 7 和 8。
● 运行在Windows XP SP2, Windows Server 2003, 和Windows 2000上的Internet Explorer 6
动手实验室:构建并测试一个Silverlight应用程序
根据如下步骤快速构建并测试一个Silverlight 3应用程序:
- 启动Visual Studio 2010
- 选择文件|新建|项目,打开新建项目对话框
- 在对话框左侧.NET Framework编程语言列表中选择Visual C#,然后选择项目类型中的Silverlight节点。
- 在对话框的右侧项目模板列表中,选择Silverlight应用程序。
- 在对话框的底部,指定要创建的项目名称(这里使用“MyFirstSilverlightApplication”)并选择一个位置(保持默认)来创建新项目。
- 点击对话框下方的OK按钮来创建新的Silverlight项目。创建新项目的过程将持续几秒钟。
- 当系统提示新的Silverlight应用程序对话框时,点击OK按钮,接受默认设置。
- 在Visual Studio 2010的解决方案管理器中,右键单击MainPage.xaml文件,然后选择在Expression Blend中打开。
- 如果出现安全警告对话框,单击OK按钮。
- 一旦在Expression Blend中打开该文件,在工具箱中选择一个TextBlock控件,拖拽到Silverlight设计界面中,并保持这个新建的TextBlock控件选中,此时就可以调整控件的属性了。
- 关闭Expression Blend,并保存对MainPage.xaml的更新
- 当Visual Studio 2010弹出重新加载MainPage.xaml文件时,单击OK。
- 在Visual Studio 2010的工具栏中单击绿色的执行按钮或按F5运行调试这个新的Silverlight应用程序。
- 当提示是否为项目启动调试时,选择是。
- 这个新建的Silverlight应用程序应该微软的IE浏览器显示出来。
- 此时可以关闭浏览器,回到Visual Studio 2010。
- 要使用其他浏览器查看Silverlight应用程序,右键单击MyFirstSilverlightApplicationTestPage.aspx文件,在弹出菜单中选择浏览方式…菜单。
- 在弹出的对话框中的浏览器列表中选择期望的浏览器,选择浏览按钮。或者可以点击添加按钮注册新的浏览器支持。
- 当完成上面操作后,并成功看到了自己的Silverlight应用程序,关闭Visual Studio 2010。
在IE8中的浏览效果如下:
Figure 1-7 IE8中的浏览效果
结论
微软再次发布的这项新技术,即使在起步阶段,就已经席卷了业界。Silverlight进一步将.NET Framework技术,即Windows Presentation Foundation(WPF),扩展到了客户端浏览器空间,从而加强和普及了.NET框架。Silverlight是一个可下载的插件,而且对图形、动画、媒体显示进行了优化,且与浏览器无关。