Essential Silverlight翻译连载(1、2章)
序言
我喜欢把自己描述为一个网络爱好者。大约在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章)相关推荐
- Essential Silverlight翻译连载---前言
序言 我喜欢把自己描述为一个网络爱好者.大约在1994年,当我第一次接触互联网时,立刻深深地喜欢上了它.从那时起,我几乎把所有的时间都用于网页项目,很少再做其他开发.这些年来,各种新技术的层出不穷,有 ...
- 翻译连载 | 第 9 章:递归(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
为什么80%的码农都做不了架构师?>>> 原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS> ...
- 翻译连载 | 第 10 章:异步的函数式(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
为什么80%的码农都做不了架构师?>>> 原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS> ...
- 翻译连载 | 第 11 章:融会贯通 -《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- 翻译连载 | 附录 A:Transducing(上)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- 翻译连载 | JavaScript轻量级函数式编程-第4章:组合函数 |《你不知道的JS》姊妹篇...
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- 翻译连载 | JavaScript轻量级函数式编程-第7章: 闭包vs对象 |《你不知道的JS》姊妹篇...
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- 翻译连载 | JavaScript轻量级函数式编程-第5章:减少副作用 |《你不知道的JS》姊妹篇...
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- 翻译连载 | JavaScript轻量级函数式编程-第 8 章:列表操作 |《你不知道的JS》姊妹篇
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
最新文章
- 读取本地照片 以流的形式进行显示
- 列名无效怎么解决_电脑win键失效怎么办? 键盘win键无效的解决办法
- bitnami-redmine邮件告警配置
- BZOJ2662[BeiJing wc2012]冻结——分层图最短路
- 生产订单修改记录的跟踪方法!
- Oracle创建简单视图案例
- boost::test模块测试树管理单元测试
- C# List.sort排序详解(多权重,升序降序)
- 微软的面试题(超变态但是很经典)
- 如何确保SAP OData服务的返回结构为JSON格式
- struts2,jsp,freemarker编程小技巧
- Android WifiDisplay分析一:相关Service的启动
- 如何在linux上创建数据库,在LINUX平台上手动创建数据库(oracle 10g)
- python setattr 代码可读性_python __setattr__、__getattr__、__getattribute__全面详解
- NS3网络仿真(6): 总线型网络
- Handler与线程通信(二)
- 随手记_ubuntu下配置vscode+cmake c++开发环境
- QGIS离线数据或瓦片并使用Cesium调用离线瓦片(vx gzh【图说GIS】)
- 最近很火的在线文件预览txt、doc、ppt、pdf、excel、jpg、png、zip、tar.gz等各种文件及压缩文件在线解压和预览,包括前后端设计和源码,编写搜索引擎多关键词检索名称和内容(四)
- 苹果用计算机知道密码,苹果电脑钥匙串登录密码忘了怎么办
热门文章
- 经验小波MATLAB,EWT 新开发出来的经验模态小波变换工具及其例程。 matlab 276万源代码下载- www.pudn.com...
- java 解析 ical_转载iCalendar 编程基础:了解和使用 iCal4j
- 面向 Java 人员的 Python
- 深入Java面向对象编程
- 载波集中抄表的路径搜索算法研究
- 四元数非正式笔记梳理_Quaternion kinematics for the error-state Kalman filter
- 汽车车身修复技术【4】
- 「F5 连接NetOps/SecOps与DevOps」 -- 「4」Declarative Onboarding
- 中波电台发射机、接收机系统设计
- 少儿编程 电子学会图形化编程等级考试Scratch一级真题解析(判断题)2022年9月