Silverlight 简介 Part.1(理解 Siverlight)
Web 是商业软件最流行的环境,但仍有些功能 Web 程序无法实现或无法做到更好。即便在 ASP.NET 页面上配备了最前沿的 JavaScript 和 Ajax,你也无法复制许多桌面应用程序的原生特性,例如动画、声音、视频播放以及 3D 图形等。尽管可以使用 JavaScript 响应客户端的焦点改变、鼠标移动以及其他“实时”事件,你仍然不能构建接近富客户端应用程序窗口反应灵敏度的复杂界面(HTML5 新标准将很大程度改变这一情况)。
开发者在不断超越 Web 局限。近来,在浏览器中观看动画、产业广告、视频或玩设计华美的游戏已经非常的普遍。这当然不是普通 HTML、CSS 和 JavaScript 能做到的。它是通过浏览器插件实现的,有时是一个 Java applet,但更常见的是 Flash 内容。
微软的 Silverlight 技术是 Flash 的直接竞争者。与 Flash 相似,Silverlight 可以让你创建在客户端运行的交互内容,支持动态图形、媒体以及动画,这大大超越了普通 HTML。Silverlight 是使用轻量级浏览器插件部署的,并在很大范围上支持不同的浏览器和操作系统。
现在,Flash 比 Silverlight 有较多优势,因为它已经被广泛采用且已经成熟。然而,Silverlight 自认为有一些 Flash 所无法相比的结构特征,最重要的一点,它基于精简版的 .NET 公共语言运行时(CLR),这就允许开发者使用纯 C# 来编写客户端代码。
Silverlight 的版本
- Silverlight 1:技术相对简单,拥有 2D 绘画能力以及媒体回放的功能,但不支持 .NET 语言,不包含 CLR 引擎
- Silverlight 2:支持 .NET,引入精简版本的 CLR,支持 .NET Framework 类的子集,基于 WPF(Windows Presentation Foundation)的用户界面
- Silverlight 3:基于相同的底层架构,增加了更多的功能
- Silverlight 4:基于相同的底层架构,增加了更多的功能
理解 Silverlight
Silverlight 使用一种大家都熟知的技术来超越标准的 Web 页面的能力:轻量级的浏览器插件。
插件模型的优势是,用户只需安装单个组件,就可以看到大量不同的公司和个人创造的内容。安装插件只需要下载很小的安装文件,并强制用户在至少一个安全对话框(通常有多个)中确认插件能做的操作。
Silverlight 的设计宗旨就是克服普通 HTML 的局限性,让开发者可以创建更加图形化、更具交互性的应用程序。然而,Silverlight 不是用来突破浏览器安全沙盒的。就绝大部分而言,Silverlight 应用程序和普通 Web 页面采用等同的安全限制。例如,Silverlight 程序可以创建并访问文件,但仅限于存放在被特别隔开的隔离存储区(isolated storage)中的文件。从概念上来说,隔离存储的工作方式就像普通 Web 页面中的 cookie。文件是按当前用户和不同网站隔离开的,文件大小也是被严格限定的。
你可能会添加 Silverlight 内容来显示广告或为网站部分内容提供增强的体验(比如玩游戏、完成调查、与产品交互、虚拟导航等)。使用 Silverlight 的页面可以将网站已有内容以更具有吸引力的方式展现出来,或者向安装了 Silverlight 插件的用户展现某些增值特性。
Silverlight 也可以创建网站,但你不太可能这么做。它仍是新生事物,而且不支持旧的客户端(WINME 和 WIN98)。很多采用 Silverlight 的商业网站使用它是为了通过最前沿的内容与竞争对手区别开。
Silverlight 与 Flash 对比
目前,最成功的浏览器插件是 Adobe Flash,它已经安装在全世界超过 90% 的 Web 浏览器上,拥有长达 10 年的历史,最初只是简单用来添加动态图形的工具,随后逐渐发展成为一个开发交互内容的平台。
ASP.NET 开发者使用 Flash 内容来扩展网站合情合理。但做到这些需要一个单独的设计工具以及完全不同的编程语言(ActionScript)和编程环境(Flex)。此外,没有直接使用服务器端 .NET 代码生成 Flash 内容的方法,毕竟,它们是两家公司的产品。
Silverlight 的目标是为 .NET 开发者创建丰富的 Web 内容提供一个更好的选择。Silverlight 所提供的浏览器插件与 Flash 有很多相似的特性,但它是在 .NET 基础上设计出来的,天生支持 C# 语言,开发者可以使用 C# 为 Silverlight 写客户端代码,并使用许多相同的技术(流、控件、集合、泛型、LINQ)。
Silverlight 插件提供了很有吸引力的特性,其中一些与 Flash 相同,而有些是全新的,甚至是革命性的:
- 2D 绘图:Silverlight 为 2D 绘图提供了丰富模型,Silverlight 3 提供了透视 3D 支持。最重要的是,绘制的内容被定义为形状和路径,因此可以在客户端熟练操作它们。你甚至可以对事件做出响应(图形某一部分的鼠标单击)
- 控件:开发者不会想从零开始,Silverlight 自带了一些基本控件(按钮、文本框、列表、网格),你更可以自定义外观改变风格
- 动画:Silverlight 有一种基于时间线的动画模型,用于定义需要发生什么事情,持续多久。Silverlight 插件可以处理琐碎的细节,如动画补间(interpolating intermediary values)和计算帧数
- 媒体:Silverlight 支持 Windows 媒体音频(WMA)、Window媒体视频(WMV 7-9)、MP3 音频及 VC-1(高清视频)的播放。你不会再被束缚于 Windows媒体播放器的 ActiveX 控件,相反,你可以创建任何想要的前端显示。
- CLR:这是最有吸引力的!Silverlight 包含一个精简版的 CLR,包括一套关键的核心类、垃圾回收器、JIT 编译器、对泛型的支持和线程等。开发者可以使用为完整版的 .NET 编写的代码,然后经过少量的修改,就可以应用于 Silverlight 应用程序
- 联网:Silverlight 可以调用旧式的 ASP.NET Web 服务(.asmx)或者 WCF(Windows Communication Foundation,Windows 通信基础)Web 服务。它们也可以通过 HTTP 协议发送手动创建的 XML 请求,甚至可以打开一个 socket 连接,从而实现快速的双向通信。这让开发者可以更方便的将富客户端代码与安全的服务器端应用程序结合到一起
- 数据绑定:虽然不像它的大哥 WPF 那样全能,但 Silverlight 数据绑定也提供了便捷的方法。用少量的代码就可以呈现大量数据。可以从 XML 或内存对象中抽取数据,因此能调用 Web 服务和接收对象集合。
同样要注意的是 Silverlight 所没有包含的。Silverlight 是一项正在迅速发展的新技术,对于习惯于依赖 .NET 丰富的预置功能包的开发者会遇到很多障碍。缺少数据库支持(没有 ADO.NET),不支持 3D 绘图,富控件很少(但很多开发人员和组件公司会自行构建)。所有这些特性在以 Windows 为核心的 WPF 应用程序中都有,所有这些可能会在将来某一天迁移到 Silverlight 世界,也可能不会。