序言

我喜欢把自己描述为一个网络爱好者。大约在1994年,当我第一次接触互联网时,立刻深深地喜欢上了它。从那时起,我几乎把所有的时间都用于网页项目,很少再做其他开发。这些年来,各种新技术的层出不穷,有一些技术已经停止发展。比如大约在1997至1998年间,我开始使用ASP和PHP技术,但由于ASP的局限性最终放弃了它。但当ASP.NET的第一个betas版发布时,我又回到了ASP的世界,ASP.NET 2.0的出现进一步提高了我的兴趣,这又让我充满了动力(现在我乐于同时使用两门技术)。非常幸运,由于Ajax的出现,我再一次需要使用JavaScript。

一个曾经让我又爱又恨的技术是Macromedia公司的Flash(现在是Adobe公司的Flash)。我喜欢它的超越HTML和JavaScript包括Ajax强大功能,我更喜欢它在浏览器插件中庞大的市场占有率。但我真的十分痛恨Flash的编辑器。使用它进行工作使我非常愉悦,但做为一个开发者,我不得不边诅咒边使用它。这没什么好惊讶的,Flash曾经做为设计者的工具,只是最近才开始关注开发人员。我是一个糟糕的设计人员,或许不该要求更多。

但无论如何,Flash是一项非常好的技术,因为它使得高级图形技术有了强大的代码支持。更值得高兴的是,微软公司发布相似的技术Silverlight。(微软公司并没有说明Silverlight和Flash之间的联系,但指出了两者的相同点与不同点)。从所周知,微软公司更倾向于开发人员,我希望它拥有Flash的功能,并具备更好的开发体验(至少对我来说)。说句实话,它走的第一步是非常有前途的。很多程序设计人员非常相信Visual Studio,并相信它也能成为一个好的设计工具。不管是开发工具本身还是市场占有率,微软还有很长的路要走,但毕竟走出了这第一步,我希望能看到下一步。

本书的适用对象

本书所面向的读者有两类:希望掌握Silverlight技术的开发人员和希望了解Silverlight所提供功能的设计人员。我更关注开发人员这一块。这本书并不打算讲解Silverlight的所有部分。它忠实于精华系列这个概念:您将很快上手Silverlight,了解更多的重要概念,并找到很多的代码方面的例子。

Silverlight现在有两个版本,1.0(2007年4月发布)和1.1(现在还是alpha版本)。本书讲述Silverlight1.0,并对新版本做一个简短的预览(将在2008年发布)。不需要了解Windows Presentation Foundation(WPF)方面的知识,但如果你已经在使用它,你将掌握一些Silverlight基础。从程序员的角度来说,所讲述的语言是JavaScript,如果你并不了解它,参考O’Reilly出版社的目录一定是个很好的选择。

本书是如何组织的

第一部分包括Silverlight和相关技术的背景信息。

第1章

介绍Windows Presentation Foundation(WPF)以及它跟Silverlight的关系。

第2章

体验所有安装步骤并创建你的第一个Silverlight应用。

第3章

回顾一些使Silverlight更容易使用的软件工具。

第二部分专注于使用Silverlight的常规手段所能达到的效果,也讲述了一些JavaScript知识。

第4章

微软公司的WPF标记语言的最重要的元素的特性。

第5章

解释Silverlight应用程序是如何通过事件进行交互处理的。

第6章

揭示两个使用Silverlight进行动画制作的途径。

第7章

展示如何在Silverlight应用程序中使用声音和视频,包括JavaScript访问。

第三部分从开发者的角度进行讲述

第8章

讲述如何使用JavaScript访问Silverlight内容。

第9章

展示JavaScript的高级技术,包括HTTP请求的能力。

第10章

复习两个技术---ASP.NET,AJAX和Silverlight的关系---融合它们。

第11章

展望即将到来的Silverlight 1.1版本。

附录 A

提供Silverlight插件的一系列属性和方法。

使用这本书需要什么

开发Silverlight只需要一个文本编辑器。如果使用Visual Studio 2005或Visual Web Developer Express Edition 2005将会更加方便。第3章会讲解这些工具。第二章将一步一步地指导您如何安装开发和浏览Silverlight所需要工具。

本书约定

本书使用以下的排版约定:

斜体

指示新的术语、URL、email地址、文件名和文件扩展名。

等宽段落

用于代码段和代码段中的元素如:变量、方法名、数据库、数据类型、环境变量、修饰符和关键字。

粗体等宽段落

需要用户逐字输入的命令或其他文字。

斜体等宽段落

将被用户提供的值所取代或由上下文关系决定的值。

如何使用例子中的代码

本书将对您的工作有所帮助。一般情况下,您可以在程序或文档中使用本书的代码,无需联系我们以获得许可,除非您要使用绝大部份代码进行再发行。例如,在程序中使用本书的几块代码无需获得许可。在出售或分发的CD-ROM中使用O’Reilly出版社的书中的例子需要获得许可。引用本书内容和例子无需获得许可,在您的产品中大量引用本书代码则需要许可。

致谢

我在各种场合都声明过,一个技术图书的作者不需要感谢合作伙伴/小孩/宠物,并戏称写书占用了他们的私人时间和社交生活。在阅读小说和论文的序言时,从来没有听到过这样的抱怨,但对于技术图书来说,这是一种通病。我已经写了很多这类书籍,并合理分配了工作和玩的时间。

为了赶上Silverlight的发布,这本书的时间进度安排得非常紧。为此,我不得不疯狂地工作,并忽略了一些人和事。(倒不是在那之后我就做了这些事情,但这些时间比平时少得多了)。因此,感谢所有遭相同经历的人。

我还要感谢再一次跟我合作的O’Reilly出版社的编辑John Osborn。Andrew Savikas给我提供了Word文档,并尽力使我相信,使用XML格式写书并不是一件很糟糕的事情。Keith Fahlgren一次又一次地对本书进行校对。Laurel Ruma对本书进行排版,我不知道它是否会诅咒我所写的或XML。Yvonne Schimmer给我提供了每章的视频材料和技术支持。

最后,我不得不感谢优秀的技术评论人:WPF宗师Rouven Haban,矢量图和Flash专家Tobias Hauser。感谢你们的工作,你们是否发现一些错误?我故意在本书印刷之前介绍他们。

第一章 WPF基础

当今很多的图形都是基于像素的。图像中的每个点都由一个像素描绘。在很多场合,这是一个非常好的解决方案,包括数码摄影技术(当您希望维持像机中的每个单元信息都可见),但这也有一些缺点。比如,如图1-1所示,当您在微软的画图软件中观察简单的文字。这些文字是基于像素的,在图1-2中,你看见相同的文字,但这幅图像的高和宽被放大了。你是否看到锯齿?所以,一张基于像素的图像被放大时将图像质量的下降。

这显而易见,例如,当把一个100×100像素的图像放大为200×200像素。如何从10000像素变为40000像素呢?在原始图像中的1×1像素现在变为了2×2像素。绘图软件使用了一个十分简单的算法去改变图像的尺寸:如果图像尺寸变大,仅仅克隆像素。这就形成了锯齿。

提示:专业的绘图软件如Adobe的Photoshop使用了几个复杂的算法来保证当图像尺寸改变时的质量损失(特别当缩小图像时);然而,当图像放大时,对图像的影响还是很明显的。

解决这些问题的办法之一是:矢量图。图像中的每一个元素都是几何对象:一条直线,一个多边形,一条曲线,这里只例举了少数名称。它最大的优势在于当改变图像尺寸时不会导致质量损失:一个圆只需改变它的半径,仅此而已。它不会出现锯齿,因为它还是一个圆,而不是一个基于像素的图像,一系列在圆形中排列的像素。

显然,并非所有的图像都可以用矢量描绘。我们再想想,理论上可以在肖像或风景中尽量找到几何元素或图案(这需要算法),但事实上不可能使用矢量去精确地描绘一幅图像。无论如何,矢量图像在计算机中的几个方面可以表现得更为真实。第一个方面是字体。如图1-3所示的Windows字体(符合图1-1和1-2中的字体)。大部分字体是矢量的,所以不管您使用8pt,10pt,12pt,还是100pt,它们的质量没有什么不同。如果在word中敲入字符并使字体变大,它的边缘仍然平滑。一旦您将文字粘贴到基于像素的图像处理软件(如画图)后,文字将失去矢量信息而变为像素。

另外一个倾向于使用矢量的地方是用户界面(UI)。标准的UI大多数时候是兼容矢量的。它们很多时候需要被改变大小,所以在用户改变窗体大小时,它的内容仍然被完整无缺地保留。尽管如此,实际上,很少有UI是基于矢量的。

WPF

不久以前,Microsoft公司为它们的Vista操作系统(当然,跟之前的名称不同)设计一新的UI生成技术。这套系统基于矢量并使用XML技术。它最终命名为Windows Presentation Fundation(WPF)。

矢量图形和XML

有几个项目也在试图使用矢量(可能是一些动画或商业逻辑支持)来创建图形。时间最长的一个是World Wide Web Consortium’s(W3C)的Scalable Vector Graphics(SVG)。SVG图形是使用XML创建的,支持脚本,并支持除了Internet Explorer之外的大多数先进的浏览器。然而,SVG在市场上并非主流,它只在有限的地方获得了成功,包括移动电话和绘图。

另外一个项目来自于Adobe公司,Flex使用了另外一种XML语言(叫MXML)来动态生成Flash。

WPF是.NET Framework 3.0的一个主要组成部分,它在Vista操作系统中被默认安装,并可以在Windows XP和Windows 2003中作为插件下载。.NET3.0中的另外几个主要组成部分包括:

WCF(Windows Communication Foundation

通讯子系统

WCS(Windows CardSpace

数字身份子系统(译者注:原文是Digital identity subsystem,翻译可能不正确

WF(Windows Workflow Foundation

工作流子系统

WPF应用程序即可以运行在浏览器上也可以做为桌面应用程序单独运行。.NET Framework 3.0或更高版本应该都需要它。现在大多数的WPF应用程序被单独运行,因为Vista还没有达到很高的的市场占有率,另外下载.NET3.0需要花费太多时间。因此微软公司专门为浏览器创建了相似的技术:Silverlight。我们首先看看更多的关于WPF背景信息。

WPF的焦点主要在矢量图上,但同样对基于像素的图形有很好的支持。WPF对于声音和视频数据也有很好的支持。它的一个亮点是对文字的支持,包括文字的排版比如文字对齐,字间距的调整和字母组合。

你不必惊奇,所有的商业逻辑代码都使用.NET语言如C#和Visual Basic来完成。.NET Framework非常严谨,CLR(公共语言运行时)---定义了WPF应用程序中的每种可能的元素并且使用Visual Studio将会有一个很好的编程体验(想想代码提示)和快速原型。同样,访问XAML所需要API提供了比XAML本身更多的功能,所以为了发挥出XAML/Silverlight的功效,你需要同时熟悉标语语言和编程语言。

现在已经有几个使用WPF原型的项目,包括几个使用文字流显示的电子报纸,比如Forbes.com读物(如图1-4所示,可以在http://www.forbes.com/partners/microsoft/newsreader/下载)。另外一个是Yahoo!messenger也将使用WPF界面技术。

XAML

是否如前面我们所讨论的那样,WPF是由XML来创建的呢?的确如此,为了达到这个目的使用了特殊格式的XML:XAML(eXtensible Application Markup Language)。它用于WPF应用程序中的UI标记。WPF运行时负责解释这些标记并显示标记,同时整合附加的商业逻辑代码(使用.NET语言如C#或VB完成的代码)。

微软提供了几个用于XAML开发的工具。您可以使用Visual Studio,但如果希望有更好的视觉体验,可以考虑使用Expression Blend(Microsoft Expression Suite产品的一部份)。.NET Framework 3.0 SDK还包括一个应用程序叫SAMLPad,可以用于分栏显示:即可以看到标记语言,也可以在显示代码的同时显示其效果,从而达到所见即所得的效果,如图1-5所示。

当创建Silverlight应用时,无需担心是否已经安装了WPF,因为开发和浏览Silverlight时无需安装.NET Framework 3.0。尽管如此,您还是需要了解一些XAML方面的知识,因为Silverlight是XMAL的一个子集。因此,第4章将介绍一些最重要支持Silverlight的XAML元素

进阶读物

Programming WPF (http://www.oreilly.com/catalog/9780596510374/index.html) by

Chris Sells and Ian Griffith (O’Reilly)

第二章 Silverlight第一步

关于Silverlight

一些人把Silverlight技术称为“Flash杀手”,但我不能确信这是否真实。无论如何,两者非常相似。无论是Adobe公司的Flash(以前是Macromedia公司的Flash)还是Silverlight都作为浏览器插件。两者都支持矢量图形,声音和视频回放,动画和脚本支持。

两者的技术基础是不一样的。Flash使用不完全二进制格式,而Silverlight是基于WPF的。在被命名为Silverlight之前,它的开发代号为WPF/E(Windows Presentation Foundation Everywhere)。Silverlight可以到处运行(至少理论上是这样)得感谢好的浏览器支持。

实际上兼容性是浏览器插件的关键问题。在写这本书时,Silverlight插件已经支持Windows平台(这没什么好说的)下的两大浏览器:Microsoft Internet Explorer和Mozilla Firefox(译者注:火狐浏览器)。还支持苹果机的Mac OS X操作系统使用的两个浏览器Safari和Mozilla Firefox。按照微软的说法,对其他平台的支持正在研究之中,但Windows在桌面操作系统中拥有如此高的市场占有率,而Mac OS X位列第二,所以优先支持这两个浏览器。

Silverlight需要运行在Windows XP或更高的版本上;但1.0版本有可能在某一时间升级为支持Windows 2000的版本。在未来版本中也将增加对Opera浏览器的支持;当前它是第三大浏览器,拥有相对较少但非常忠实的用户。

提示:专业的绘图软件如Adobe的Photoshop使用了几个复杂的算法来保证当图像尺寸改变时的质量损失(特别当缩小图像时);然而,当图像放大时,对图像的影响还是很明显的。

Mono项目(http://www.mono-project.com/),因为开源并运行.NET而闻名,它可以在Linux平台的Firefox浏览器下运行开源的Silverlight端口。这个项目被称为Moonlight(请见http://www.monoproject.com/Moonlight)。http://www.mono-project.com/MoonlightShots网站也有一些最新的成果的一些效果图(图2-1)。微软也宣布将联合Novell(译者著:一种操作系统)派出一个小组支持Moonlight项目并把它移植到Linux下。

但除了做为浏览器插件之外,Silverlight还有什么过人之处呢?这个插件的最主要部份是支持WPF子集(详情请见第4章)的图形子系统。它还包含了表现视频和音频的代码(请参考第7章了解更多关于多媒体方面的内容)。

Silverlight的体系非常复杂(请参考http://msdn2.microsoft.com/en-us/library/bb404713.aspx)。主要可以分为两大块,表现层负责处理UI,包括动画,文字渲染和音频/视频回放。插件被整合在浏览器内使得这些内容可见,并且也可以通过JavaScript DOM访问。最后,使用JavaScript代码(如果使用ASP.NET AJAX框架就更好了)Silverlight应用程序就可以象web services一样访问服务器API了。图2-2(译者注:很遗憾,本书并不存在我们想要的这张图,这里是一个错误)展现了这个体系。Silverlight1.1将对这些做进一步地扩展,并把.NET Framework的一部份整合进Silverlight内。

安装Silverlight开发系统

事实上,使用一个文本编辑器便能开发Silverlight应用程序,便使用一个“真实”的开发环境能让您事半功倍。最明智的选择是使用微软所提供的开发工具。对于代码编写人员来说,Visual Studio 2005是当前开发Silverlight的最佳选择。无论是完全版本(标准版,专业版,团队开发版)还是免费版的Visual Web Developer Express Edition都可以胜任。如果您使用付费版本,将获得项目模板支持,那是再好不过。本书将使用Visual Studio 2005标准版。无论什么时候,免费的Express版本和付费版本都将有所不同,这尤其重要,它使得用户不会遗漏任何重要信息。

在Windows XP或更高版本上安装Visual Studio或Visual Web Developer无需什么必备条件。您甚至不需要网页服务器,因为IDE已经集成了一个。如果可能,可以安装一个微软的IIS(Internet Information Services)。它隐藏在【Software】菜单(译者注:没用过Vista,不知道Software所对应的是不是【软件】菜单)下的控制面板内(Vista操作系统)。如图2-2所示,可以在“turn Windows features on and off”那找到它。(译者注:哪位使用Vista的兄弟帮忙看看这句话的中文是什么)在安装Visual Studio 2005时,请确保选中了“Visual Web Developer”这个选项,如图2-3所示。否则,网页编辑器将不会在IDE内出现。你需要创建网站项目,尽管WPF是一项桌面技术,但Silverlight是一项网页技术。如果您希望使用Visual Studio 2005 Express Edition,可以到以下网址下载一个网络安装版:http://msdn.microsoft.com/vstudio/express/vwd/download/

无论您安装的是Visual Studio的哪个版本,都应该立即安装一些有用的补丁(在写本书时最新的补丁是Service Pack 1),Windows Vista用户必须安装一个专门针对Vista用户的升级补丁。在安装期间,需要注意Vista的一个很出名的软件运行问题,解决方法是安装所有可用的补丁,如图2-4所示。

大概给微软产品安装最新补丁的最便利的方法就是使用Windows自动更新机制。微软的软件更新是一个长期服务。Windows自动更新不但给Windows和它的核心组件如Internet Explorer打补丁,还给其它的一些微软产口包括Office,Visual Studio,和SQL Server打补丁。如图2-5所示。

如何激活软件的升级取决于您所使用的Windows版本。如果是Windows Vista之前的Windows操作系统,只需要访问以下升级网站(http://update.microsoft.com/microsoftupdate/)进行升级。如果您使用的是Windows Vista,那么单击【开始】菜单,选择【Get updates for more products】链接(译者注:请哪个使用Vista的兄弟帮翻译下这个菜单名)打开如图2-6所示窗口。下次您搜索升级时,便可获得 Visual Studio和其他微软产口的升级补丁。

提示:在安装完Visual Studio 2005的Server Pack 1后,Vista用户需要再次运行微软的升级以获得一个针对当前操作系统的Visual Studio补丁。

对于Windows Vista用户来说,不幸的是Visual Studio安装完毕并不意味着工作已经完成。当您运行软件时(当然这是在升级完毕后),需要注意只有拥有管理员权限才能访问Visual Studio的所有功能(如图2-7)。所以,如果有可能的话,请右击【开始】菜单中的【

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16396910/viewspace-1030332/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16396910/viewspace-1030332/

Essential Silverlight翻译连载(1、2章)相关推荐

  1. Essential Silverlight翻译连载---前言

    序言 我喜欢把自己描述为一个网络爱好者.大约在1994年,当我第一次接触互联网时,立刻深深地喜欢上了它.从那时起,我几乎把所有的时间都用于网页项目,很少再做其他开发.这些年来,各种新技术的层出不穷,有 ...

  2. 翻译连载 | 第 9 章:递归(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...

    为什么80%的码农都做不了架构师?>>>    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS> ...

  3. 翻译连载 | 第 10 章:异步的函数式(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...

    为什么80%的码农都做不了架构师?>>>    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS> ...

  4. 翻译连载 | 第 11 章:融会贯通 -《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  5. 翻译连载 | 附录 A:Transducing(上)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  6. 翻译连载 | JavaScript轻量级函数式编程-第4章:组合函数 |《你不知道的JS》姊妹篇...

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  7. 翻译连载 | JavaScript轻量级函数式编程-第7章: 闭包vs对象 |《你不知道的JS》姊妹篇...

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  8. 翻译连载 | JavaScript轻量级函数式编程-第5章:减少副作用 |《你不知道的JS》姊妹篇...

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

  9. 翻译连载 | JavaScript轻量级函数式编程-第 8 章:列表操作 |《你不知道的JS》姊妹篇

    原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...

最新文章

  1. 读取本地照片 以流的形式进行显示
  2. 列名无效怎么解决_电脑win键失效怎么办? 键盘win键无效的解决办法
  3. bitnami-redmine邮件告警配置
  4. BZOJ2662[BeiJing wc2012]冻结——分层图最短路
  5. 生产订单修改记录的跟踪方法!
  6. Oracle创建简单视图案例
  7. boost::test模块测试树管理单元测试
  8. C# List.sort排序详解(多权重,升序降序)
  9. 微软的面试题(超变态但是很经典)
  10. 如何确保SAP OData服务的返回结构为JSON格式
  11. struts2,jsp,freemarker编程小技巧
  12. Android WifiDisplay分析一:相关Service的启动
  13. 如何在linux上创建数据库,在LINUX平台上手动创建数据库(oracle 10g)
  14. python setattr 代码可读性_python __setattr__、__getattr__、__getattribute__全面详解
  15. NS3网络仿真(6): 总线型网络
  16. Handler与线程通信(二)
  17. 随手记_ubuntu下配置vscode+cmake c++开发环境
  18. QGIS离线数据或瓦片并使用Cesium调用离线瓦片(vx gzh【图说GIS】)
  19. 最近很火的在线文件预览txt、doc、ppt、pdf、excel、jpg、png、zip、tar.gz等各种文件及压缩文件在线解压和预览,包括前后端设计和源码,编写搜索引擎多关键词检索名称和内容(四)
  20. 苹果用计算机知道密码,苹果电脑钥匙串登录密码忘了怎么办

热门文章

  1. 经验小波MATLAB,EWT 新开发出来的经验模态小波变换工具及其例程。 matlab 276万源代码下载- www.pudn.com...
  2. java 解析 ical_转载iCalendar 编程基础:了解和使用 iCal4j
  3. 面向 Java 人员的 Python
  4. 深入Java面向对象编程
  5. 载波集中抄表的路径搜索算法研究
  6. 四元数非正式笔记梳理_Quaternion kinematics for the error-state Kalman filter
  7. 汽车车身修复技术【4】
  8. 「F5 连接NetOps/SecOps与DevOps」 -- 「4」Declarative Onboarding
  9. 中波电台发射机、接收机系统设计
  10. 少儿编程 电子学会图形化编程等级考试Scratch一级真题解析(判断题)2022年9月