首页>参考读物>计算机科学与技术>软件与程序设计

Visual Basic.NET 分布式应用程序设计
作者 : (美)Dan Fox
译者 : 智慧东方工作室
出版日期 : 2002-06-01
ISBN : 7-111-10287-8
定价 : 55.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 516
开本 : 16开
原书名 : Building Distributed Applications with Visual Basic.NET
原出版社:
属性分类: 店面
包含CD :
绝版 : 已绝版
图书简介

本书介绍通过Visual Basic.NET和.NET Framework构建分布式和可重用商业系统的方法,结合XML、SOAP和HTTP等技术创建Web应用程序的方法。本书包含大量实际可重用的Visual Basic.NET代码,可供开发人员使用。

图书特色

Dan Fox是Quilogy公司的技术总监,公司位于美国堪萨斯州欧弗兰帕克市(Overland Park)。Quilogy(www.quilogy.com)是一家领先的Microsoft金牌认证合伙人(Gold Certified Partner)和方案供应商,在全国16个城市拥有450名顾问。Quilogy为众多客户提供数字咨询和技术培训服务,尤其擅长在Microsoft平台上构建方案。作为微软的一个“认证技术培训中心”,Quilogy负责开设一系列Microsoft正式课程(MOC),并致力于.NET开发和.NET企业服务器的方案构建及课程讲授。 Dan是一名Microsoft认证方案开发者、系统工程师和培训专家,在大量项目中担任过顾问、老师和顾问管理的工作。在担任技术总监职位期间,Dan为Quilogy的顾问和客户提供技术性指导。 在1995年加入Quilogy之前,Dan为德州休斯顿的Chevron公司工作过,并为密苏里州堪萨斯城的美国保险监理官协会(NAIC)工作过。Dan于1991年,从爱荷华州立大学获得计算机科学学士学位。 Dan是《Visual Basic Programmer誷 Journal》的特约撰稿人,并为《SQL Server》杂志、《Advisor》杂志和InformIT.com撰写过大量文章。他创作过《Pure Visual Basic》一书,由Sams出版;并参与创作了一本有关Visual Basic 6分布式考试(70-175)的书,由Certification Insider Press出版。他是TechEd的发言人,并是几个Developer Days会议和Microsoft活动的发言人。

图书前言

欢迎跨入.NET的世界!对许多开发者来说,这都意味着跨出了很大的一步。.NET(在常规意义上)和VB .NET(在具体意义上)引入了一系列新技术和新方式,可供执行大量熟悉的任务。针对这些任务,在您设计和开发软件时,需要同时注意概念问题和实际问题。
在前言中,解释了本书的重点、布局、插图风格、示范应用程序、网站和面向的读者。
本书重点
并非所有软件都是用同样的方式创建的。例如,设计和构建一个基于窗体的应用程序时,采用的体系结构和技术同构建一个基于Web的应用程序是不同的。由于不同类型的应用程序需要采用不同的方法,所以要用不同的方式来使用VB .NET,本书的重点在于分布式应用程序的构建。
所谓“构建”分布式应用程序,我的意思是指设计和建立软件。以这个目标为准,本书将重点放在体系结构的问题和具体的实现上,解释了VB .NET的一个特定概念如何迎合一个更大的远景目标的需要。而且除了讲解语法的细节之外,还讲解了它如何在分布式应用程序中使用。所谓“分布式应用程序”,我的意思是那些应用程序采用一个Web体系结构,而且通过逻辑服务或“层”(表示、商业逻辑、数据访问)的概念来构建。换言之,用Windows Forms包开发基于窗体的应用程序—诸如此类的主题就超出了本书的范围。本书约有四分之一的内容都在讲解如何用Web Forms和Web Services构建表示服务。
如前所述,分布式应用程序也包括商业逻辑和数据访问服务的构建。所以,本书篇幅最大的一些章会专门讲解VB .NET同Component Services的集成,以及ADO.NET和XML的使用。许多读者可能早已熟悉了这个结构,它以前曾在市场上被广泛地宣传为Windows DNA,内部包含的是上一代的某些技术,比如VB 6.0和COM等。事实上,您可以认为本书是包含了这一系列技术的集合,它们将通过VB .NET,构建新一代的Windows DNA应用程序。
此外,我们还强调了构建基于服务器的应用程序,讲解了Windows服务应用程序,并在.NET中运用了连网API的概念。之所以包括这些主题,是由于它们经常作为分布式应用程序的一个附加接口使用,而且是为数据交换或数据装载创建健壮的“后端”所必需的。
本书结构
为指导您理解大量概念和实际问题,本书分为三大部分,不仅帮助您理解“如何”构建分布式应用程序,还帮助您理解“为什么”这样做。
第一部分:.NET概念
这部分概述了用VB .NET做项目时,开发者需注意的关键概念。在第1章中,不仅对整个平台进行了介绍,还深入讲解了VB .NET的一种底层概念,即“通用语言运行时”(CLR),它是一切产品的构建基础。CLR是VB .NET中最具革命意义的一个概念。另外,如同您会看到的那样,只要在正确的环境中使用,就可将VB .NET想象成用于为CLR构建应用程序的一种工具,可作为管理应用程序。
尽管第1章提供了大量技术信息,但我的目的并不是想把任何人吓跑。然而,我觉得您至少要对CLR有一个表面的理解。因为一旦脱离了它,VB .NET中的许多其他概念便失去了依托,比如在第4章和第5章讲解的那些概念等。此外,第2章讲解了Visual Studio .NET的最新变动和新概念,第3章就VB语言本身的问题进行了讲解。最后,第6章讨论了在这个版本的产品中,错误处理和调试有哪些改进。
第二部分:企业技术
这部分是本书的核心,总共由五章构成,对一个分布式应用程序中的每个服务层(表示、商业、数据访问)进行了讨论。在第7章中,解释了如何利用ADO.NET编程模型,从而更方便地构建松散耦合的应用程序,并在其中利用XML的各种优势。
第二部分提供了来自一个示范应用程序的例子,它为我工作的公司Quilogy实现了一个简单的学生注册站点。Quilogy(www.quilogy.com)是一家数字咨询公司,在美国各地的培训中心提供技术培训。为此,学生们需要通过公共网站查询我们的课程表、注册班级、他们的成绩单等等。示范应用程序使用VB.NET实现了这些特性,并随底层数据库Schema一道,在配套网站(www. samspublishing.com)上提供给读者。应用程序在后端使用了SQL Server 2000,所以尽管ADO.NET支持访问其他供应商,但本部分和贯穿全书的实例,均将重点放在SQL Server上。
第8章讨论了在VB.NET中构建组件。该章也探讨了传统DLL,以保证您现有的代码能在.NET中使用。最后,讨论VB .NET应用程序中的组件如何同.NET Remoting共享。如同其前身DCOM一样,一旦分布式应用程序中的子系统需要跨越进程和机器的边界进行通信,那么.NET Remoting就会显得异常方便。第9章讨论了VB.NET组件中的商业和数据逻辑如何同Windows 2000组件服务集成。这样一来,您的VB.NET组件就可充分地利用对象池、JIT(just-in-time)激活、事务控制以及VB开发者在分布式应用程序中经常需要实现的其他特性。此外,该章还介绍了在VB.NET中构建的组件如何同传统的COM组件交互操作。
第10章和第11章探讨了构建一个基于Web的应用程序所需的表示服务层。第10章很大一部分探讨了ASP.NET的结构和特性,以及它们同ASP的区别。然后,详细讨论了Web Forms编程模型,使用的是Quilogy示范应用程序的UI。第11章通过讨论Web服务,介绍了VB.NET可生成的另一种类型的接口。由于Web服务对许多开发者来说都属于一种新概念,所以该章探讨了其中涉及到的基本技术,以及它们在VB.NET中是如何实现的。
第三部分:集成
这部分讲解了一系列重要的主题,主要介绍对VB .NET代码进行扩展的方法。在第12章中,讲解了I/O的概念,如何创建多线程应用程序,并简要介绍了密码的使用。第13章指导您用VB .NET创建Windows服务,并利用调度、事件日志、性能计数器和网络通信。最后,第14章讲解了三个重要的主题,VB.NET开发者可通过XML类、消息队列和同Active Directory的集成,从而访问除关系型数据库之外的其他数据源。
如同您可能已经注意到的那样,VB .NET的很大一部分功能都是从类库来的,而这些类库是所有Visual Studio .NET语言都可以利用的,而我把这叫做Services Framework。所以,您会注意到只有在第2、3和4章中,才实际讨论了VB .NET特有的问题。本书其余部分实际上在讲述Services Framework的类如何在VB .NET语言中使用。您一定要认识到这一点,它能帮助您正确理解VB .NET只是Visual Studio .NET的一种产品,并可正确理解它所担当的角色。所以,可将VB .NET想象成一种工具,用于将Services Framework的预建组件集成到一个特定的方案中。像这样来思考VB .NET,对现有的VB开发者来说应当是不会引起惊异的,因为以前版本的VB也集成了预先构建好的和自定义的组件。
本书约定
本书每章的开头都有一、两个介绍性的段落,对要讨论的主题进行概述,并帮助读者建立起一个正确的学习背景。例如,在讨论ADO.NET时,许多开发者的第一个问题是它如何同ADO 2.x集成,以及用VB .NET对数据访问进行编程时,如何利用ADO的知识。建立了这样的背景后,我们开始解释相关的语法和API,让您正确地利用这一特性。在许多情况下,对语法的解释都会提供代码片段、表格和图示,揭示语法,列出一个特定类的方法或者展现一个层次结构,解释类如何相容于一个更大的背景中。最后,在大多数情况下,都会提供一个能实际工作的例子,并附上一个或多个代码清单,对当前背景的技术进行阐述。其中指出VB.NET特性中有趣的部分以及其他相关技术。
贯穿全书的“注意”“提示”“警告”指出了相关的问题,引导您参阅本书的其他内容,或者把您带到可找到其他补充信息的地方。例如,有几个“注意”会指导您参见我以前的一本书《Pure Visual Basic》。由于没有任何一本书能全面覆盖VB .NET和.NET Framework的全部内容,所以“注意”通常用于提醒您一项某项技术的扩展内容在哪里,或者能采取的其他方式。
可以肯定的一点是,这样的风格要求读者具有一定的知识基础,因为许多细节和备用方法是嵌于补充性段落的。另外,读者必须频繁地回过头去参考代码清单,否则就跟不上讨论的进度。不过,我也尝试对信息量进行了一定程度的限制,使其保持与当前构建的应用程序的紧密联系。所以,并不是每一种方法的所有过载的签名都会讲到,也不会讲到它所支持的所有参数。对于那样的信息来说,最好利用产品提供的联机帮助进行查阅。
本书绝对不是一本教程,如果按书中的代码原样使用,那么会遇到麻烦,因为在许多情况下,代码只展示了一个更大的概念的相关部分。此外,在许多情况下,代码只是对伪代码的一种模拟,设计宗旨是展示一个特定的API如何使用,但并不会实现所有细节。
建议您在阅读本书时,先通读整节的内容,找出其中的代码清单和代码片断,然后细读联机文档或其他参考资料,掌握其他信息,再针对自己的“问题域”,开发自己的实例。本书的代码清单只作为一个起点使用。为了在这方面为您提供帮助,如同早先指出的那样,第7~11章讨论的代码清单,以及完整的Quilogy示范应用程序,可在Sams的网站找到,地址是www.samspublishing.com。为了提醒您采取这样的做法,每章的开头都会提供以下注意:
注意  本章所有代码清单和补充材料都可在本书的网站找到:www. samspublishing.com。
此外,使用代码清单时,注意由于在VB .NET中引用外部库时,通常必须在代码文件的开头放置一条Imports语句,所以许多代码清单和示例都在开始处添加了一系列有暗色底纹的Imports语句。之所以加上底纹,是由于它们实际并不出现在那个位置;但为了生成清单或示例中出现的代码,它们又是必需的。
本书故意增大了代码的份量,减少了插图的份量。我相信开发者通过查看代码,可更快地进行学习。我试着对插图数量进行了严格的限制,除非万不得已,否则不使用插图。例如,在VS .NET UI中,为了让您知道在何时去寻找一个特定的特性,我才会使用插图。屏幕截图不应该作为教程使用,在您使用VS .NET的过程中,由于您的解决方案的特殊性,所以看到的屏幕显示也可能是不同的。
另外,我还将重点主要放在如何用代码来实现各种特性上,而不是使用VS .NET自带的图形设计工具和向导。这是因为我相信为了开发出坚实的基础代码,您需要理解在代码这一级上发生的所有事情,而图形式向导并不能很好地让您理解代码的细节。
面向的读者
在您阅读本书的过程中,会注意到我已为本书设定了两类读者。目前的企业VB开发人员算是第一类读者。所以,本书主要是为一名熟悉VB 6.0语法的开发者编写的,他/她目前希望构建Windows DNA应用程序。事实上,我原本假定的读者是一些学生,他们参加过Quilogy开设的有关VB的一门Microsoft正式课程(MOC)的学习。通常,这些开发人员用过VB一段时间,并开发过COM组件,用它们容纳数据访问和商业逻辑,并用过Microsoft Transaction Server或组件服务。他们还应精通ADO和ASP开发,但现在只是刚开始学用XML。对于这些开发者,在转移至VB.NET的环境时,面临的一项主要挑战便是Services Framework所具有的“面向对象”的本质,以及实现这些特性的其他一些语言语法。对这类读者来说,第3章和第4章显得尤其有用。
第二类读者是ASP开发者,他们通常较少受过正规培训,而且不太擅长Web开发。对这部分开发者,挑战是如何从构建两层的Web应用程序,转移到一个多层结构,详情将在第7章进行讲解。此外,对这类读者来说,VB .NET语言比VBScript或JScript所具有的特性更丰富,因此要付出更多的努力去熟悉和掌握。
最后,Services Framework有许多类可方便地提供系统服务,由此便展现出一个充满着更多应用领域的新世界。我会试着对Services Framework中最有用的那些部分进行重点介绍(尤其是在第三部分中)。
我之所以写作本书,是由于我觉得,目前许多平台采用的基础技术以及Microsoft为VB .NET选择的发展方向都需要开发分布式应用程序。而与平台相关的模式在转变,以及产品本身过大,使一些VB开发者难以顺利地掌握VB .NET的使用。所以,本书为VB .NET和Services Framework进行了一系列提炼,展示了如何用它们构建分布式应用程序。
既然如此,您还在等什么呢?让我们马上开始吧!
Dan Fox
于堪萨斯州肖尼市
2001年8月
本书英文版原书书名:Building Distributed Applications with Visual Basic.NET
本书英文版原书书号:ISBN 0-672-32130-0
本书英文版出版者网址:www.samspublishing.com

图书序言

计算机业界正在逐渐朝.NET技术转变,带来了许多令人激动的机会,而只有在分布式计算的环境中,这些机会才有可能成为现实。我知道这是真实的,因为我每天都能亲自体验到.NET技术工作时的巨大威力,而我们屡获殊荣的内部系统就运行在.NET平台上。
作为Quilogy公司(一家商业解决方案供应商,提供数字咨询、高级托管和技术培训服务)的首席技术总监(CTO),我同Dan Fox在过去几年间有着密切的工作关系,我们在公司内部共同学习、体验以及应用新的Microsoft技术。只有由我们自己来测试和构建方案,并证明其可行,才能放心地为客户提供最好的、最有效的方案。去年,我们的工作便是集成.NET策略。
在Quilogy公司,Dan由于对.NET技术的精通,再加上他以前为一家大型石油公司构建大规模系统的经验、对于数据库和面向对象系统的全面掌握以及为数众多的Microsoft证书,使其成为写作本书的最佳人选。此外,今年标志着Visual Basic已经问世10周年,所以本书的出版有着特殊的意义。我们认为,专业VB开发者要想进入.NET领域,最好的方法便是通过Visual Basic .NET。
作为企业开发者用于构建解决方案的一种领先语言,VB及其新的.NET特质,现在可满足商业开发人员的更多的需求。因此,您现在就应当理解它,而不是等到以后,这是十分关键的。有关.NET的一个好消息是,您可以转向它,并仍然利用现有的编程技能,因为它提供了出色的多语言支持。正如本书展示的那样,您肯定需要学习一些概念和技术,但它们都是以您已经掌握的知识为基础的。所以,您可以很快地开始利用.NET提供的所有新特性和功能。
Dan在此并不是转述Microsoft的文档,而是解释了一个应用程序的开发过程,并提供了全面的个人见解。通过他清晰明了的叙述,您能理解大量的“为什么”,比如VB .NET为什么如此重要;并理解大量的“怎么做”,比如VB .NET如何同常规方案相适应。此外,大量示范代码清晰地解释了要点,并极大增强了本书的可读性。Dan是一名广受欢迎的讲师,并经常在一些重要会议上发言,比如TechEd和Developer Days。他还是几本印刷和在线杂志的特邀撰稿人,包括《Visual Basic Programmers Journal》、《SQL Server》杂志、InformIT和《Advisor》杂志等等。他值得称道的教学方法、令人鼓舞的话语以及全面深刻的知识,均在本书得到了充分的展示。
目前,Dan作为技术总监,负责帮助我选择各种技术、建立应用程序结构、判定成功的设计模式以及对员工进行新技术的培训。自从在公司就任这样一个重要职位后,他就一直帮助开发Quilogy具有重大意义的商业门户解决方案构建系统,名为Quilogy Accelerator(QA)。使用代码将Quilogy内部网作为一个.NET加速器,QA简化了门户和内部网解决方案的创建过程,要比直接购买或从头构建快得多,也要便宜得多。
如同我们通过QA体验到的那样,当您将.NET策略应用于自己的商业环境时,一样会发现.NET真的在许多方面改变了技术性商业解决方案,并会朝令人激动的新方向发展。
Alan Groh
Quilogy CTO

作者简介

(美)Dan Fox:暂无简介

译者简介

智慧东方工作室:暂无简介

图书目录

第一部分  .NET 概念
第1章  Microsoft .NET体系结构 1
1.1  新的平台 2
1.1.1  .NET的本质 3
1.1.2  VB在.NET中的地位 4
1.2  通用语言运行时体系结构 6
1.2.1  CLR的目标 6
1.2.2  被管和未被管代码 8
1.2.3  通用语言规范 9
1.2.4  CLR内部工作原理 10
1.2.5  运行时组件 20
1.2.6  类库 25
1.3  小结 27
第2章  开发环境 28
2.1  新的IDE 28
2.1.1  项目和解决方案 29
2.1.2  IDE窗口 32
2.1.3  所支持的文件类型 38
2.1.4  设置项目引用 40
2.1.5  宏和外接程序 42
2.2  使用属性 44
2.3  命令行编译 46
2.4  小结 47
第3章  VB.NET 语言特性 48
3.1  关键字的变化 48
3.2  函数的变化 51
3.2.1  声明 51
3.2.2  操作符 52
3.2.3  数据类型 54
3.2.4  数组 55
3.2.5  结构 60
3.2.6  转换 62
3.2.7  字符串 63
3.2.8  块作用域 65
3.2.9  过程 66
3.3  从VB6.0中升级 67
3.4  小结 75
第4章  面向对象的特性 76
4.1  面向对象的术语 77
4.1.1  封装 77
4.1.2  多态 77
4.1.3  继承 77
4.1.4  更多面向对象的术语 78
4.2  名称空间的角色 79
4.3  定义类 81
4.4  创建成员 81
4.4.1  创建方法 82
4.4.2  创建属性 82
4.4.3  创建域 84
4.4.4  创建事件和代表 84
4.4.5  创建命名常量 94
4.5  使用继承 95
4.5.1  使用多态 98
4.5.2  创建和使用共享成员 98
4.6  使用基于接口的编程方式 99
4.7  使用构造函数和析构函数 101
4.7.1  参数化的构造函数 102
4.7.2  析构函数 103
4.8  小结 107
第5章  打包、部署和安全性 108
5.1  打包和部署的概念 108
5.1.1  Assembly回顾 108
5.1.2  对代码进行预JIT编译 115
5.2  打包和部署选项 116
5.2.1  部署情节 116
5.2.2  安装服务器资源 120
5.3  保护我们的代码 123
5.3.1  代码访问安全性 123
5.3.2  基于角色的安全行 128
5.4  小结 131
第6章  错误处理和调试 132
6.1  处理异常 132
6.1.1  使用非结构化的异常处理 133
6.1.2  使用结构化的异常处理 135
6.2  使用VS.NET调试程序 138
6.2.1  启动调试过程 139
6.2.2  附加运行中的进程 141
6.3  使用诊断 142
6.3.1  使用调试类 142
6.3.2  使用跟踪 144
6.3.3  使用监听程序 146
6.4  小结 147
第二部分  企业技术
第7章  使用ADO.NET访问数据 149
7.1  ADO.NET定义 149
7.2  System.Data体系结构 151
7.2.1  被管提供者 151
7.2.2  连接池 160
7.2.3  断开数据 162
7.3  应用程序实例:Quilogy Education
    System 171
7.3.1  定义数据结构 172
7.3.2  处理数据访问 193
7.4  小结 202
第8章  生成组件 203
8.1  设计组件 203
8.1.1  生成类与生成组件 204
8.1.2  编组对象 204
8.1.3  生成可重用组件 210
8.2  使用.NET Remoting 215
8.2.1  托管组件 216
8.2.2  激活组件 221
8.2.3  使用高级远程化 226
8.3  调用未被管DLL 227
8.3.1  封装未被管DLL 229
8.3.2  使用回调 235
8.4  小结 236
第9章  访问组件服务 237
9.1  从MTS移植到COM+ 237
9.1.1  管理上的变化 238
9.1.2  结构上的变化 238
9.1.3  实现COM+服务 243
9.1.4  自动事务处理 245
9.1.5  对象激活与构造 249
9.1.6  对象池 251
9.1.7  共享属性 252
9.1.8  COM+事件 253
9.1.9  队列组件 256
9.1.10  COM+安全 259
9.2  注册服务组件 262
9.2.1  首次使用注册 262
9.2.2  手动注册 263
9.3  互操作 264
9.3.1  在.NET中访问COM组件 264
9.3.2  在未被管代码中访问.NET组件 268
9.4  小结 274
第10章  生成Web窗体 275
10.1  理解ASP.NET 275
10.1.1  ASP.NET体系结构 276
10.1.2  编程模型 279
10.1.3  与ASP的区别 280
10.2  示例应用程序 287
10.3  Web窗体结构 288
10.3.1  页面处理流程 288
10.3.2  事件模型 292
10.4  ASP.NET特性 296
10.4.1  配置文件 296
10.4.2  安全性 298
10.4.3  状态管理 310
10.4.4  缓存 314
10.4.5  跟踪 319
10.5  ASP.NET服务器控件 321
10.5.1  HTML服务器控件 322
10.5.2  Web服务器控件 324
10.5.3  Web窗体用户控件 353
10.6  小结 355
第11章  生成Web服务 356
11.1  Web服务结构 356
11.1.1  Web服务的用途 357
11.1.2  Web服务技术 358
11.2  Web服务实现 365
11.2.1  创建Web服务类 366
11.2.2  Web服务设计问题 374
11.2.3  自定义SOAP 376
11.3  使用Web服务 377
11.4  小结 382
第三部分  集   成
第12章  访问系统服务 383
12.1  理解I/O概念 383
12.2  创建多线程应用程序 404
12.2.1  使用线程 405
12.2.2  使用线程池 411
12.3  操纵Windows进程 417
12.4  使用密码系统 423
12.5  小结 428
第13章  实现服务 429
13.1  创建服务应用程序 429
13.1.1  生成服务 430
13.1.2  安装服务 433
13.1.3  控制服务 438
13.2  计划服务 441
13.3  使用事件日志 442
13.3.1  写事件日志 442
13.3.2  使用自定义日志 444
13.3.3  接收通知 446
13.4  监视性能 448
13.4.1  安装自定义性能计数器 448
13.4.2  使用性能计数器 449
13.4.3  示例性能计数器 451
13.5  通过.NET进行通信 452
13.5.1  使用System.NET 452
13.5.2  使用FTP 457
13.6  小结 461
第14章  与企业集成 462
14.1  使用XML类 462
14.1.1  流式XML 463
14.1.2  使用DOM访问数据 471
14.1.3  转换文档 475
14.1.4  处理XML Schema 477
14.1.5  序列化为XML 481
14.2  集成消息 486
14.2.1  管理队列 486
14.2.2  发送和接收信息 490
14.3  集成活动目录 496
14.4  小结 499

教学资源推荐
作者: [美]沙伦·比奥卡·扎卡沃(Sharon Biocca Zakhour) 索娅·坎南(Sowmya Kannan) 雷蒙德·盖拉多(Raymond Gallardo) 著
作者: 程学先 林姗 程传慧
作者: (美)Daniel M. Bikel, Imed Zitouni 编
参考读物推荐
作者: 贾佳 郝洪明
作者: 魏汪洋 张建林 郑玉晖 等编著