2002年,伴随着VB.NET的引入,Visual Basic(VB)迎来了自发布以来最大的变革。十几年来,VB一直没有进行大的修订。但.NET已经远远超出了这种修订,它改变了软件开发的几乎所有方面。从集成Internet功能到创建面向对象的架构,VB.NET向传统的VB开发人员发出了挑战,要求他们学习全新的概念和技术。 2005年,Microsoft对Visual Basic语言做了进一步的改进(重命名为VB 2005)。作为一种真正的面向对象语言,VB 2005引入了很多新增功能。传统的VB 6开发人员必须从头学习这些内容,但对于熟悉VB以前版本的开发人员来说,VB 2005是比较容易学习的,本书能提供这方面的帮助。 本书所介绍的.NET Framework 3.0版本不仅详细介绍了VB的最新版本(即VB 2005),还探讨了新的架构,通过这个架构,VB开发人员能利用Windows Presentation Foundation(WPF)建立新的应用程序类型,创建基于Windows Communication Foundation(WCF)、Windows Workflow Foundation(WF)和Windows CardSpace的库。 这些新增功能构成了.NET Framework 3.0,这个版本安装在.NET Framework 2.0上,并以.NET Framework 2.0为基础。本书的一些章节将重点讨论.NET Framework 3.0引入的新技术。 首先,需要学习VB 2005和旧版本之间的区别。在一些情况下,相同的功能要采用不同的方式来实现。这些改变不是任意而为的,而是有很充足的理由。我们必须抛弃一些旧习惯,培养新习惯。 其次,我们必须接受新概念。完全面向对象的概念、新的组件技术、新的用于本地和Internet界面的可视化工具,所有这些都是在VB 2005中高效开发应用程序的必备技能。 本书将全面阐述VB 2005。首先讨论.NET Framework,最后讨论部署.NET 应用程序的最佳方式。中间部分讨论从数据库访问到与诸如XML等其他技术集成的一切内容,并详细地介绍新增功能。您将会看到,VB 2005已经成为一种强大且易于使用的语言。在编写网络程序时,就如同编写桌面程序一样得心应手。本书将介绍.NET Framework 2.0和新发布的.NET Framework 3.0。如果读者使用1.0、1.1或2.0编程,本书的一些章节就可能不太合适。要特别注意.NET Framework 3.0的新增功能。 VB的重要性 在.NET的早期应用中,Microsoft的新语言C#得到了广泛的关注。但随着.NET应用的增多,VB的重要性也逐渐显现出来。Microsoft对外宣称,当生产率是最重要因素时,VB是开发应用程序的最佳语言。 VB的未来开发将强调以最高效的方式访问整个.NET Framework的能力,而C#开发强调的是编写代码的经验,这非常切合VB的传统作用:语言开发人员在现实世界中使用它能尽快创建商务应用程序。 区别不仅仅在学术方面。.NET Framework的一个最重要的优点是,它允许用非常少的代码编写应用程序。在商务应用程序中,主要目标是编写业务逻辑,尽可能减少例程编码任务。换言之,其价值在新的.NET Framework中不是编写出许多代码,而是用尽可能少的代码编写出更健壮、有效的应用程序。 VB非常适合于这种类型的开发,因此成为目前既经济又实惠的软件开发工具,将来它还会为此目的做进一步的细化和改进。 本书读者对象 本书主要针对有经验的、希望深入学习VB 2005的开发人员。本书讨论了最常见的编程任务和概念,既适合于从早期版本过渡到VB 2005版本的开发人员,也适合于以前使用过VB,目前需要更深入理解的开发人员。 本书对VB概念进行了全面的介绍,但.NET Framework的内容广博而丰富,不可能在一本书里讲清楚,本书没有把Web开发作为最重要的内容,但包含了VB中基于浏览器的编程内容,专业的Web开发人员应该参考清华大学出版社引进并出版的《ASP.NET 2.0高级编程(特别版)》。 使用本书需要的条件 尽管可以使用.NET Framework SDK中的命令行工具来创建VB应用程序,但是本书的大部分内容仍将使用Visual Studio 2005(专业版或更高,其中包含.NET Framework SDK)进行举例。如果您使用的是Visual Studio .NET 2002或者Visual Studio .NET 2003,那么本书的很多例子将无法运行,因为代码中的很多功能都是旧版本中没有的。 此外: ● 需要.NET Framework 3.0(如果机器上没有.NET Framework 2.0,.NET Framework 3.0会自动安装.NET Framework 2.0)。 ● 某些章节使用了SQL Server 2005。但也可以使用VS 2005自带的SQL Express来运行样例代码。 ● 某些章节使用了Internet Information Services(IIS)。IIS包含在Windows 2003 Server、Windows 2000 Server、Windows 2000 Professional和Windows XP中,但它不会默认安装。 ● 第28章在介绍排队事务时使用了MSMQ。MSMQ包含在Windows 2003 Server、Windows 2000 Server、Windows 2000 Professional和Windows XP中,但它也不会默认安装。 本书主要内容 第1章解释了.NET的重要性和它对应用程序开发的影响。为了理解.NET的重要性以及当前开发技术存在的缺陷,我们首先讨论了包括COM和DNA在内的体系结构模型,然后讲述.NET如何使用公共语言运行库(CLR)来纠正这些技术中的缺点。本章还回顾了.NET Framework 2.0和.NET Framework 3.0的内容,以及如何安装这两个架构。 第2章将讨论VB 2005中的许多常用类型。本章的主题包括类型转换、引用类型、数组和其他集合、参数传送和装箱,还介绍了VB的基本语法。 第3章论述了VB中面向对象编程的特性。本章将定义对象、类、实例、封装、抽象、多态性和继承性。 第4章讲述了继承的概念及在VB中如何利用继承。我们将解释如何创建简单和抽象的基类,如何创建可以派生其他类的基类。本章把前面几章的理论应用于实践。还将讨论4个主要的面向对象概念(抽象性、封装性、多态性、继承),以及如何将这些概念应用到设计和开发中,以创建高效的面向对象的应用程序。 第5章探讨了.NET平台的核心—— 公共语言运行库(CLR)。CLR负责管理.NET平台编译的代码的执行。我们将论述版本控制和部署、内存管理、跨语言集成、元数据和IL Disassembler。 开发人员通常用英语建立应用程序。但随着应用程序的使用者在不断增长,开发人员意识到需要对应用程序进行全球化处理。当然,最理想的情况是从一开始就使建立的应用程序能正确应对全球的用户。但在许多情况下,这是不太可能的,因为应用程序需要完成额外的工作。.NET Framework为解决应用程序的全球化做了许多努力。我们会很快认识到,API的变化、给服务器控件增加的功能、甚至VS本身都需要我们做出额外的努力,才能更方便地使应用程序全球化。第6章将介绍建立全球化应用程序时要考虑的一些重要事项,详细探讨System.Globalization命名空间和它为应用程序提供的所有功能。 第7章介绍了新版本最大的改进之一——泛型。泛型是一个通用的强类型集合,它可以减少出错几率,提高性能,并为集合提供Intellisense功能。 第8章介绍了命名空间及其层次结构。解释了命名空间的概念和某些常用的命名空间。此外,还介绍了如何创建新的命名空间,以及在项目中如何导入命名空间,如何给命名空间起别名。本章还介绍了VB 2005新引入的My命名空间。 第9章通过详细讨论CLR异常处理程序和新的Try…Catch…Finally结构,描述了VB 2005中错误处理和调试工作的原理。除此之外,还描述了错误和跟踪的记录,以及如何利用这些方法获取程序工作方式的反馈。 第10章集中讨论了需要了解的ADO.NET对象模型,以便能够建立灵活、快速和可伸缩的数据访问对象和应用程序。该章还讲述了ADO向ADO.NET的转化,讨论了为了建立对.NET应用程序的数据访问而需要理解的ADO.NET主要对象。 第11章展示了.NET Framework提供的用于生成和处理XML的功能。我们介绍了.NET Framework的XML相关命名空间,并详细讨论了一部分命名空间中的类。本章还涉及到一些利用XML的技术,比如ADO.NET和SQL Server。 第12章介绍了.NET提供的安全功能和相关工具。Caspol.exe和Permview.exe可以帮助建立和维护各种安全策略。System.Security.Permissions命名空间可用于管理权限。我们还通过代码演示了System.Security.Cryptography命名空间的功能。 第13章将介绍开发.NET应用程序的下一代IDE:VS 2005。这个IDE的以前版本是Visual Studio .NET 2003和Visual Studio .NET 2002。本章主要讨论VS 2005版本,以及如何使用它更快地建立更好的应用程序。 第14章描述了如何联合使用新的SQL Server 2005和.NET应用程序。SQL Server提供了与应用程序的强大连接,本章将解释如何高效地使用这个功能强大的数据库。 第15章讲述了Windows窗体,主要讨论了窗体和内置控件。还讨论了哪些是新的,哪些是对VB以前版本的修改,还讨论了System.Windows.Forms命名空间。 第16章讨论了在构建Windows窗体应用程序时会用到的高级功能。 第17章将介绍Windows Presentation Foundation(WPF),它是.NET 3.0的一个新组件,提供了建立应用程序的一种新方式。该章将介绍Microsoft提升GUI显示功能的这种新方式,WPF所提供的显示层相当流畅和丰富。该章还将介绍WPF基础,以及如何建立简单的基于XAML的应用程序。 许多公司都在Windows窗体上投入了巨资,他们也不打算将其应用程序完全转换到这个新技术上。因此,Microsoft提供了将WPF集成到Windows窗体应用程序的重要方式,还允许将Windows窗体组件引入WPF应用程序。第18章将介绍这些功能。 第19章介绍了ASP.NET 2.0的基础知识,包括使用VS进行在线编码的新功能、新的后台编码模型,其中包括应用程序和页面框架,以及ASP.NET 2.0的新特性。 第20章介绍了很多在ASP.NET 2.0中新引入的功能。我们举例说明了跨页面传送、Master页面、站点导航以及个性化等高级功能。 第21章讨论了程序集的概念及其在CLR中的作用。我们还学习了程序集的结构、内容以及包含的信息。另外介绍了程序集清单以及它在部署中的作用。 第22章介绍了Windows窗体和Web窗体的部署选项,包括新的ClickOnce部署特性和.msi文件的创建。 第23章介绍了COM和.NET组件的互操作性,以及Microsoft提供了哪些工具将这两项技术链接起来。 第24章将学习线程,理解.NET Framework中的各种对象如何让用户开发出多线程的应用程序。我们将讨论如何创建线程,如何将它们与进程关联在一起,以及多任务和多线程之间的差异。 第25章将介绍一个新的.NET 3.0功能—— Windows Workflow Foundation(WF),它便于将工作流集成到应用程序中。 第26章探讨了如何利用VB 2005创建和使用Web服务。该章还讨论了CLR提供的用于建立和利用Web服务的抽象类,论述了一些支持Web服务的技术。另外阐述了使用分布式体系结构的缺点以及Web服务的未来。 第27章讨论了如何在传统的3层应用程序设计中使用远程服务。本章将论述远程服务的基本体系结构,并建立一个基本服务器和客户程序,使用一个singleton对象将客户的请求传递到业务层上。接着介绍如何使用串行化把服务器上更复杂的对象传递给客户,以及如何使用调用环境(call context),在每个调用中,把额外的数据从客户端传递给服务器,但无须改变对象模型。 第28章探讨了.NET组件服务,特别讨论了事务处理和排队组件。 第29章介绍了开发网络应用程序时需要使用的各种协议。我们还讨论了如何把庞大的网络融合到自己的应用程序中。 第30章介绍建立基于服务的组件的新方式—— Windows Communication Foundation (WCF),它可以通过许多协议进行基于标准的通信。WCF是Microsoft为企业内部和外部的组件通信提供的一种新方式。 第31章讨论了在Windows服务的生成过程中,如何使用VB 2005。该章将讨论Windows服务的创建、安装、运行和调试。 第32章介绍了如何从Web上下载资源,如何设计自己的通信协议,以及如何在应用程序中重用Web浏览器控件。 附录A介绍了VB编译器vbc.exe所提供的功能。 附录B列出了一些可用的VB资源。 用户支持 我们总是想知道您对本书的看法,您喜欢哪些内容,您不喜欢哪些内容,这些信息将有助于我们下一次做得更好。如果您有什么意见和建议,请向wkservice@tup.tsinghua.edu.cn发邮件。但是,请您一定要在您的信中注明本书的书名。 如何下载本书的示例代码 在您登录到Wrox站点/时,只需使用Search工具或使用书名列表就可以找到本书。接着在Code栏中单击Download链接,或单击本书信息页面上的Download Code链接,就可以获得本书所有的源代码。另外,您也可以从本书的合作站点www.tupwk.com.cn/downpage上下载本书的所有源代码。 从以上站点上下载的文件使用WinZip进行了压缩。在把文件保存到硬盘的一个文件夹中时,需要使用解压缩软件(如WinZip 或 PKUnzip)对该文件解压缩。在解压缩时,代码常常放在各自的章节文件夹中。在开始解压缩过程时,一定要将解压缩软件WinZip 或 PKUnzip设置为使用文件夹名。 勘误表 尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果您在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。请给wkservice@tup.tsinghua.edu.cn发电子邮件,我们会检查您的信息,如果是正确的,就把它发送到本书的勘误表页面上,或在本书的后续版本中采用。 要在网站上找到勘误表,可以登录,通过Advanced Search工具或书名列表查找本书,然后在本书的信息页面上,单击Book Errata链接。 E-Mail支持 如果您希望直接就本书的问题向对本书知之甚多的专家咨询,那么,就向support@wrox. com发电子邮件,在电子邮件的“主题”(Subject)栏中,加上本书的名称和ISBN的最后4位号码。典型的电子邮件应该包括下列内容: ● 在“主题”栏加上书的名称、ISBN的最后4位数字(4703)和问题所在的页码。 ● 在邮件的正文中加上您的姓名、联系信息和问题。 我们不会给您发送垃圾邮件。我们只需要详细的情况以节省您的宝贵时间和我们的时间。当您发送电子邮件时,它会直接链接到以下支持链: ● 客户支持—— 您的消息会传送到我们的客户支持人员,他们是阅读信息的第一人。他们有常见问题的文件,会迅速回答一般性的问题。他们回答关于本书和网站的一般性问题。 ● 编辑支持—— 更深的问题会转发到负责本书的技术编辑处。他(或)她具有编程或特殊产品的经验,能够回答某个主题的详细技术问题。 ● 作者支持—— 最后,在编辑都不能回答问题的情况下(这种情况很少出现),这些问题将转发到作者。我们试图保护作者不要从写作中分心,但是,我们也很愿意将特殊的问题转发给他们。所有的Wrox作者帮助支持他们的书籍。他们向客户和编辑回复电子邮件,所有的读者都会从中受益。 Wrox支持过程只能提供直接与已出版的图书相关的问题。对于超出此范围的问题可以通过/论坛的团体列表来提供支持。 P2P邮件列表是为作者和同行的讨论而设立的。我们在邮件列表、论坛和新闻组中提供“程序员到程序员的支持”(programmer to programmer support),还包括一对一的电子邮件支持系统。如果把问题发送给P2P,就可以相信,您的问题不仅仅是由支持专家解答,而且还要提供给我们邮件列表中的许多Wrox作者和其他业界专家。在上,可以从许多不同的列表中获得帮助,不仅在阅读本书时获得帮助,还可以在开发应用程序时获得帮助。在网站的.NET类别中,最适合本书的是beginning_vb和vb_dotnet列表。 要订阅一个邮件列表,可以遵循下面的步骤: (1) 进入。 (2) 从左侧的菜单栏中选择合适的列表。 (3) 单击想加入的邮件列表。 (4) 按照指示订阅和填写电子邮件地址和密码。 (5) 回复接收到的确认电子邮件。 (6) 使用订阅管理器加入更多的列表,设置自己的邮件设置。