.NET程序设计之四书五经(转载)

2024-02-16 21:38

本文主要是介绍.NET程序设计之四书五经(转载),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文链接:http://www.royaloo.com/articles/articles_2004/dotnetbooks.htm

.NET程序设计之四书五经

《程序员》2004/04

引言

Microsoft® .NET Microsoft XML Web services 平台。XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。Microsoft .NET 平台提供创建 XML Web services 并将这些服务集成在一起之所需。对个人用户的好处是无缝的、吸引人的体验。 — 微软公司 

可见,.NET之中最重要的技术首推 Web Services。大多数贴着.NET标签的技术都在某种程度上支持 Web Services。然而.NET绝非仅仅是 Web Services而已,在.NET技术发布之初,微软贴上.NET标签的还包括.NET框架(包括通用语言运行时CLR.NET框架类库两大部份)、Visual Studio.NET.NET My Services.NET企业服务器等。 

要想透彻理解.NET,就必需透彻理解Web services,同时还必须领会以上列举的每一种.NET技术的基本要素。很可惜,我个人期待的Eric Newcomer的著作Understanding Web Services: XML, WSDL, SOAP, and UDDI目前在国内还不得见。不过,无论你打算学习Windows Forms,还是ASP.NET(含Web Services),抑或其他.NET技术,我认为首先应该建立对.NET平台的通盘认识,然后从CLR开始,自底向上,深入学习.NET各专项知识。

直到今天David Chappell的《Understanding .NET: A Tutorial and Analysis》(《.NET大局观》,华中科技大学出版社)仍然是一本不错的.NET大局观读物。David善于将复杂的技术用简单而清晰的方式表达出来。尤其值得一提的是,这本书对于Web Services的清晰介绍,在别的书里很难看到。然而,有感于一些读者的误解,作为译者之一,在此我想重提侯捷先生的一句话:“读者基础”从来都是一个说不清楚、难以量化的东西。不妨试读一二,如果满意,它就适合你。

我时常光顾的一家书店的.NET图书总量,在很短的时间内就赶上了Java图书总量。林林总总,内容遍及各个领域,包括微软中间语言(Intermediate LanguageIL)、CLR.NET框架类库、.NET语言、Visual Studio .NET,以及像COM互操作、多线程这样的高级主题。限于篇幅,本文重点推介三本好书,不过,仅此三本已经涵盖了.NET平台的大半江山。

CLRWindows FormsASP.NET 

Jeffrey Richter, Applied Microsoft .NET Framework Programming
Microsoft .NET框架程序设计(英文版)》,机械工业出版社
Microsoft .NET框架程序设计(修订版)》,清华大学出版社
 

.NET框架主要包含两大块:其一是CLR,其二是类库,而CLR则是.NET框架中其他任何东西的基础。无论是要透彻理解像C#Visual Basic.NET这样的.NET语言,还是要全面把握ASP.NETADO.NETWindows Forms这样的.NET框架类库,你都必须对CLR有一个很好的理解。Richter的这本书就是CLR方面的权威著作,它详细地讲解了CLR的构造和工作机理,而.NET框架类库并非本书的重点。 

RichterWin32程序设计领域的权威技术作家,本书则奠定了他在.NET世界同样的地位。这本书对于程序集、装箱/拆箱、事件和委托、异常机制以及垃圾收集等关键主题的讲解准确而清晰,同时还给出了许多宝贵的建议和忠告。因此,尽管Visual Studio .NET这样的集成开发环境很容易上手,但为了有效地构建各类高效的应用程序,我推荐你在动手编写代码之前,认真阅读一下这本书。 

这本书对于完全的初学者有一定的难度,而对于有经验的程序员(包括Windows DNA程序员和Java程序员)来说,这本书正是他们梦寐以求的.NET读物。 

顺带一提,这本书的中译本先后出过两个版本。“修订版”的译者李建忠先生是我的朋友。因我虚长建忠几岁,在他决定接受此书修订邀请之前曾征求我的意见 — 很幸运 — 他没有理会我的建议,各位读者朋友今天才得以看到这个倾注着译者心血的译本。 

Charles Petzold, Programming Windows with C# (Core Reference)
Programming Windows with C# (Core Reference)(影印版)》,世界图书出版公司
Microsoft C# Windows 程序设计》(上、下册),北京大学出版社

这部著作的问世,证明Petzold 依然是Windows GUI程序设计领域的首席作家。本书专注于使用Windows Forms类库和C#语言编写传统的Windows桌面应用程序。是的,本书没有涉及CLRADO.NET以及ASP.NET等“更重要的”.NET技术。除了对C#语言浮光掠影的简介外,它没有越雷池半步,全神贯注于Windows Forms程序设计,深入解释了Windows Forms类库的方方面面。

尽管Visual Studio .NET提供了大量的可视化工具和向导,使我们得以快速地设计用户界面并享用其生成的代码框架,但Petzold 没有让Visual C# .NET自动生成代码,本书所有代码都是手工编写而成 — 这也是Petzold一贯的风格。不妨首先按照Petzold的方式,学会怎样编写你自己的代码,在理解了足够多的Windows Forms知识的基础上,再使用IDE来缩短你的项目开发周期。

渊博的领域知识,高超的写作技巧,清晰的写作风格,使得本书如此之厚,而又如此简洁、清晰。阅读本书,宛若和Windows程序设计大师面对面地交流,许多疑惑,豁然开朗。 

Windows Forms程序设计领域,我还要特别提一下Chris Sells的著作Windows Forms Programming in C#,原因倒不仅仅在于我是这本书中文版的领衔译者。 

我们知道,GUI应用程序开发方面的参考书往往会走向两个极端。一种是充斥着IDE截屏图的开发工具“快速入门”,我想各位读者对这种书不应该陌生。而上面提到的Petzold的著作则走向“另一个极端” — 它只字不提IDE提供的可视化的交互设计特性。我不否认Petzold的方式对于学习者来说行之有效 — 我本人就是Petzold著作的受益者。然而,你知道,作为一名开发实际.NET应用的程序员,我们几乎总是工作于像Visual C# .NET这样的IDE中,因此,我们必须能够游刃有余地运用IDE提供的各项功能,同时还必须洞悉IDE背后隐藏的Windows Forms及与之紧密相关的知识。Sells 的这本书能够让你心想事成。请耐心等候,好戏还在后头。 

Jeff Prosise, Programming Microsoft .NET
Microsoft .NET程序设计技术内幕》,清华大学出版社
 

和前面两本书一样,这也是一本“文不对题”的著作,中文版的书名则更加离谱。尽管这本书在内容上划分为三大块,对于Windows Forms等技术主题也花了一定的篇幅,但本书的出发点显然在于ASP.NET应用程序开发,它的大部分篇幅要么是讲述Web应用开发和Web Services技术,要么是讲述与此两者密切相关的东西。 

这并不奇怪。尽管.NET平台包含许多东西,但首先同时也是最重要的是,它的出发点是为了提供一种更好的编写以Internet为中心的应用的方式(请不妨再回顾一下.NET的定义)。可以说,Prosise准确地把握、解释和示范了.NET平台最主要的一大块内容。 

鉴于传统的ASP技术是如此流行,ASP.NET对开发人员的影响肯定要比 .NET框架类库的其他任何部份都要大。客观地说,在.NET世界,ASP.NET的地位要比Windows Forms的地位来得重要。 

顺带一提,Prosise的著作一向是一线程序员的钟爱。在程序员面前,他的作品没有什么架子,你可以一边翻着他的书,一边写程序。 

.NET语言 

CLR.NET语言定义了一套通用的语义,而不同的.NET语言则以不同的语法表达了这一语义。在.NET平台中,语言已经退居次席。和大多数.NET程序员一样,我选择的.NET语言是C#

如果你安装了VS.NET 2002VS.NET 2003中文版,请到VS.NET的安装目录下搜索一个名为C# Language Specification.doc的文档。其作者是Scott Wiltamuth Anders Hejlsberg。区别在于,VS.NET 2002携带的是英文版,而VS.NET 2003携带的则是中文版。你也可以访问MSDN主页(文后给出了具体链接)。这儿除了有C# Language Specification外,还有C# Programmer's Reference这样的非常有用的参考手册。

此外,如果你是一名完全的C#初学者,不妨留心一下PetzoldProgramming in the Key of C#: A Primer for Aspiring Programmers》。这是Petzold专为C#初学者编写的一本小书。我相信这本书早晚有一天会出中文版。本着Petzold的一贯水准,它不应该让你失望。

结语 

微软起初为许多玩意儿贴上了.NET标签,尽管当时其中一些既未使用.NET框架,也不直接支持.NET框架。这也导致了巨大的混乱和混淆,同时也为.NET招致了更多的非议和批评。我们应该还有印象,在.NET战略发布之后的很长时间内,仍然有许多人迷惑不解:到底什么是.NET?或者说,.NET到底是什么?

今天,多少有点讽刺意味的是,就在一些产品真的支持.NET技术之际,它们反而丢掉了.NET标签。比方说,内置了.NET框架的“Windows .NET Server”在发布前夕被重命名为Windows Server 2003.NET企业服务器亦在陆续支持.NET框架、成为货真价实的“.NET企业服务器”的同时,而被撕掉.NET标签。而所谓的“Office .NET”终究只是一个谣传,但Office 2003的确提供了对.NET实实在在的支持。比方说,Word 2003 文档和模板以及 Excel 2003 工作簿都可以运行所引用的 .NET 程序集中的代码,而这些 .NET 程序集代码的安全性则是由.NET框架而非WordExcel进行管理的。

但是,有两样东西的.NET标签贴得一直非常牢靠:一是.NET框架,二是Visual Studio .NET。我们可以感觉到,目前.NET标签基本上局限于使用在“技术范围”之内,这与其说是微软的妥协退步,倒不如说是一种理智的进步。“高科技”企业向来有拿技术名词糊弄外行的恶习,这也是市场营销人员的惯用伎俩(比如新模范马路上的手机广告可以是“内置Java技术……”)。也许微软意识到了诚实一点于人于己都有好处。

.NET标签的缩水并不意味着微软.NET技术战略发生了根本性的动摇。尽管像.NET My Services这样的技术没有像微软预想的那样成功,但.NET平台的核心技术却一直稳步向前发展,并业已取得无可辩驳的成功。回头看看一两年前包围着.NET的许多诬蔑和毁谤,如今早已不攻自破,事实再次证明微软将续写不败的神话。无论如何,和您一样,我希望.NET和它的竞争对手能够共同拥有美好的明天。

参考文献 

1.David Chappell, One more time: What exactly is .NET?, http://www.adtmag.com/article.asp?id=8003.
2.
Microsoft .NET homepage, http://www.microsoft.com/china/net/.
3.C# Language Specification
& C# Programmer's Reference, http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cscon/html/vcoriCStartPage.asp.

荣耀
2004
3
南京师范大学

www.royaloo.com

 

这篇关于.NET程序设计之四书五经(转载)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/715779

相关文章

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

.NET利用C#字节流动态操作Excel文件

《.NET利用C#字节流动态操作Excel文件》在.NET开发中,通过字节流动态操作Excel文件提供了一种高效且灵活的方式处理数据,本文将演示如何在.NET平台使用C#通过字节流创建,读取,编辑及保... 目录用C#创建并保存Excel工作簿为字节流用C#通过字节流直接读取Excel文件数据用C#通过字节

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

C语言程序设计(数据类型、运算符与表达式)

一、C的数据类型 C语言提供的数据类型: 二、常量和变量 2.1常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。 常量区分为不同的类型: 程序中用#define(预处理器指令)命令行定义变量将代表常量,用一个标识符代表一个常量,称为符合常量。 2.2变量 变量代表内存中具有特定属性的一个存储单元,用来存放数据,在程序运行期间,这些值是可以 改变的。 变

C语言程序设计(选择结构程序设计)

一、关系运算符和关系表达式 1.1关系运算符及其优先次序 ①<(小于) ②<=(小于或等于) ③>(大于) ④>=(大于或等于 ) ⑤==(等于) ⑥!=(不等于) 说明: 前4个优先级相同,后2个优先级相同,关系运算符的优先级低于算术运算符,关系运算符的优先级高于赋值运算符 1.2关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值表达式,字符

提问的智慧(转载)

此文让我受益良多。值得一读,大家如果也觉得不错就一起来推~~~   ---------------------------------      在黑客世界里,当提出一个技术问题时,你能得到怎样的回答?这取决于挖出答案的难度,同样取决于你提问的方法。本指南旨在帮助你提高发问技巧,以获取你最想要的答案。       首先你必须明白,黑客们只偏爱艰巨的任务,或者能激发他们

智能工厂程序设计 之1 智能工厂都本俱的方面(Facet,Aspect和Respect)即智能依赖的基底Substrate 之1

Q1、昨天分别给出了三个智能工厂的 “面face”(里面inter-face,外面outer-face和表面surface) 以及每个“面face” 各自使用的“方”(StringProcessor,CaseFilter和ModeAdapter)  。今天我们将继续说说三个智能工厂的“方面” 。在展开之前先看一下三个单词:面向facing,取向oriented,朝向toword。理解这三个词 和