本书详细介绍了微软下一代富互联网开发技术Silverlight,分为基础篇、进阶篇、高级篇和案例篇4个部分,以Silverlight 2为主要版本从不同的层面进行了阐释:第I部分介绍了Silverlight的基础知识、控件模型及它在绘图方面的能力;第II部分介绍了Silverlight丰富的网络通信功能、托管代码与浏览器之间的互操作性及数据绑定等;第III部分对Silverlight应用程序的生命周期进行剖析,并介绍了一些调试技巧;最后一部分开发了Deep Zoom应用程序和图表应用程序两个案例。全书对每个知识点都通过示例进行讲解,一步一步带您进入Silverlight世界。
本书适合Silverlight开发人员和设计人员,.NET平台开发人员阅读,无论您是Silverlight新手还是已经有一定的开发经验,相信本书都能给您带来收获。
定价:78.0元
出版日期:2009年4月
出版社:电子工业出版社
Silverlight是微软公司推出的新一代RIA技术,是一种跨浏览器、跨平台的.Net Framework的实现,用来构建和发布下一代的媒体体验和Web交互应用,它统一了服务器、Web和桌面的功能。作为一种新的Web内容载体,它可被以Web的方式来发布,在客户浏览器端运行时,它不但可以灵活地和各种服务器端应用交互,更具有和桌面体验一样的、丰富的图形渲染及用户交互控制能力。
Silverlight的意义还远不止于此。试想若干年前服务器端的情形,只有Raw HTML的发布功能,后来出现CGI,开始以构造程序的方式来处理Web请求发放响应,各种应用服务器支撑的编程模型逐步发展起来,直到现在像ASP.NET/WCF、J2EE这样的成熟框架,足以支撑起大规模的Web应用,其中最本质的一条发展线索就是编程模型在服务端的演进。现在,在Internet应用的客户端,具有类似的编程模型本质的线索,即将发展到一个新的阶段。从HTML的渲染、Form Data的原始回发,到Web2.0中对JavaScript、DOM技术的接近极致的应用,再到近一两年各种像Google Earth/FaceBook这类Web API的出现,似乎仍无法满足人们对Web应用用户体验的追求,开发者中的先锋们仍在寻求更先进的编程模型来支撑下一代Web应用的前端。RIA技术应用重新得到重视,借助新的内容类型来补充和突破HTML-Based的局限。然而,在Silverlight 之前,与其类似的技术均无法保证前台开发中“艺术”+“编程”这个Pair中“编程”的匹配度。前台编程模型,仍停留在“脚本”阶段,开发人员的先进思想及技巧、经验均无法“复用”过来,而且无法在保证客户端浏览器运行性能的前提下支撑复杂的桌面级别的UI逻辑和用户体验。现在Silverlight 2来了,它在UI渲染、艺术创作,以及UI逻辑、编程模型,双方面上带来了全新程度的提升。开发人员可以以面向对象面向组件的方式来开发、完整地复用以前的知识和经验。这是Silverlight在Web前台开发编程模型演进上所能带来的巨大变化,从这一点上,我们完全可以看到这项全新的RIA技术的前景。
那么,作为开发人员,我们如何尽可能快而又全面、准确地掌握Silverlight开发技术的方方面面呢?权威准确、翔实全面的资料,加以自己的学习与实践,以及先行者的分享与经验,这些都是不可缺少的。即使是一个非常有经验的.Net开发人员,在转入Silverlight开发时,有时也会由于对其中的异步操作、线程上下文理解不够深入而被莫名的问题弄得焦头烂额。所以,要在学习和实践中避免误区,少走弯路,学习先行者的经验是非常重要而有益的。
本书的作者TerryLee就是这样一位在Silverlight开发领域极富经验的先行者。
初识Terry,是读他博客园上的文章。他给我最深的印象是他的勤奋和才识。后来有缘成为同事,在公司的项目中一起工作,在几个开源项目中,他留给我最深的印象是他对软件技术的天赋。每当我向朋友介绍他时,总爱加上这样一句话:他是我遇到的仅有的几个在技术上最信得过的人之一,无论是系统架构设计方面还是代码实施动手能力方面。
Terry是一个热爱分享的人,这一点从他的博客上可以看出,更可以从与他日常的交流中感受到。这半年多来,Terry主要参与一个重量级应用Silverlight技术的项目,这个大型Web应用项目的页面全部采用Silverlight技术来实现。于是这段时间里与Terry聊到的技术话题中,Silverlight所占的比例就多出许多,经常会就一个可能的最佳实践进行“严正磋商”,或就Silverlight的一个Bug一起来“指点江山”;下面的场景更是常见:“ScottGu已经把我俩的那个问题转给Silverlight小组的Stefan了,估计马上会有答复了!”“Stefan的回复中提到这个问题可能与IAccessible接口有关,要不我来谈谈这个接口?”经常可以从他与Microsoft Silverlight小组的大量往来邮件中,得知一些来自“内部”的信息。不是每个人都能够像Terry这样与Silverlight有如此亲密接触的,即使你是这个方向上的MVP,我想,这与他的求知热情、热爱分享是分不开的。当然,每当回忆起这样的场景,我总会叮嘱他,一定不要忘记把这些都写入他的书中去!
《Silverlight 2完美征程》就是这样的一本书!在Silverlight 2 Beta1期间就已经成稿,在Silverlight 2 RTW版出来后,Terry又投入了大量的精力来重写和校正。书的内容覆盖了Silverlight 2开发的各个方面并被整理得井井有条,多年的技术写作功底在这里又一次得到了体现:图文并茂、讲解透彻,一如博客园中的Terry Lee。
读过本书之后,我对Terry的第一句话就是,怎么还有这么多我们之前没有谈到的内容?
我相信,大家读后的收获,一定会比我更多!
曲春雨
资深架构师
2009年2月于北京
互联网,自从20世纪70年代进入人们的视线以来,经历了翻天覆地的变化。从保密的军事项目延伸到每个人都能享用的丰富服务,从简单的文字发布渠道发展到易于交互的富媒体媒介,从只能在工程师之间交流的复杂科技扩展到每个人都能触及的大众媒体,互联网的服务日益丰富,互联网的覆盖领域逐步扩大,互联网的使用人数迅猛增长。截至2009年1月,全球的网民人数已经达到了15亿,其中中国网民人数居全球第一,达到了2.98亿。
随着网民人数的不断增长,以及人们对互联网服务的巨大需求,互联网技术也在不断推陈出新,从而更好地满足人们的需求。微软的Silverlight技术自发布以来,受到了业内广泛的关注,Silverlight技术作为一种跨平台、跨浏览器的技术在丰富的媒体体验及丰富的交互式应用领域奉献给大家一个值得信赖的平台。
随着国内互联网领域对Silverlight技术应用的不断扩展,越来越多的开发者、设计师开始使用Silverlight技术来实现各种各样的Web应用,这里不乏国内知名的网站,如百度、腾讯、淘宝,等等。
作为一本国内互联网技术社区一直期待的的中文图书,《Silverlight 2完美征程》是一本不可多得的教材、工具书及参考书。本书分为4篇,它们分别为基础篇、进阶篇、高级篇及案例篇。作为一本源于实践的技术博客笔记,一本原汁原味的中文图书,《Silverlight 2完美征程》由浅入深,结合了大量的案例、注释及经验技巧,相信无论您是一个Silverlight技术的初学者还是已经将Silverlight应用于生产环境的开发者,在阅读本书的时候一定会受益良多。
最后,我强烈建议您经常访问本书作者——微软.NET及Web领域最有价值的专家李会军的技术博客http://www.cnblogs.com/TerryLee,相信从他的博客中您可以获得第一手的实战案例及开发技巧和经验。
黄继佳
微软(中国)有限公司 开发及平台合作部技术经理
第I部分 基础篇. 1
第1章 进入SILVERLIGHT世界 3
1.1 SILVERLIGHT概述 3
1.2 创建基本的SILVERLIGHT应用 7
1.3 开发工具简介 13
1.4 认识XAML 17
1.5 应用案例 20
1.6 本章小结 22
第2章 控件模型 23
2.1 控件模型概述 23
2.2 命令控件 25
2.3 文本编辑控件 31
2.4 选择控件 37
2.5 列表控件 43
2.6 日期控件 54
2.7 信息显示控件 59
2.8 数据显示控件 65
2.9 多媒体控件 66
2.10 布局控件 67
2.11 本章小结 72
第3章 界面布局 73
3.1 界面布局概览 73
3.2 使用CANVAS绝对布局 74
3.3 使用STACKPANEL局部布局 78
3.4 使用GRID相对布局 80
3.5 使用边距 84
3.6 使用边框 85
3.7 自定义布局面板 86
3.8 全屏支持 90
3.9 实例开发 94
3.10 本章小结 97
第4章 封装控件观感 99
4.1 控件观感概览 99
4.2 使用样式 99
4.3 使用控件模板 107
4.4 视觉状态管理 115
4.5 本章小结 127
第5章 事件处理 129
5.1 事件概述 129
5.2 鼠标事件处理 130
5.3 键盘事件处理 137
5.4 焦点支持 141
5.5 实例开发 144
5.6 本章小结 148
第6章 绘图应用 149
6.1 绘图概览 149
6.2 LINE直线 150
6.3 RECTANGLE矩形 154
6.4 ELLIPSE椭圆形 159
6.5 POLYGON多边形 162
6.6 POLYLINE多线形 164
6.7 PATH路径绘图 166
6.8 开发实例:实现柱状图.. 169
6.9 本章小结 174
第7章 画刷应用 175
7.1 画刷简介 175
7.2 单色实心画刷 176
7.3 线性渐变画刷 180
7.4 径向渐变画刷 185
7.5 图片画刷 188
7.6 视频画刷 189
7.7 本章小结 191
第8章 图片处理 193
8.1 图像处理简介 193
8.2 创建图像 193
8.3 图像拉伸 195
8.4 裁剪图像 197
8.5 半透明遮罩 198
8.6 图像路径探讨 199
8.7 实例开发 202
8.8 本章小结 206
第9章 几何图形 207
9.1 几何图形简介 207
9.2 几何图形的使用 208
9.3 简单几何图形 210
9.4 复杂几何图形 213
9.5 组合几何图形 224
9.6 本章小结 227
第10章 变形效果应用 229
10.1 变换简介 229
10.2 ROTATETRANSFORM旋转变换 230
10.3 SCALETRANSFORM缩放变换 233
10.4 SKEWTRANSFORM倾斜变换 236
10.5 TRANSLATETRANSFORM移动变换 238
10.6 TRANSFORMGROUP变换组 239
10.7 MATRIXTRANSFORM矩阵变换 240
10.8 实现动画变换 241
10.9 动态添加变换 243
10.10 实例开发 244
10.11 本章小结 250
第II部分 进阶篇 251
第11章 数据绑定 253
11.1 数据绑定简介 253
11.2 绑定数据对象 256
11.3 数据绑定模式 259
11.4 绑定对象集合 266
11.5 构建数据服务 272
11.6 使用数据模板 276
11.7 DATAGRID控件 278
11.8 数据转换 290
11.9 数据验证 293
11.10 本章小结 296
第12章 网络与通信 297
12.1 网络与通信概述 297
12.2 调用WEB SERVICE 298
12.3 调用WCF服务 306
12.4 使用WEBCLIENT通信 310
12.5 访问RESTFUL服务 316
12.6 使用HTTPWEBREQUEST通信 321
12.7 数据操作格式 324
12.8 访问ADO.NET DATA SERVICE 331
12.9 跨域调用策略 336
12.10 本章小结 338
第13章 浏览器交互 339
13.1 浏览器交互概览 339
13.2 访问文档对象模型 340
13.3 使用托管代码调用JAVASCRIPT 350
13.4 使用JAVASCRIPT调用托管代码 356
13.5 使用托管代码处理DOM元素事件 361
13.6 使用JAVASCRIPT处理托管事件 363
13.7 混合HTML和SILVERLIGHT 366
13.8 与浏览器交互相关辅助方法 371
13.9 安全设置 373
13.10 实例开发 375
13.11 本章小结 379
第14章 影音播放 381
14.1 影音功能概述 381
14.2 MEDIAELEMENT对象 382
14.3 媒体状态控制 388
14.4 VIDEOBRUSH和MEDIAELEMENT 392
14.5 本章小结 394
第15章 动画制作 395
15.1 动画概述 395
15.2 时间线 401
15.3 故事板 405
15.4 FROM/TO/BY动画 410
15.5 关键帧动画 416
15.6 编程方式控制动画 430
15.7 实例开发 433
15.8 本章小结 436
第III部分 高级篇 437
第16章 自定义控件 439
16.1 控件模型 439
16.2 创建简单按钮控件 440
16.3 本章小结 455
第17章 独立存储 457
17.1 独立存储概述 457
17.2 使用独立存储 458
17.3 管理存储空间 465
17.4 独立存储配置 467
17.5 进一步认识独立存储 472
17.6 本章小结 474
第18章 墨迹标注应用 475
18.1 INKPRESENTER概览 475
18.2 收集显示数据 478
18.3 笔画设计 480
18.4 美化INKPRESENTER 482
18.5 存储标注 484
18.6 本章小结 486
第19章 应用程序剖析 487
19.1 应用程序概述 487
19.2 应用程序生命周期 488
19.3 应用程序宿主 491
19.4 应用程序包揭秘 495
19.5 应用程序部署 498
19.6 本章小结 501
第20章 异常处理与调试 503
20.1 异常处理 503
20.2 使用VISUAL STUDIO基本调试 508
20.3 使用WINDBG高级调试 511
20.4 本章小结 516
第IV部分 案例篇 517
第21章 开发DEEP ZOOM应用程序 519
21.1 DEEP ZOOM概述 519
21.2 DEEP ZOOM示例 521
21.3 本章小结 525
第22章 开发图表应用程序 527
22.1 SILVERLIGHT TOOLKIT概述 527
22.2 开发图表示例 529
22.3 本章小结... 535
缘起
Silverlight作为微软进入RIA领域的标志,在它发布之初,就受到了业界广泛的关注。作为长期活跃在国内最大的.NET社区——博客园的我,自然也不例外,时不时在自己的博客(http://terrylee.cnblogs.com)上发布一些Silverlight的最新消息。Silverlight 2发布第一个Beta版本的时候,我撰写了《一步一步学习Silverlight 2》系列文章,没想到一石激起千层浪,引发了园子里一股学习Silverlight的热潮,热心朋友的评论也让我收获颇多。
当博文视点的陈琼编辑找到我,希望我能够将该系列文章整理成书时,我也有过短暂的犹豫,虽然自己接触Silverlight的时间不短了,也在使用Silverlight 2来构建自己的项目,但这毕竟是国内第一本原创的Silverlight 2图书,在跟博文视点周筠老师的一番谈话后,这种犹豫很快被打消,于是便开始了数月的写作过程。随着Silverlight 2版本的变化,本书也是几易其稿,最终才有这本《Silverlight 2完美征程》呈现在大家面前。
本书有什么
第I部分:基础篇,带领大家进入Silverlight的大门,在内容安排上更加偏重于Silverlight中用户界面的呈现方面。从开发一个简单的Silverlight 2应用程序开始,逐步进入控件模型、布局管理、封装控件观感,再到事件模型,最后介绍了Silverlight在图形图像处理方面的支持。
第II部分:进阶篇,走出Silverlight绚丽的外表进入另一个层面,详细介绍了Silverlight中的数据绑定模型、强大的网络通信功能及与浏览器之间的互操作性,最后介绍了多媒体和动画方面的支持。
第III部分:高级篇,本部分介绍了如何在Silverlight应用程序中自定义控件,以及一些高级的Silverlight使用技术,并在第19章对应用程序模型进行了剖析,第20章介绍了Silverlight应用程序的一些调试技巧。
第IV部分:案例篇,通过两个典型案例介绍了Silverlight中Deep Zoom应用程序开发及使用Silverlight Toolkit开发图表应用程序,以提高实战能力。
如何阅读
本书所有的示例程序都采用C#语言来实现,在Visual Studio 2008下开发完成,在阅读之前,大家必须对C#语言有所了解,并安装了Visual Studio 2008,以便能够对书中的示例进行调试。笔者博客(http://www.cnblogs.com/TerryLee)的首页上,有本书22章所有的示例程序源代码的下载链接,可以直接运行通过。
本书在编写时采用了循序渐进的方式,由浅入深,但这并不意味着在阅读时一定要按照章节顺序阅读,如果对Silverlight 2开发有一些初步的了解,或者有Silverlight 1开发基础的开发者,可以直接跳过第I部分基础篇直接进入后面的学习,也可以选取其中感兴趣的章节进行阅读。
支持
虽然作者、编辑和审稿对书稿进行了反复的推敲和修改,但是限于时间和作者水平,失误在所难免,为了使本书更好地服务于读者,请您将关于本书的任何提问纠错或建议发至以下任一地址:
作者个人邮箱:lhj_cauc@163.com
作者个人博客:http://www.cnblogs.com/TerryLee
作者个人网站:http://www.dotneteye.cn
博文视点网站:http://blog.csdn.net/bvbook
我们将尽力解决您的问题,并向您的指正致谢。
从2006年开始,微软推出了代码名为“WPF/E”的项目,该项目从诞生到正式命名为“Silverlight”,再到1.0版本正式发布,标志着微软正式进入RIA(Rich Internet Application,富互联网应用)领域。Silverlight的出现为开发RIA应用程序带来了更多的选择,遗憾的是在Silverlight 1.0时代,它的功能相对比较简单,只能使用JavaScript语言进行开发,且主要面向构建丰富的多媒体体验。Silverlight 2的发布,从根本上改变了这一切,它不仅支持多种语言如C#、VB.NET,甚至于可以使用动态语言IronPython、IronRuby来构建,除此之外,内置了丰富的UI控件,丰富的网络通信支持及浏览器互操作性支持,使得在Silverlight 2下进行RIA应用程序的开发,将变得更加容易。
笔者在Silverlight 2发布第一个测试版的时候,曾经在个人博客上撰写了《一步一步学习Silverlight 2》系列文章,受到了广大网友的热评,后来又参与了多个基于Silverlight 2的大型项目,积累了大量的Silverlight开发实践经验,对于Silverlight的前景也更加充满信心。目前Silverlight在国内已经有相当可观的装机量,对于国内的开发者来说,也许现在是学习和使用Silverlight的最好时机,但是苦于国内没有一本真正意义上原创的深入介绍Silverlight 2的书籍,本书的写作正是力图填补这一空白,以帮助广大开发者更好地使用Silverlight技术开发出富有创意的应用程序。
最后,仅以此书献给广大的Silverlight爱好者和同仁,让我们一起踏上Silverlight的征程,体验Silverlight之美,创造互联网世界的视觉盛宴。
李会军
2009年3月于北京