如果您正在阅读本书,那么您将开始利用Silverlight编写丰富的、迷人的ASP.NET应用程序,并且想确保程序首次就能正常运行。购买本书只是为该过程开了一个头,使用Silverlight开发该类应用程序将大大降低学习曲线,并且能节约您以及您公司的大量时间和金钱。并且这仅仅只是开始而已。 我们编写本书的主要目的是为ASP.NET开发人员提供相应的能力以让他们快速且简单地创建可视化界面非常好的Internet应用程序,并且这些应用程序具有丰富的交互性从而以一种新的在线体验来完全吸引用户。Silverlight提供了达成该目标的所有功能,并且是以一种虔诚的方式提供的! 首先,.NET框架的能力已经包含在一个插件中,而该插件可以嵌入多个操作系统的多个浏览器中,从而为开发人员提供了富Internet应用开发中强大的功能以及灵活性。 除了介绍Silverlight所具有的各个特性以外,本书还将确保您可以调试Silverlight应用程序,可以排除应用程序中的漏洞,以及对应用程序的性能进行微调。此外,本书还将确保您可以将Silverlight无缝地集成到已有的ASP.NET体系结构和代码库中。 本书读者对象 本书主要针对那些想快速掌握Silverlight 2所提供的所有功能的.NET开发人员和架构师。 除了涉及大量Silverlight 2所提供的特性外,本书还在需要的地方演示了某些特殊的特性如何与ASP.NET承载应用程序实施紧密集成。第7章中就给出了一个例子。在该例子中,Silverlight应用程序直接使用了ASP.NET Profile服务以获取用户特有的数据。 可以这么说,尽管本书针对的是ASP.NET开发人员,但是它在一定程度上涉及到了Silverlight 2所有的突出特性,因此它对于那些不使用ASP.NET的开发人员而言也是非常有用的编程资源。 但是,如果您是一名.NET开发的新手,那么首先需要查阅一本.NET的入门书籍以帮助克服学习一种新的语言所遇到的语法问题和环境相关问题。如果您不是,那么屏住呼吸,开始学习吧! 本书主要内容 本书涵盖了Silverlight 2的所有特性集,并深入讨论了各个主题领域以提供具有一定深度和广度的介绍。除了介绍Silverlight API的主要组件以外,本书还涉及到调试Silverlight应用程序,排查Silverlight应用程序的故障,以及调节Silverlight应用程序的性能,从而使得您具有在给定的时间内创建基于Silverlight的高级应用程序的所有技能和知识。 很重要的一点,本书还涵盖了ASP.NET和Silverlight之间的集成点,从而使得您可以采用不同的技术无缝地利用Silverlight的功能来改善已有的和新建的ASP.NET Web站点。 如果想利用Silverlight进行编程,并且可能使用ASP.NET作为承载,那么本书将包含所有的内容。 本书结构 本书分为两个不同部分。第Ⅰ部分为“面向ASP.NET开发人员的Silverlight基础”,第Ⅱ部分为“使用Silverlight开发ASP.NET应用程序”。第Ⅰ部分试图提供一些Silverlight的基础支持,包括作为一项技术Silverlight是什么,以及它在基于Web开发中所起的作用。该部分还在较高的层次上分析了Silverlight应用程序的基本组件,并揭示了开发应用程序之前所需要的所有知识。 第Ⅱ部分则深入地介绍了Silverlight的各个特性,并展示了如何利用Silverlight和ASP.NET的功能来创建迷人的应用程序。 各章的主要内容如下所示: ● 第I部分:“面向ASP.NET开发人员的Silverlight基础” • 第1章:“Silverlight基础”——本章将在一个比较高的层次上介绍Silverlight是什么,以及它如何帮助您开发迷人的Web应用程序。本章还给出了Silverlight和其他基于Web技术之间的差异,并描述了利用Silverlight实施开发所需要的开发环境。简而言之,在阅读了该章以后,您将可以描述Silverlight,解释为什么将使用Silverlight,了解它相对于其他竞争者而言有哪些优势。 • 第2章:“Silverlight体系结构” ——Silverlight允许构建具有非常好的用户界面且功能全面的应用程序,但是如果在开发过程中遇到什么问题的话,那么理解开发时所基于的基层体系结构将显得比较重要了。该章给出了Silverlight 2的核心特性,并介绍了这个高度灵活的框架中的构造块,还特别注意了和已有的ASP.NET应用程序之间的集成。 • 第3章:“XAML简介”——该章的目的就是让您快速地了解XAML,从而帮助消除一些语法问题,并让您掌握这种多目标声明式语言的基础知识。该章还给出了如何将XAML文件和.NET代码进行关联,从而帮助您将动态的事件驱动行为注入Silverlight UI中。最后,该章还介绍了一项用于动态创建XAML的技术,随后还简单介绍了Expression Blend。 • 第4章:“Silverlight编程”——到阅读该章时,您将渴望开始编码了。该章将详细分析您将编写的代码。这些代码将作为构成Silverlight应用程序的编程构造块,并且对平台特性不可知。该章将彻底地分析Silverlight应用程序的组件,并深入地解释其所有的构造块。此外,该章还详细地介绍了Silverlight应用程序的生命周期,以及如何将生命周期连接到一起。该章还给出了将Silverlight插件内嵌到应用程序中的不同方法,随后还简单介绍了JavaScript及其相应的DOM模型。接着,该章讨论了Silverlight对象模型,解释了如何构建可视化树以组成UI。该章还介绍了另外一项用于动态创建XAML并将其添加到可视化树上的技术。最后,该章介绍了Silverlight事件模型、浏览器交互以及线程模型。 ● 第II部分:“使用Silverlight开发ASP.NET应用程序” • 第5章:“创建用户界面”——您现在已经知道了如何编写Silverlight应用程序,以及如何编写XAML标记。该章将展示如何将这些内容综合到一起以布局Silverlight应用程序的用户界面。该章介绍了Silverlight所提供的各个布局控件——Canvas、Grid、StackPanel和TabControl,还解释了何时利用哪个布局控件。该章还给出了如何创建一个可伸缩UI的相关知识。最后,该章还用一节详细介绍了如何本地化应用程序,从而使得应用程序对于其他的语言和文化均可用。 • 第6章:“Silverlight控件”——Silverlight 2提供了各类可以用于显示和获取数据的控件。在该章,您将学习到如何使用用户输入控件、项目控件以及媒体控件,并可以了解到如何将这些控件用于构建交互性丰富的用户界面。您还将学习到如何使用诸如MultiScaleImage之类的控件来使用Silverlight的Deep Zoom技术。 • 第7章:“样式和模板”——该章的主题是改变应用程序的外观。该章介绍了使用不同的技术将样式信息应用到构成应用程序的控件的方法。此外,该章还详细介绍了通过WCF将Silverlight应用程序和ASP.NET Profile服务集成,从而使得您可以基于各个用户的偏好来实现个性化Silverlight应用程序。 • 第8章:“用户交互”——如果我们不能和某项技术(诸如Silverlight之类)交互的话,那么凭什么说该技术是一项伟大的技术呢?在该章,我们将回顾可以和应用程序实施交互的不同方法,从而理解UIElement如何使用诸如键盘、鼠标和手写笔之类的输入设备。我们还探讨了导航应用程序的不同方法,并给出了我们可以选择的方法,以及各个选择分别适用于哪个场景。 • 第9章:“和服务器通信”——获取位于分布式数据源中的数据是许多Silverlight应用程序的关键。在该章,您将学习到Silverlight 2中的各种不同网络技术,并了解如何使用这些技术。该章涉及到多个不同主题,包括:创建并调用ASMX和WCF服务,调用REST API,使用JavaScript对象表示(JSON)对象,通过套接字将数据从服务器推送到客户端,以及利用HTTP双向轮询功能。 • 第10章:“处理数据”——该章完全是关于数据处理的。我的一个同事总是说:“如果在Silverlight 2中没有使用数据绑定,那么您一定犯了某种错误!”该章解释了在应用程序中可用的数据框架,然后深入介绍了数据绑定的内部工作原理,并展示了利用该框架可以使用的不同方法。为了理解数据如何被检索,我们给出了利用可用的数据控件获取大部分Silverlight 2数据的不同技术和方法。最后,该章还介绍了如何使用LINQ和LINQ to XML来操作数据。 • 第11章:“创建自定义控件”——该章将介绍用于自定义Silverlight 2控件的不同方法。首先,我们将讨论ASP.NET开发人员所使用的用户控件模型,然后我们深入探讨了可视化自定义的内部机制。您将会为该功能强大的新模型而着迷。最后,对于那些想充分利用自定义功能的人,该章还给出了如何从零开始创建一个完全自定义的控件。该章是内容非常丰富的一章,它还给出了这些方法可以应用到的典型场景。 • 第12章:“确保Silverlight应用程序的安全”——不管您是企业应用程序开发者还是Silverlight的爱好者,您都希望在某个时候可以向外发布应用程序,因此安全将是一个事先需要考虑的问题。由于Silverlight 2在运行时中具有内置的安全框架,因此Silverlight为使用Silverlight提供了一个安全的环境。该章将介绍Silverlight安全框架,同时还将告诉您作为Silverlight开发人员所应该承担的安全责任。 • 第13章:“音频和视频”——在Silverlight应用程序中内嵌高保真的音频和视频将可以让应用程序在用户脑海中留下深刻印象。因此,该章将展示仅仅利用Silverlight所提供的MediaElement控件和ASP.NET Media服务器控件来实现这一点。本章还演示了播放控制这一高级主题,播放控制用于在媒体中提供同步控制。该章将肯定会为Web站点添加一些令人叫绝的要素。 • 第14章:“图形和动画”——该章首先介绍了Silverlight所带的图形API,包括派生自Shape的对象和派生自Geometry的对象。前者是可以直接在屏幕上渲染的对象,而后者则在创建之后需要利用Path对象来渲染。接下来,该章介绍了Brush对象,演示了SolidColorBrush、LinearGradientBrush、Radial- GradientBrush、ImageBrush和VideoBrush,以及这些对象的使用。接下来,该章将介绍非常酷的Deep Zoom技术,涉及到利用Deep Zoom Composer创建支持Deep Zoom的图像以及利用MultiScaleImage在Silverlight中使用这些图像。最后,该章介绍了可以在Silverlight应用程序中使用的不同动画技术,包括基本的From/To/By动画以及包含多种不同转换机制的比较高级的关键帧动画。 • 第15章:“故障排查”——从头到尾编写一个应用程序而且不遇到任何开发问题是不可能的。该章将介绍大量的技术和工具以帮助在应用程序不按期望的动作执行时,对应用程序进行适当的调整。除了回过头来修改应用程序中的问题外,该章还提供了多个相对主动的方法来确保应用程序在发布之前就具有比较高的质量。在此,该章还重点介绍了Silverlight的测试框架。 • 第16章:“性能”——Silverlight是一个功能强大而且非常灵活的框架。其特有的灵活性通常意味着实现同一目标会有多种不同方法。在选择一个替代途径时,您经常会发现其代价是性能比较差。该章将提供一系列比较好的建议,以允许在遇到多个选择时,能够做出合理的决策。此外,您还将学习到如何在代码中编织相应的指令以简单标识应用程序中的瓶颈。 使用本书的要求 为了尽可能地掌握本书的内容,建议您按照本书所提供的例子进行编码,或者直接拷贝本章所给出的代码,也可以直接下载本书的样例并运行。 为了实现这一点,您将需要Visual Studio 2008。如果订购的话,该软件可以从MSDN上下载。此外,还需要下载并安装Silverlight Tools for Visual Studio 2008。该软件允许在Visual Studio中创建基于Silverlight的应用程序。该安装程序将安装Silverlight运行时和Silverlight SDK。您可以从下载该安装程序。 如果您想学习使用微软公司的Expression Blend或者Deep Zoom Composer的例子,那么还可以从上下载这些软件。 除了这些软件要求外,您还需要有微软公司.NET框架的基础开发知识,并且具有基于Web开发的经验。当然,创建富Web应用程序的激情对于掌握该技术也是非常重要的,当然这也不是必需的! 约定 为了帮助您尽可能从文本上获得更多知识并知道正在发生的事情,我们在本书中使用了大量的约定。 类似于这样的框表示一些重要的、不能忘记的信息,而且这些信息和周围的文本直接相关。 注意、提示、警示、窍门以及当前讨论的一些旁白将缩进并用如本段的楷体字表示。 文本中还利用以下的样式: ● 我们将键盘敲击表示为:Ctrl+A。 ● 我们将文本中的代码表示为:persistence.properties。 ● 我们以两种不同的方式给出代码: 我们用单一样式来表示不需要强调的代码样例。 我们用灰色的突出显示来强调在当前上下文中特别重要的代码。 源代码 在使用本书的例子时,您可以选择手动输入所有的代码,也可以选择同本书一起发布的源代码文件。本书所使用的源代码文件都可以从和http://www.tupwk.com.cn上下载。一旦访问该网站,只需要查找本书的书名(或者使用Search框,或者使用某个书名列表),然后单击在该书细节页面上的Download Code链接以获取本书的所有源代码。 由于很多书有类似的书名,您可能会发现通过ISBN搜索是最简单的方法;本书的ISBN号为978-0-470-27775-1。 一旦您下载了该代码,那么用您喜欢的解压工具对其解压。您还可以到Wrox代码的主页面/dynamic/books/download.aspx上查看本书中所有可用的代码以及Wrox出版的其他书籍的代码。 勘误 尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果你在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者更方便地学习,当然,这还有助于提供更高质量的信息。 请给wkservice@vip.163.com发电子邮件,我们就会检查你的反馈信息,如果是正确的,我们将在本书的后续版本中采用。 要在网站上找到本书英文版的勘误表,可以登录,通过Search工具或书名列表查找本书,然后在本书的细目页面上,单击Book Errata链接。在这个页面上可以查看到Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是/misc-pages/booklist.shtml。 要与作者和同行讨论,请加入上的P2P论坛。这个论坛是一个基于Web的系统,便于你张贴与Wrox图书相关的消息和相关技术,与其他读者和技术用户交流心得。该论坛提供了订阅功能,当论坛上有新的消息时,它可以给你传达感兴趣的论题。Wrox作者、编辑和其他业界专家和读者都会到这个论坛上来探讨问题。 在上,有许多不同的论坛,它们不仅有助于阅读本书,还有助于开发自己的应用程序。要加入论坛,可以遵循下面的步骤。 (1) 进入,单击Register链接。 (2) 阅读使用协议,并单击Agree按钮。 (3) 填写加入该论坛所需要的信息和自己希望提供的其他信息,单击Submit按钮。 (4) 你会收到一封电子邮件,其中的信息描述了如何验证账户,完成加入过程。 提示: 不加入P2P也可以阅读论坛上的消息,但要张贴自己的消息,就必须加入该论坛。 加入论坛后,就可以张贴新消息,响应其他用户张贴的消息。可以随时在Web上阅读消息。如果要让该网站给自己发送特定论坛中的消息,可以单击论坛列表中该论坛名旁边的Subscribe to this Forum图标。 关于使用Wrox P2P的更多信息,可阅读P2P FAQ,了解论坛软件的工作情况以及P2P和Wrox图书的许多常见问题。要阅读FAQ,可以在任意P2P页面上单击FAQ链接。