前 言 2002年,随着VB.NET的引入,Visual Basic(VB)迎来了自发布以来最大的变革。十几年来,VB一直没有进行大的修订。但。NET已经远远超出了这种修订,它改变了VB开发的几乎所有方面。整个运行库模型变成了一个新的公共语言运行库(CLR)环境,语言也从基于对象变成面向对象。从集成Internet功能到创建面向对象的框架,VB.NET向传统的VB开发人员发出了挑战,要求他们学习全新的概念和技术。 之后的每个版本都对Visual Basic语言做了进一步的改进。作为一种真正的面向对象语言,VB引入了很多新增功能,为底层数据提供了更好的访问特性。VB 2010继续进行这种改进。传统的VB 6开发人员必须从头学习这些内容,但对于熟悉VB以前版本的开发人员来说,VB是比较容易学习的,本书就能提供这方面的帮助。 Visual Studio(VS) 2010与。NET Framework 4一起使用。本书不仅详细介绍了VB的最新版本(即VB 10),还探讨了新的。NET Framework 4,通过这个框架,VB开发人员能利用Windows Presentation Foundation(WPF)、Windows窗体、VS Tools for Office和基于Windows Communication Foundation(WCF)、Windows Workflow Foundation(WF)和SharePoint的库构建应用程序。 .NET Framework 4自。NET Framework 2.0以来对核心框架进行了重大的修改。幸好与VS 2008一样,VS 2010允许开发人员继续构建和部署面向。NET新发布版本和。NET Framework老版本的应用程序。 从VB 6开发模型迁移过来的用户会发现,这个版本的VB Professional与传统的VB 6代码之间的区别不大。在。NET的4个版本中,它的核心语言一直在演变,以便与十余年前的产品区分开来。在一些情况下,相同的功能要采用不同的方式来实现。这些改变不是任意的,而是有很充足的理由。我们必须抛弃一些旧习惯,培养新习惯。 同时,我们必须接受新概念。完全面向对象的概念、新的组件技术、新的用于本地和Internet界面的可视化工具,所有这些都是在VB中高效开发应用程序的必备技能。 本书将全面阐述VB。首先讨论VS 2010,因为它是使用VB的工具,所以理解VS的核心功能是成功构建。NET应用程序的关键。在这个过程中,还要学习数据库访问、LINQ、Entity Framework,以集成其他技术,如WPF、WCF和基于服务的解决方案。在详细研究新特性的过程中,会发现VB 10已经成为一种强大且易于使用的语言。可以像在编写桌面程序那样得心应手地编写网络程序。本书还将介绍。NET Framework 4。 VB的特性 在。NET的早期应用中,Microsoft的新语言C#得到了广泛的关注。但随着。NET应用的增多,VB的重要性也逐渐显现出来。Microsoft对外宣称,当生产率是最重要的因素时,VB是开发应用程序的最佳语言。 VB的未来开发将强调以最高效的方式访问整个。NET Framework的能力。过去,Microsoft和其他人常常面向不同的开发样式,而在VS 2010中,Microsoft宣布VB和C#会共同进化。在开发新语言特性时,会同时把它们引入VB和C#。这个版本是这个过程的第一步,但目前还未完成。 共同进化并不意味着这两种语言看起来一样,而是指它们会支持相同的功能。例如,VB有XML字面量,但并不意味着C#也有完全相同的功能,因为C#可以通过已有的框架类处理XML。Microsoft不会在VB中先引入一个特性,再在C#的下一版中引入它,或者在C#中先引入一个特性,再在VB的下一版中引入它。引入新功能和特性时,它们会同时引入VB和C#中。 如前所述,尽管还未完成修改,但VB的下一个版本会与VS的新版本一起使用,C#和VB的功能应完全相同,因为它们都是第一流的。NET开发语言。这非常切合VB的传统作用:语言开发人员在现实世界中使用它能尽快创建业务应用程序。 .NET Framework的一个最重要的优点是,它允许用非常少的代码编写应用程序。在业务应用程序中,主要目标是编写业务逻辑,尽可能减少例程编码任务。换言之,其价值在新的。NET Framework中不是编写出许多代码,而是用尽可能少的代码编写出更健壮、更有效的应用程序。 VB非常适合于这种类型的开发,因此成为目前既经济又实惠的软件开发工具,将来它还会为此目的做进一步的细化和改进。 本书读者对象 本书主要针对有经验的、希望深入学习VB 2010的开发人员。本书讨论了最常见的编程任务和概念,既适合于从早期版本过渡到VB 2010版本的开发人员,也适合于以前使用过VB,目前需要更深入理解的开发人员。 本书对VB概念进行了全面的介绍,但。NET Framework的内容广博而丰富,不可能在一本书里讲清楚,本书的重点是对VB开发人员非常重要的专业知识,为工作在这些领域的开发人员提供了足够的内容,开发人员也可以利用深入介绍某个技术领域的图书,来增加自己的知识量。 使用本书需要的条件 尽管可以使用。NET Framework 中的命令行工具来创建VB应用程序,但是本书的大部分内容仍将使用Visual Studio 2010(标准版或更高,其中包含。NET Framework 4)。可以使用VB Express Edition,但一些例子将无法运行,因为代码中的很多功能都是该版本中所没有的。此外: ● 需要。NET Framework 4,它会与所选的VS 2010版一起安装。 ● 某些章节使用了SQL Server 2008。也可以使用VS 2010自带的SQL Express来运行样例代码。 ● 第7章使用了单元测试工具,它包含在VS专业版或更高版本中。 ● 某些章节使用了Internet Information Services(IIS)。IIS包含在Microsoft发布的Windows XP以后的每个操作系统中,但在新操作系统中需要以管理员身份运行,才能使用IIS进行开发。另外还可以利用VS 2010附带的开发服务器。 ● 第18章使用了Expression Blend 3.0。Blend可以通过上层的MSDN订阅来获得,但应使用试用版研究该章介绍的功能。 ● 第24章介绍了SharePoint开发。Windows Server版本附带了SharePoint服务。完整的Microsoft Office SharePoint Server产品需要注册,但MSDN拥有者可以访问开发服务器。 ● 第25章介绍了VS Tools for Office,为了利用在Office套件上构建的产品,需要有指定产品的副本。 ● 附录D在介绍排队事务时使用了MSMQ。MSMQ包含在Windows 中,但它不会默认安装。 ● 附录E介绍了Microsoft开发人员可以访问的联机服务。Azure有试用期,可使用它运行该附录中的示例。 本书主要内容 第Ⅰ部分是语言结构和环境,本书的前7章重点介绍VB开发人员使用的核心语言元素和开发工具。之后部分介绍VS 2010、对象、语法和调试。 第1章首先介绍使用VB10的环境。该章讨论新设计的、基于WPF的VS开发环境,介绍一个简单的Windows窗体项目,复习调试器等重要功能,帮助读者熟悉这个强大的环境。 第2章是研究面向对象编程和。NET Framework在VB中的作用的三章中的第一章。该章介绍对象、类型、类型转换、引用类型和构成VB核心的重要语法。 第3章研究对象的创建,论述对象如何在VB中使用。首先介绍继承,然后将解释如何创建简单和抽象的基类,如何创建可以派生其他类的基类。该章把面向对象开发的理论应用于实践。还将讨论4个主要的面向对象概念(抽象性、封装性、多态性、继承),以及如何将这些概念应用到设计和开发中,以创建高效的面向对象的应用程序。 第4章探讨了。NET平台的核心—— 公共语言运行库(CLR)。CLR负责管理。NET平台编译的代码的执行。我们将论述版本控制和部署、内存管理、跨语言集成、元数据和IL Disassembler。该章还介绍了名称空间及其层次结构。解释了名称空间的概念和一些常用的名称空间。此外,还介绍了如何创建定制的名称空间,以及在项目中如何导入名称空间,如何给名称空间起别名。该章还介绍了VB 中的My名称空间。 第5章中,WPF、WF和Silverlight的引入给。NET带来了一种新语法:XAML(XML for Application Markup Language)。XAML是新的声明式编程模型的核心。开发人员使用这个模型可以描述他们需要的对象,例如窗口。创建该窗口的代码从请求中抽象出去了。如前所述,XAML支持几种未来的技术集。该章介绍了XAML语法的核心常用元素,给其他利用这个语法的章节打下基础。 第6章通过详细讨论CLR异常处理程序和Try…Catch…Finally结构,描述了VB 2010中错误处理和调试工作的原理。除此之外,还描述了错误和跟踪的记录,以及如何利用这些方法获取程序工作情况的反馈。 第7章介绍了如何使用VS 2010和单元测试工具进行测试驱动的开发(TDD)。 第Ⅱ部分接下来的6章(第8~13章)介绍了用于包含和访问数据的常用结构,包括框架元素,如数组和集合、XML、数据库访问和WCF服务。这些章节主要讨论如何收集用于应用程序的数据。 第8章介绍数组和集合,作为包含一组相关项的基础,接着扩展了这些基本结构,研究了泛型。泛型在。NET Framework 2.0中引入,支持强类型集合。。NET Framework 4中一个与泛型相关的重要新特性是扩展了对泛型的支持,包含协变特性。 第9章展示了。NET Framework中生成和处理XML的功能。我们介绍了。NET Framework的XML相关名称空间,并详细讨论了这些名称空间中的一部分类。该章还涉及了一些使用XML的技术,比如ADO.NET和SQL Server,接着详细介绍了如何给XML使用LINQ。 第10章集中讨论了ADO.NET对象模型,以便建立灵活、快速和可伸缩的数据访问对象和应用程序。该章还讲述了ADO向ADO.NET的转化,讨论了ADO.NET的主要对象,以便建立对。NET应用程序的数据访问。该章还深入讨论了LINQ to SQL。LINQ可以方便地访问底层数据,它基本上位于ADO.NET的上层。Microsoft把LINQ作为一个轻型版本,给底层的数据库提供了一个强类型化的接口。 第11章中,VS 2010版本引入的一个主要改进是Entity Framework(EF)。EF表示Microsoft实现Entity Relationship Modeling(ERM)工具的方式。开发人员使用EF可以生成类,来表示在SQL Server中定义的数据结构,并在其应用程序中利用这些对象。 第12章描述了如何联合使用SQL Server 2008和。NET应用程序。SQL Server提供了与应用程序的强大连接,该章将解释如何高效地使用这个功能强大的数据库。 第13章介绍建立面向服务的组件的新方式—— Windows Communication Foundation (WCF),它可以通过许多协议进行基于标准的通信。WCF是Microsoft为企业内部和外部的组件相互通信提供的一种新方式。另外,该章还将讨论XML Web服务的创建和使用,论述CLR提供的、建立和使用Web服务的抽象类,论述了一些支持Web服务的技术。另外还阐述了使用分布式体系结构的缺点。 第Ⅲ部分中接下来的6章(第14章~第19章)讨论客户端应用程序的创建。首先介绍。NET 1.0引入的Windows窗体应用程序模型,之后讨论WPF、Blend设计引擎和Silverlight。 第14章讲述了Windows窗体,主要讨论了窗体和内置控件。还讨论了哪些是新的,哪些是对VB以前版本的修改,以及System.Windows.Forms名称空间。 第15章讨论了在构建Windows窗体应用程序时会用到的高级功能。 第16章中,创建Windows定制应用程序的一个最佳实践方式是使用用户控件。用户控件可以封装相关的用户界面元素。另外,这些控件已经成为从Windows窗体迁移到WPF的关键。许多公司都在Windows窗体上投入了巨资,他们也不打算将其应用程序完全转换到这个新技术上。因此,Microsoft提供了将WPF集成到Windows窗体应用程序的重要方式,还允许将Windows窗体组件引入WPF应用程序中。 第17章将介绍Windows Presentation Foundation(WPF),它是。NET 3.0的一个新组件,提供了建立桌面应用程序的一种新方式。该章将介绍WPF所提供的相当流畅和丰富的表示层。 第18章介绍了在发布WPF的同时,Microsoft还引入了一套新工具Expression Studio。这些工具可以根据XAML构建丰富的用户界面。Blend工具(包含在Expression Studio中)在设计WPF用户界面时尤其有效。该章介绍Expression Blend,它为设计应用程序和使用XAML提供了一组强大的工具。 第19章介绍了XAML在构建用户界面时的最新用法:Silverlight。Silverlight为基于。NET的客户端应用程序开发提供了一个独立于平台的解决方案,允许开发人员使用XAML标记,给最终用户使用浏览器或桌面程序提供更流畅的体验。 第Ⅳ部分中接下来的5章(第20章~第24章)讨论Web应用程序的创建。这些章节利用具有客户端特征的Silverlight介绍ASP.NET和AJAX、MVC等功能,包括完整的云解决方案以及SharePoint。 第20章在学习了Silverlight及其能对客户端应用程序执行的操作后,介绍如何在网站和Web服务中嵌入Silverlight,以提供业务数据。 第21章介绍了ASP.NET 的基础知识,包括使用VS建立Web应用程序,以及应用程序和页面框架。 第22章介绍了ASP.NET的几个高级功能,特别是AJAX。其内容包括跨页面传送、母版页、站点导航、个性化等。 第23章介绍了ASP.NET MVC。VS 2010给ASP.NET主流开发引入了MVC(Model-View- Controller)模式。这个模式为开发Web应用程序提供了更结构化的框架。该章讨论了给新ASP.NET项目使用这个模式的优点。 第24章介绍了SharePoint。SharePoint包含许多技术和服务,是Microsoft增长最快的产品。本章介绍VB开发人员如何定制和使用这个多功能工具来开发定制的解决方案。 第Ⅴ部分是最后的10章(第25章~第34章)讨论了各个专业主题。这些主题将引用特定的。NET库,用户在创建新解决方案,修改旧解决方案时,读者可能对这些库的使用感兴趣。 第25章介绍了如何使用VB处理Microsoft Office应用程序。 第26章将介绍最近更新的Workflow实现方式。VS 2010引入的新功能便于将工作流集成到应用程序中。Windows Workflow Foundation(WF)在。NET Framework 3.0中引入,但新版本与最初的逻辑有很大的区别(最初工作流的讨论移动到附录D)。 第27章将介绍构建全球化应用程序时要考虑的一些重要事项,详细探讨了System.Globalization名称空间和它为应用程序提供的所有功能。 第28章介绍了COM和。NET组件的互操作性,以及Microsoft提供了哪些工具将这两项技术链接起来。 第29章介绍了开发网络应用程序时需要使用的各种协议。我们还讨论了如何把庞大的网络融合到自己的应用程序中。 第30章讨论了在Windows服务的生成过程中,如何使用VB。该章将讨论Windows服务的创建、安装、运行和调试。 第31章讨论了程序集的概念及其在CLR中的作用。我们还学习了程序集的结构、内容以及包含的信息。另外,介绍了程序集清单以及它在部署中的作用,以及如何使用远程服务。该章将论述远程服务的基本体系结构,并建立一个基本服务器和客户端,使用一个singleton对象将客户端的请求传递到业务层上。接着介绍如何使用序列化把服务器上更复杂的对象传递给客户端,以及如何使用调用环境(call context),在每个调用中,把额外的数据从客户端传送给服务器,但无须改变对象模型。 第32章介绍了。NET提供的安全功能和相关工具。Caspol.exe和Permview.exe可以帮助建立和维护各种安全策略。System.Security.Permissions名称空间可用于管理权限。我们还通过代码演示了System.Security.Cryptography名称空间的功能。 第33章将学习线程,介绍。NET Framework中的各种对象如何让用户开发出多线程的应用程序。我们将讨论如何创建线程,如何将它们与进程关联在一起,以及多任务和多线程之间的差异。另外,VS 2010还引入了一个全新的并行处理框架。 第34章介绍了Windows窗体和Web窗体的部署选项,包括ClickOnce部署特性和。msi文件的创建。 第Ⅵ部分为全书的附录部分,从附录A到附录E,内容如下: 附录A介绍了VB编译器vbc.exe所提供的功能。 附录B介绍了Visual Basic Power Packs 工具,这是一组计划外的软件包,主要用于帮助开发人员维护传统Visual Basic 6.0应用程序或在Visual Basic 6中查找类似的功能。这些工具集成到VS中,帮助开发人员迁移到VB的当前版本上。 附录C介绍了。NET 3.0引入。VS 2008支持的Windows Workflow Foundation在VS 2010中进行了全面改写。但我们把最初工作流的讨论移动到本附录中,以便读者继续给已有的解决方案参考这些内容。 附录D介绍了随着时间的推移,有了新的事务处理支持和相关的功能,于是本附录的内容(原来独立成章)不再重要。现在将这些内容移动到这个附录中,是为了支持引用企业服务的已有实现方案。该附录探讨了。NET组件服务,特别讨论了事务处理和排队组件。 附录E介绍了Microsoft提供的几个基于云的新环境,以及它们对VB开发人员的影响。无论是在云中保存数据,还是开发在云中运行的应用程序,该附录都有助于理解这个新的应用程序环境。 源代码 读者在阅读本书提供的代码时既可以亲自键入所有代码,也可以使用随书提供的代码文件。本书所有代码均可以从网站下载。进入该网站后,请读者根据本书的书名查找本书(读者既可以使用搜索框进行查找,也可以使用书名列表进行查找),然后单击本书详细内容页面上提供的Download Code链接,就可以下载本书提供的所有代码。 下载代码后,读者可以利用一种压缩工具将代码解压。此外,读者还可以通过访问网站/dynamic/books/download.aspx中提供的Wrox代码下载页面来获取本书提供的代码,也可以下载Wrox出版的其他书籍提供的代码。 勘误表 为了避免本书文字和代码中存在错误,我们已经竭尽全力。然而,就如世界上不存在完美无缺的事物,本书仍然可能存在错误。如果读者在我们编写的书籍中发现了诸如拼写错误或代码缺陷等问题,那么请告诉我们,我们对此表示感谢。利用勘误表反馈错误信息,可以为其他读者节省大量时间,同时,我们也能够受益于读者的帮助,这样有助于我们编写出质量更高的专业着作。 如果读者需要参考本书的勘误表,请在网站中用搜索框或书名列表查找本书书名。然后,在本书的详细内容页面上,单击Book Errata链接。在随后显示的页面中,读者可以看到与本书相关的所有勘误信息,这些信息是由读者提交、并由Wrox的编辑们加上的。通过访问/misc-pages/booklist.shtml,读者还可以看到Wrox出版的所有书籍的勘误表。 如果读者没有在Book Errata页面上找到其发现的错误,那么请读者转到页面/ contact/techsupport.shtml上,针对您所发现的每一项错误填写表格,并将表格发送给我们,我们将对表格内容进行认真审查,如果确实是我们书中的错误,那么我们将在该书的Book Errata页面上标明该错误信息,并在该书的后续版本中改正相关错误。 关于 如果读者希望能够与作者进行讨论,或希望能够参与读者的共同讨论,那么请加入的论坛。这个论坛是一个基于Web的系统,读者可以在论坛上发表与Wrox出版的书籍有关的技术信息,并与其他读者和技术用户进行讨论。论坛提供了订阅功能,可以将与读者所选主题相关的新帖子定期发送到读者的电子邮箱。Wrox的作者、编辑、业界专家以及其他读者都会参与论坛中的讨论。 读者可以在上参与多个论坛的讨论,这些论坛不仅能够帮助读者更好地理解本书,还有助于读者更好地开发应用程序。如果读者希望加入论坛,那么请按照以下步骤执行: (1) 进入页面,单击Register链接。 (2) 阅读使用条款,然后单击Agree。 (3) 填写必要的信息(必要时也需要填写可选信息),然后单击Submit。 (4) 随后读者会收到一封电子邮件,邮件中说明了如何验证帐号并完成整个加入过程。 成功加入论坛后,读者就可以发表新主题了。此外,读者还可以回复其他主题。读者在任何时间都可以阅读论坛信息。如果读者需要论坛将新的信息发送到自己的电子邮箱中,那么可以单击论坛列表中论坛名称旁的Subscribe to this Forum图标完成该功能的设置。 如果读者需要获得更多与Wrox P2P相关的信息,请阅读P2P FAQs,这样可以获得大量与P2P和Wrox出版的书籍相关的具体信息。阅读FAQs时,请单击P2P 页面上的FAQs链接。