Silverlight 2 完美征程(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-30 09:40:53

点击下载

作者:李会军

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Silverlight 2 完美征程

Silverlight 2 完美征程试读:

前言

中提供的联系方式与我进行沟通,我会尽力帮大家解答。博文编辑您在瑞典的软件公司从事过很多大型的开发项目,您日常主要负责的工作是哪些?本书内容与您的工作有哪些联系?在书中是如何体现?李会军我的主要工作职责是负责软件架构设计、技术培训等,在2008年我们基于Silverlight 2完成了挪威某政府部门的大型项目,整个项目对于我来说,积累了相当多的经验,另外在开发时也会遇到很多Silverlight方面无法解决的问题,我都及时跟微软Silverlight开发团队进行邮件交流。本书写作过程中,我一直努力把自己在项目中积累下来的经验及与Silverlight开发团队的交流内容融入到书稿中,这样对于学习Silverlight的朋友可以少走很多弯路。作者访谈录针对俞甲子、石凡和潘爱民三位的新书《程序员的自我修养——链接、装载和库》的出版,博文视点对俞甲子进行了专访,现将博文小编与俞甲子的对话整理成文,以飨读者。博文编辑甲子你好,能否向读者介绍一下你是如何对操作系统的底层机制和运行原理产生兴趣的?俞甲子很大程度上是因为性格决定的吧,因为我是一个喜欢对技术问题寻根究底的人,不满足于仅仅了解一个技术的表面,而是希望能够通过层层深入地挖掘,找出它背后的最关键最核心的机理。我相信很多计算机技术都是相通的,它们的核心思想是相对稳定不变的。经常听很多人谈起,IT技术日新月异,其实真正核心的东西数十年都没怎么变化,变化的仅仅是它们外在的表现,大体也是换汤不换药的。为了了解操作系统内核以及装载、链接等这些关键的技术,我曾经自己从头写了一个很小的内核、装载器以及一个简单的运行库,它们组成了一个可以完整运行在PC上的支持多进程、多线程的操作系统环境,并且支持虚拟存储、简单的文件系统、网络、鼠标键盘等,前后加起来花了两年多时间,大约有数万行代码,编译器和链接器使用的是GCC和LD。当然如果继续写下去,可以让它变得功能更加完整,但是我停止了对它继续维护,因为我认为通过这个雏形系统,我已经了解了背后的机理,继续写下去更多的是重复性的工作,因为现在已经现存了很多很优秀的内核、装载和链接的相关软件和标准。虽然我在这个系统上花费了很多时间和精力,却没有获得什么直接的收益,也没有让我跟上最新的技术潮流,但是它给我带来间接的收获却是无法言表,它使我在后来学习其他技术的时候能够很快地触类旁通、自下而上地去理解整个系统,往往能够理解得更加深刻更加透彻。博文编辑介绍链接、装载和库原理的资料非常少,你在自己钻研的过程中,遇到的最大的困难是什么?俞甲子当然相关资料很少会给我们带来很多的困难和挑战,而且相关的源代码往往是经过多年的发展和锤炼,变得非常注重性能和效率,而很少考虑可读性,这使得通过挖掘源代码理解机制变得更为困难。这些代码很多都是相关领域的黑客高手写得,他们对系统机制的了解已经到了很深刻的地步,一小段代码会用尽系统的各种机制和方法,经常让人看得不知所云。比如系统库在不同的链接和装载方式下对C++全局对象的构造和析构,就异常复杂。整个流程来回曲折,加上有些代码已经遗弃,还会造成误解。Glibc这种支持数十种平台的系统还要考虑到各个系统的通性和个性,更使整个过程雪上加霜。其实理解还不是最大的困难,最大的困难是理解了这个复杂而又晦涩的机制和过程,如何将它们尽量地简化,从中取舍,摈弃所有不必要的内容,再将它剥离出来后组织成尽量深入浅出层层引导的文字和图表,这才是最大的挑战。博文编辑在自学的过程中,一定有许多令你得意或者开心的事,可不可以回忆一下?俞甲子在这个过程中,最烦恼的事莫过于一个困扰了你很久的问题,通过各种办法,包括阅读源代码等还是无法理解或者无法解释某个程序现象。忽然有一天某个灵感突现,回头再仔细阅读代码,紧接着马上试验一下,果真如此!大有拨云见日的感觉,这应该是最开心的事吧。博文编辑你现在从事的工作和系统底层结合紧密吗?在系统运行机制上的积累对目前的工作有帮助吗?俞甲子我目前从事的工作跟系统底层关系不是很大,现在最常用的都是WEB前端、mysql数据库等这些应用层面的系统。虽然不是直接与系统底层打交道,但是之前的积累无时不刻都在帮助我应用的开发有着更深入的理解。比如mysql系统的内存和文件系统的优化,如果对操作系统的虚拟存储和文件系统机制没有深入的了解的话,那么可能只能在配置参数上做一些“猜测”性质的调整,不断地尝试各种参数,或者参考网络上别人提供的配置参数,但不一定适合自己的应用情况。了解虚存如何运作,进程地址空间的分布等等,将会对应用的优化甚至是构架设计上都会有更高层次的俯视。博文编辑对知识的渴求,对未知世界的好奇是人类的天性。但这种天性也需要引导,小心保护,否则就可能会喪失。读书是一种很好的保护途径,可不可以向读者推荐几本对你个人成长影响最大的书?俞甲子如果是推荐非技术类的书籍,我应该不是很在行。在这里向大家推荐几本我读过的、并且跟本书主题相关的几本书籍吧。《Linkers and Loaders 》,John R. Levine。这本书基本上是链接和装载方面最为完整和权威的理论著作了,但是内容有些偏旧,并且有些晦涩。《Intel® 64 and IA-32 Architectures Software Developer's Manuals》, Intel 官方的 x64 和x86CPU的技术手册,总共分3卷,另外还有几本优化手册,这些手册不适合通读,但强烈建议阅读一下其中的介绍性章节,并且手边能够常备一份,以便需要时查阅, http://www.intel.com/products/processor/manuals/。《Linux内核源代码情景分析》,毛德操 胡希明。这部书分为上下两卷,总共近2000页,虽然出版年份较早(2001年出版),而且是基于Linux 2.4内核的,但是它对很多细节的描述非常到位,比很多Linux内核的书籍要详细,值得一看。《深入理解计算机系统,Computer Systems A Programmer's Perspective》,(美)布赖恩特(Bryant,R.E.)。这本书对整个计算机软硬件体系结构进行了深入浅出的介绍,是理解系统底层不可多得的好书,非常推荐!《深入解析 Windows 操作系统 第 4 版——Microsoft Windows Server 2003/Windows XP/Windows 2000技术内幕》,Mark E.Russinovich(著),潘爱民(译)。这本书是理解Windows内核最好的选择,至少我没有看到任何一本描述关于Windows内核的书能与它相媲美。《 Advanced Programming in the UNIX Environment,Second Edition 》, W.Richard Stevens,Stephen A.Rago。这本书被誉为UNIX程序设计的“圣经”,也是了解*NIX系统内核以上,运行库和执行环境的很好的选择。推荐序1Silverlight是微软公司推出的新一代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开发时,有时也会由于对其中的异步操作、线程上下文理解不够深入而被莫名的问题弄得焦头烂额。所以,要在学习和实践中避免误区,少走弯路,学习先行者的经验是非常重要而有益的。本书的作者Terry Lee就是这样一位在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月于北京推荐序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,相信从他的博客中您可以获得第一手的实战案例及开发技巧和经验。黄继佳微软(中国)有限公司 开发及平台合作部技术经理2009年2月于北京序言从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月于北京前言缘起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://terrylee.cnblogs.com作者个人网站:http://www.dotneteye.cn博文视点网站:http://blog.csdn.net/bvbook我们将尽力解决您的问题,并向您的指正致谢。致谢一本书稿的写作到出版,绝不仅仅是作者本人付出辛苦的努力就能完成。首先感谢我的编辑陈琼,感谢她为本书所付出的努力,没有她的监督与支持,本书不可能如期完稿。感谢博文视点的周筠老师对我的鼓励。感谢博文视点的编辑晓菲、美编杨小勤和徐勤栋为本书后期的制作加工所付出的辛苦和努力。必须要感谢博客园中的好多朋友,感谢博客园站长杜勇(dudu)为.NET开发人员提供了一个非常好的交流平台,感谢与我一起交流技术的Anytao、Dingxue、Jillzhang、罗炳桥等园子里所有的朋友,特别要感谢JesseQu在本书写作过程中提出非常有建设性的建议,以及对书稿的审阅与点评。最后还要感谢养育我的父母和我的女朋友杨玉霞,正是她的悉心照顾,才能让我心无旁骛,专心写作,本书的出版也算是为即将步入婚姻殿堂的我们提前送上了一份新婚礼物。李会军2009年3月于北京联系博文视点您可以通过如下方式与本书的出版方取得联系。读者信箱:reader@broadview.com.cn投稿信箱:bvtougao@gmail.com北京博文视点资讯有限公司(武汉分部)湖北省 武汉市 洪山区 吴家湾 邮科院路特1号 湖北信息产业科技大厦1402室邮政编码:430074电话:027-87690813传真:027-87690595若您希望参加博文视点的有奖读者调查,或对写作和翻译感兴趣,欢迎您访问:http://bv.csdn.net关于本书的勘误、资源下载及博文视点的最新书讯,欢迎您访问博文视点官方博客:http://blog.csdn.net/bvbook第Ⅰ部分基础篇第1章 进入Silverlight世界本章内容 Silverlight是微软推出的一种跨浏览器、跨平台的富互联网应用程序开发技术,具有极其优越的矢量图形、动画和多媒体支持的能力,内置支持丰富的网络通信功能,迄今为止发布了1.0和2.0两个版本。本章将带你进入Silverlight世界,使你对Silverlight应用程序开发有一个初步的认识,主要内容如下:Silverlight概述创建基本的Silverlight应用开发工具简介认识XAML应用案例本章小结1.1 Silverlight概述1.1.1 什么是SilverlightSilverlight的前身是WPF/E,它是微软推出的一种跨浏览器、跨平台的富互联网应用程序开发技术,具有极其优越的矢量图形、动画和多媒体支持的能力,内置支持丰富的网络通信功能,迄今为止发布了1.0和2.0两个版本,本书将以Silverlight 2为主要版本进行讲解。Silverlight 2具有如下功能。● WPF和XAML:Silverlight包含WPF技术的一个子集,大大扩展了浏览器中用于创建 UI的元素。● 对JavaScript的扩展:Silverlight提供对通用浏览器脚本语言的扩展,可以控制浏览器UI,包括使用WPF元素。● 跨浏览器、跨平台支持:Silverlight应用程序可以在任意平台上的所有通用浏览器上自如运行,作为开发人员完全不必担心用户具有何种浏览器或平台。● 与现有应用程序集成:Silverlight应用程序可以与现有JavaScript和ASP.NET AJAX代码无缝集成,以增强已有的功能。● 可以访问.NET Framework编程模型和相关工具:可以使用诸如IronPython等动态语言及C#和Visual Basic等语言创建基于Silverlight的应用程序,可以使用Visual Studio的开发工具开发基于Silverlight的应用。● 丰富的网络支持:Silverlight包括对TCP上的HTTP的支持,可以调用WCF或任何基于SOAP的服务并接收 XML、JSON 或RSS等数据,并且支持Socket通信。● LINQ支持:Silverlight包括语言集成查询(LINQ)。1.1.2 Silverlight架构Silverlight平台作为一个整体,由两个主要部分构成:核心表示层框架和Silverlight中的.NET Framework,前者提供面向UI和用户交互的组件和服务(包括用户输入、用于 Web 应用程序的轻量型 UI 控件、媒体播放、数字版权管理和数据绑定),表示层功能(包括矢量图形、文本、动画和图像),此外还包括用于指定布局的可扩展应用程序标记语言(XAML);Silverlight中包含一个.NET Framework的子集,其中包括数据集成、可扩展 Windows 控件、网络、基类库、垃圾回收和公共语言运行时。这两部分之间的关系可以用图1-1来表示。图1-1其中核心表示层组件包括如下几个部分。● 输入:处理来自硬件设备(例如键盘和鼠标、绘图设备和其他输入设备)的输入。● UI呈现:呈现矢量和位图图形、动画及文本。● 媒体:具有播放和管理各种类型音频和视频文件(例如,.WMP 和 .MP3 文件)的功能。● 控件:支持可通过应用样式和模板来自定义的可扩展控件。● 布局:可以动态定位 UI 元素。● ◇数据绑定:可以链接数据对象和UI元素。● DRM:可以对媒体资产启用数字版权管理。● XAML:为XAML标记提供分析器。Silverlight中的.NET Framework包括如下几个部分。● 数据:支持语言集成查询(LINQ)和LINQ to XML功能,这些功能简化了集成和使用不同源数据的过程,还支持使用XML和序列化类来处理数据。● 基类库:一组.NET Framework库,这些库提供了基本编程功能,例如字符串处理、正则表达式、输入和输出、反射、集合和全球化。● WCF支持:提供的功能可简化对远程服务和数据的访问。其中包含浏览器对象、HTTP请求和响应对象、对跨域HTTP请求的支持、对 RSS/Atom联合源的支持及对JSON和SOAP服务的支持。● CLR:Silverlight中的公共语言运行时称之为CoreCLR,提供了内存管理、垃圾回收、类型安全检查和异常处理。● WPF控件:Silverlightk中提供了一组丰富的控件,其中包含 Button、Calendar、CheckBox、DataGrid、DatePicker、HyperlinkButton、ListBox、RadioButton 和ScrollViewer等。● 动态语言运行时(DLR):支持动态编译和执行脚本语言,以编写基于Silverlight的应用程序。包括一个可插接式模型,用来添加 Silverlight所使用的其他语言的支持。1.1.3 Silverlight的跨平台能力由于Silverlight的应用程序是跨平台的,因此它们可以在当今大多数Web浏览器中运行,下表为微软官方公布的Silverlight所支持的操作系统与浏览器对照表。虽然目前微软官方并没有提供针对Linux的开发程序和安装包,但是在社区中有一个开源项目“Moonlight”,将Silverlight从Windows平台移植到了Linux平台,该项目的目标是让Silverlight运行在Linux平台下,并且提供在Linux平台下的Silverlight开发包。Moonlight的官方站点是http://www.mono-project.com/Moonlight,如图1-2所示。图1-21.2 创建基本的Silverlight应用1.2.1 开发环境准备在开始开发基于Silverlight 2的应用程序之前,首先需要准备开发环境,包括Silverlight 2运行时和Silverlight开发工具。● Silverlight 2运行时:有针对Windows和Mac平台两种安装包,只有安装该运行时,Silverlight应用程序才能够在浏览器中进行正确的运行。● Silverlight Tools for Visual Studio 2008:在Visual Studio 2008中开发Silverlight 2应用程序,必须安装该工具,并且必须安装Visual Studio 2008 SP1。● Expression Blend:使用 Expression Blend能够以可视化的方式方便地设计基于Silverlight 2的应用程序用户界面,如操作画布、控件等。以上工具都可以在微软Silverlight官方社区站点http://silverlight.net/下载。1.2.2 Silverlight项目元素准备好上面的开发环境之后,就可以开始第一个Silverlight 2应用程序的开发。打开Visual Studio 2008,可以看到已经安装了Silverlight应用程序模板,如图1-3所示。图1-3图1-3中有“Silverlight Application”和“Silverlight Class Library”两个项目模板,它们之间的区别如下所示。● Silverlight Application:Silverlight应用程序项目模板,使用它创建的项目编译后将直接打包为可宿主在HTML页面中的应用程序包。● Silverlight Class Library:Silverlight类库项目模板,使用它创建的项目编译后为一个程序集,可以直接在其他Silverlight类库项目或Silverlight应用程序项目中使用。输入项目名后进入下一步,将出现添加Silverlight应用程序对话框,如图1-4所示。图1-4在该窗口中,要求开发人员选择以何种方式宿主Silverlight应用程序。● 添加新的 ASP.NET Web类型的项目到解决方案中宿主 Silverlight 应用程序。ASP.NET Web类型的项目可以选择是ASP.NET网站、ASP.NET应用程序,如果安装了ASP.NET MVC框架,还可以选择使用ASP.NET MVC项目作为宿主。● 自动创建一个测试HTML页面宿主Silverlight应用程序。点击“确定”按钮后,将会在Visual Studio 2008中创建Silverlight项目,如图1-5所示。图1-5可以看到,如果选择添加新的ASP.NET Web类型的项目到解决方案中宿主Silverlight应用程序,将会在解决方案中创建一个新的ASP.NET Web类型的项目。下面对Silverlight项目中的文件做一些解释。● AppManifest.xaml:生成应用程序包所需的应用程序清单文件,开发人员无须手工编辑该文件。● AssemblyInfo.cs:包含嵌入到所生成的程序集中的名称和版本元数据,该文件的作用与普通的.NET应用程序相同。● App.xaml:Silverlight应用程序文件,派生于Application类,在一个Silverlight应用程序项目中,必须有一个该文件,它负责指定应用程序的启动页面,以及应用程序的其他设置,当Silverlight应用程序在浏览器中运行时,由Silverlight插件负责初始化该类。● Page.xaml:Silverlight用户控件,可以使用Page类来创建Silverlight应用程序的用户界面,Page类派生于UserControl。在Silverlight应用程序中可以有多个用户控件。如果须要添加新的用户控件到Silverlight应用程序项目中,可以在Visual Studio 2008“添加新项”对话框中选择“Silverlight User Control”,如图1-6所示。图1-6在ASP.NET Web类型的项目中,同样会添加一些文件,我们只关心其中两个文件,以Silverlight项目名+“TestPage”命名的ASPX文件和HTML文件,它们都是Silverlight应用程序的宿主文件,打开ASPX页面将会看到这样一段代码:这里使用服务器控件来宿主Silverlight应用程序, Source属性指定了一个后缀为xap的文件,该文件就是Silverlight应用程序编译之后打包而成的文件。同样打开HTML页面,可以看到这样一段代码:这里使用不同的方式在HTML进行宿主Silverlight应用程序,但是指定Silverlight应用程序包文件不能缺少。如果想宿主Silverlight应用程序在其他类型的Web页面中,如PHP、JSP等,都可以使用这种方式,关于Silverlight宿主将在本书第19章详细介绍。如果在创建Silverlight项目过程中选择了“自动创建一个测试HTML页面宿主Silverlight应用程序”一项,则在解决方案中只有一个Silverlight应用程序项目,不会添加ASP.NET Web类型的项目作为测试项目,如图1-7所示。图1-7当编译Silverlight项目时,可以看到在Debug文件夹下创建了一个名为“TestPage.html”的HTML页面,可以使用它来作为Silverlight应用程序的测试页面,如图1-8所示。图1-81.2.3 简单示例使用1.2.2节中所介绍的方法创建一个Silverlight应用程序项目,打开Page.xaml文件,替换为如下示例代码:这段代码非常简单,仅仅是在页面上显示一个Button控件。直接按下“F5”运行,可以看到效果如图1-9所示。图1-9下面再为该Button控件注册单击事件,可以直接在XAML中注册,Visual Studio会有智能提示,如图1-10所示。图1-10编写Button控件单击事件的实现,改变Button的文字信息,示例代码如下所示:再次运行应用程序后单击Button控件,效果如图1-11所示。图1-11至此就完成了一个Silverlight应用程序的开发。1.3 开发工具简介开发基于Silverlight 2的应用程序,主要会用到两个工具。● Visual Studio 2008:主要针对开发人员,使用它进行托管代码的编写、调试与跟踪。● Expression Blend 2:主要针对设计人员,使用它以可使用的方式进行UI的设计、操作画布及控件等。1.3.1 Visual Studio 2008Visual Studio 2008想必大家都不陌生了,在Visual Studio 2008中打开一个XAML文件时,界面如图1-12所示。图1-12有几处比较重要的地方在图中用数字序号做了标注。① XAML编写区:所有的XAML编写都在该区域完成。② UI预览区:图中2处,在XAML编写区中编写代码时,可以在UI预览区中即时显示出效果。但是目前在Visual Studio 2008中还不能通过拖动工具箱中的控件到UI预览区以便自动生成XAML代码。③ 缩放按钮:拖动该按钮可以放大或者缩小UI预览界面。④ 切换按钮:点击该按钮可以实现XAML编写区和UI预览区的上下切换。⑤ 控制按钮:共有三个按钮,分别用于控制XAML编写区和UI预览区是水平划分还是垂直划分,或者隐藏其中一个。虽然目前在 Visual Studio 2008中还不支持可视化设计,但是到了下一个版本的Visual Studio中,会在可视化设计方面有很大的改进,如可以直接进行可视化的数据绑定等,如图1-13所示。图1-131.3.2 Expression Blend 2Expression Blend 2以非常友好的界面供设计人员可视化的进行WPF或Silverlight项目的UI设计。它的强大之处在于:● 全套矢量图形工具● 易用的可视化界面● 动画和媒体集成● 与数据源、外部资源的强大集成● ◇实时设计和XAML视图● 与Visual Studio 2008的无缝集成,使用Visual Studio 2008中创建的解决方案可以直接在Expression Blend 2中打开,反之亦然。由于本书并不偏重于Silverlight设计方面,所以对于Expression Blend 2下面只给出一些常用界面和功能的介绍,如果大家须要使用Expression Blend 2进行Silverlight 2应用程序的设计,可以参考微软有关文档。在Expression Blend 2中新建项目时,可以看到它支持4种不同类型的项目:包括WPF应用程序、WPF控件库、Silverlight 1站点和Silverlight 2应用程序,如图1-14所示。图1-14在Expression Blend 2中进行UI设计时的界面如图1-15所示。图1-15其中主要有如下几个区域。① 工具栏:所有可视化的元素都包括在工具栏中,如各种图形元素、控件等,可以直接拖拽工具栏中的元素到设计区。② 设计区:所有的设计工作都在该区域完成,包括操作画布等。③ 对象和时间线管理面板:该区域中能够看到所有在设计区中定义的元素及动画等。④ 状态面板:管理UI元素的视觉状态,在本书第4章将详细介绍。⑤ 切换按钮:共有3个按钮,可以拆分XAML编写区和设计区,或者在两者之间进行切换。⑥ 解决方案面板:Silverlight项目的解决方案管理,可以看到所有在Silverlight项目中的页面。⑦ 属性面板:在设计区中选中一个UI元素,可以通过该面板进行元素的属性设置。⑧ 资源面板:管理所有在Silverlight项目中的资源。1.4 认识XAML1.4.1 什么是XAML在开发基于Silverlight的应用程序时,XAML语言具有举足轻重的地位,因此掌握好XAML语言,绝对是进入Silverlight世界的一条捷径。XAML是eXtensible Application Markup Language的缩写,翻译为中文是“可扩展应用程序标记语言”,它是一种声明性语言,可以使用声明性XAML标记创建可见UI元素。然后可以使用单独的代码隐藏文件响应事件和操作使用 XAML声明的对象。如下面的示例代码,声明了一段最简单的XAML:这段代码中最外层是以UserControl开始,然后在UserControl中声明了一个Grid元素,仅此而已,其中最重要的一点就是命名空间的声明,如下两行代码:第一个声明将整个Silverlight命名空间映射为默认命名空间,第二个声明为XAML映射一个单独的XML命名空间,通常将它映射到x:前缀。这两个声明之间的关系是:XAML是一个语言定义,而Silverlight是将XAML用作语言的一个实现,特别要指出的是,Silverlight使用了XAML的一个严格子集。XAML语言指定某些语言元素,其中的每个元素都应当可以通过针对XAML命名空间执行的XAML处理器实现来进行访问。XAML的Silverlight实现及其预期的编程模型通常对其自己的XAML词汇表使用默认的XML命名空间,而对XAML命名空间的Silverlight子集中需要的标记语法使用单独映射的前缀。按照约定,该前缀是x:,例如,若要通过分部类将全部代码隐藏加入XAML文件,必须将该类指定为相关XAML 文件的根元素中的x:Class 属性,如上述示例代码中x:Class="Chapter01. XAMLExample.Page"。1.4.2 XAML基本使用本节将介绍XAML的一些基本使用,包括在XAML中声明对象、为元素设置属性等。在XAML中声明对象可以直接使用对象元素语法,使用开始标记和结束标记将对象声明为XML元素,如下示例代码所示,在Grid元素中声明了一个矩形元素:如果元素中没有包含其他子元素,还可以简写为:在XAML中为元素设置属性,有多种方式可供选择:● 使用XML特性语法● 使用属性元素语法● 使用内容元素语法此方法列表并不表示可以使用这些方法中的任何一种来设置给定的属性,在Silverlight中某些元素的属性只支持其中一种方法,某些属性可能支持多种方式的属性设置方法。使用XML特性语法为元素设置属性非常简单,如下面的示例代码所示:Silverlight中的某些元素属性支持使用属性元素语法来设置属性,即在元素的属性中再指定另外一个子元素,如下面的示例代码所示:某些Silverlight元素提供的属性允许使用XAML语法时忽略该属性的名称,仅通过提供所属类型的对象元素标记中的一个值来设置该属性,称之为“内容元素语法”。如TextBlock元素的Text属性,可以如下示例代码所示设置Text属性而无须指定Text属性的名称:当然对于该属性也可以按如下形式指定Text属性,效果是一样的:1.4.3 XAML特性除了上面介绍的XAML的基本使用之外,XAML还有如下一些重要的特性:● XAML是以XML为基础的语言扩展● XAML必须是格式良好的XML● XAML中的标记对应.NET Framework中的类型● XAML具备面向对象及继承的特性● XAML区分大小写● XAML中能实现的,通过隐藏代码同样可以实现● XAML中也会创建元素树

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载