“David Chappell 是当今最优秀的技术作家之一。他身负数十年业界经验,以流畅的写作风格,为读者提供了这一份对.NET平台清晰而忠实的观察。面对本书,每一位称职的架构师、开发人员和管理人员都应该人手一本。我向你强烈推荐。”——Richard Monson-Haefel,《Enterprise Java Beans》3e (O'Reilly,2001)作者
微软的.NET是一个对Windows-based软件开发起到革命性影响的新技术集。.NET主题之一是Web services的思想,允许软件运用Internet技术,和其他软件直接通讯。这个首创技术中的核心组成:.NET Framework和Visual Studio.NET,提供了一个多语言环境,让开发人员在其中开发Web services及其他类型的应用。.NET的另一方面:.NET My Services,提供我们一个用以创建新型应用的新型平台。总而言之,.NET技术将改变几乎所有Windows应用程序的构建方式。
《.NET大局观》是为开发人员和技术管理人员撰写的一本书,是对Windows崭新开发景观的一份简明指南。页边注释、详细图表以及明晰的写作风格,使这本书易于阅读和浏览;分析文块则探索带争议的话题,并提出常见的关注点。这本书的独立观点和直白描述,清楚地阐示了.NET技术的运作机理和使用方式。
本书关键主题包括:
.NET本身及其目标总览
Web services技术, 包括SOAP(简单对象 存取协议)及其他…
.NET Framework通用语言运行层(CLR)
C#和Visual Basic.NET
.NET Framework类库(Class Library)
ADO.NET
ASP.NET
.NET My Services
理解是运用之钥。《.NET大局观》将使阁下得以作出正确的决策,并最大限度地挖掘这一革命性框架(framework)的潜能。
侯捷译序 i
荣耀译序 iii
目录 v
前言 xi
1 .NET概观 1
定义 .NET 2
Web Services(Web服务) 3
.NET Framework(框架) 6
CLR(Common Language Runtime,通用语言运行层) 11
奠基于CLR之上的语言 15
.NET Framework Class Library(Framework类库) 22
.NET Compact Framework(精简版Framework) 29
.NET My Services 31
.NET Enterprise Servers(企业服务器) 34
.NET的一个实例场景 38
结语 39
2 Web Services 43
描述Web Services 44
应用Web Services 46
访问Internet应用程序 46
B2B整合 47
A2A整合 48
Web Services 的一个实例场景 48
Web Services技术 52
描述信息:XML 52
定义Web Services:WSDL 55
访问Web Services:SOAP 58
搜寻Web Services:UDDI 65
Web Services的未来方向 71
结语 74
3 通用语言运行层(CLR) 75
开发受控代码:通用型别系统(CTS) 76
CTS(通用型别系统)简介 77
进一步探讨CTS Types 80
CLS:通用语言规范 85
编译受控代码(Compiling Managed Code) 86
微软中介语言(Microsoft Intermediate Language,MSIL) 87
Metadata(元数据) 90
组织受控代码(Organizing Managed Code):装配件 94
装配件的Metadata:清单(Manifests) 94
装配件的分类 97
运行受控代码(Executing Managed Code) 99
装载装配件(Loading Assemblies) 99
编译MSIL 101
使装配件更安全(Securing Assemblies) 104
垃圾回收(Garbage Collection) 110
应用域(Application Domains) 113
结语 116
4 .NET 语言 119
C# 120
C# 程序样例 122
C# 提供的types 125
C# 的控制结构 132
其他的C# 特性 133
Visual Basic.NET 142
VB.NET 程序样例 142
VB.NET 提供的types 146
VB.NET 的控制结构 154
其他的VB.NET特性 155
带有受控扩充件(Managed Extensions)的C++ 159
Managed C++ 程序样例 161
Managed C++ 提供的types 163
Managed C++ 的其他特性 163
结语 165
5 .NET Framework类库(Class Library) 167
.NET Framework类库概观 167
System名字空间(namespace) 168
System的次级名字空间(sub-namespace)概观 169
输入和输出:System.IO 180
序列化:System.Runtime.Serialization 183
支持XML:System.Xml 187
XML技术家族 188
System.Xml提供了什么 192
反射:System.Reflection 195
.NET远程系统:System.Runtime.Remoting 200
远程处理过程(Remoting Process)概览 202
将信息传递给远程对象(Remote Objects) 203
选择一个Channel(通道) 205
远程对象的创建和销毁(Creating and Destroying) 207
企业服务:System.EnterpriseServices 214
互操作性:System.Runtime.InteropServices 220
访问COM对象 220
访问Non-COM DLLs 225
Windows GUIs:System.Windows.Forms 227
使用Windows Forms(表单)开发你的GUIs程序 227
Windows Forms的控件(Controls) 232
结语 233
6 访问数据:ADO.NET 235
.NET 数据供应器 237
直接访问数据 242
以DataSets访问数据 246
创建和使用DataSets 248
访问和修改DataSet的内容 253
使用DataSets和“以XML定义的数据” 256
结语 262
7 开发Web相关应用:ASP.NET 263
浏览器应用程序:System.Web.UI 264
浏览器相关应用程序的工作机理 266
Web控件(Web Controls) 270
将用户界面(UI)从代码中分离出来 274
其他主题 276
Web Services的应用:System.Web.Services 289
Web Services服务器 289
Web Services客户端 292
Web Services应用程序的选项 293
微软对Web Services应用程序的特定支持 297
结语 298
8 .NET My Services 299
定义 .NET My Services 300
应用 .NET My Services 304
确保隐私 306
.NET My Services商务模型:软件业就是服务业 308
描绘 .NET My Services 310
认证服务(Authentication Service): Passport 311
XML-Based Services 313
.NET My Services 的一个实例场景 319
结语 324
关于作者 325
索引 327
编写优质软件并无不二法门,亦不存在十全十美的开发平台。然而创造平台的人们仍然为这个遥不可及的理想奋斗,持续地为我们带来新的软件建构技术。除了极少数例外,每一次变革都比它所取代的东西更好。无一例外的是,每一次创新都使我们脑袋里的知识多少有些过时。是的,和软件互动的根本之道就在于与时俱进,随机应变。
.NET是迄今微软(也可能是任何厂商)向技术客户展示的最大一套新技术。它所打造的巨大革新几乎提升了开发人员生活的每一方面,与此同时,它也带来了大量需要理解的新技术。本书的目标就是帮助你迁移到这个巨大的新世界中。
本书为谁而写
.NET规模庞大。肯定会有许多书籍提供这一巨大的“技术水晶”的每一侧面的详尽分析,也会有大量书籍提供核心的、易于动手实践的信息。本书不属此类。我坚信从整体上理解 .NET将是深入钻研其任何专门技术细节的基本要素。因此,我的目标是提供一个 .NET主体技术的广泛概观。由于这一软件族系及其提供的服务的最伟大力量之一就是它们可以彼此借鉴,因此本书也试图展示这些技术是如何结合在一起的。
如果你正在寻找关于 .NET的整体描绘,本书正是为你而写。无论你是一位刚开始接触 .NET的开发人员,还是一位需要对这些技术作出决策的技术管理者,抑或是第一次接触这些观念的学生,本书都将是有益的指南。这儿有足够的、可彻底满足许多人需要的信息细节。上述以外的其他人可以将本书当做了解更多细节知识的“垫脚石”。无论如何,我希望这本书的组织方式和涵盖内容,都可以使你在理解并掌握这一巨量技术时省些力气。
事实和观点
要掌握一种新技术,就非得弄清楚其基本原理不可。它的主要构成是什么?它们如何运作?如何彼此结合?但如果要真正透彻理解一种技术,光是这些远远不够。你不但要弄清楚事情如何运作,还要明白它们为何至关重要,它们与过去的技术相比又如何,下一步可能会发生些什么。
本书提供了所有这一切。在正文中我努力保持严肃的教学形式,完全集中于描述 .NET是什么。在“分析文块”里,我会从不同方面给出一些关于这种技术的概括性看法。每一个“分析文块”里的分析都表达了我对于“为什么事情会是这个样子,将来又会如何”的观点。通过这种将客观事实和主观看法分开描述的方式,我希望能够让你比较轻易地区分两者;在叙述事实的同时我将表达个人观点,我希望本书因此得以更有趣味,更富启迪性。
致谢
如果你曾经写过书籍,你就会明白你从别人那儿得到了多少帮助。如果你没有写书经历,那好,相信我,没有以下这些人的协助,本书将失色不少。我想要向以下人士致以由衷的谢意:Bob Beauchemin, Keith Brown, Cori Day, Ted Demopoulos, Bill Estrem, Jeannine Gailey, Kit George, Greg Hack, Rob Howard, Maxim Loukianov, Juval L?wy, Peter McKiernan, Yahya H. Mirza, John D. Mitchell, Christophe Nassare, Eric Newcomer, David Sceppa, Aaron Skonnard 和Mike Woodring。他(她)们阅读了本书草稿,给我宝贵的意见,并且时常纠正书中存在的这样或那样的问题。我尤其要感谢Richard Monson-Haefel,他是一位卓尔不群的技术专家和作家,他阅读了每一章,并给出许多有见地的评论。
我所参与的许多 .NET研讨会的众多出席者也为本书品质的提升做出了不小的贡献。通过为我提供讲解 .NET技术的机会,他们帮我判断哪一种途径对于理解 .NET最富成效;通过向我提出发人深思的问题,激发了我的灵感,使我写出散布于本书各处的许多“分析文块”。
Addison-Wesley的许多人也值得我深表谢意。如果没有Kristin Weinberger,Independent Technology Guide系列书籍和本书都不会存在;如果没有Stephane Thomas,我可能永远都无法完成这个项目;如果没有Cindy Kogut,我的文字将明显失色;如果没有Katie Noyes,就不会有如此漂亮的封面。
我还要感谢我的好友Jim和Judy Moffitt,在我最需要的时候,他们亲手送来了成包的巧克力夹心饼干。最后,我要把这一切都归功于Diana Catignani——没有她,我的生命贫瘠无比。