|
读过这本书吗?
最近在读
读过
想读
还不熟悉
|
图书城书列:
加入到博客或社交网站:
|
|
我来评论这本书:
内容提要:
对于开发人员来说,把C#语言及其相关环境.NET Framework描述为多年来最重要的新技术一点都不夸张。.NET提供了一种新环境。在这个环境中,可以开发出运行在Windows上的几乎所有应用程序,而C#是专门用于.NET的新编程语言。例如,使用C#可以编写出动态Web页面、XML Web服务、分布式应用程序的组件、数据库访问组件或传统的Windows桌面应用程序。本书介绍.NET Framework 1.1,即.NET Framework的第2版,但本书的大部分内容也适用于.NET Framework 1.0。如果使用1.0版本进行编码,就需要作一些修改,本书将在需要修改的地方指出要修改的内容。
不要被.NET这个名称所愚弄,这个名称仅强调Microsoft相信分布式应用程序是未来的趋势,即处理过程分布在客户机和服务器上,但C#不仅仅是编写Internet或与网络相关的应用程序的一种语言,它还提供了一种编写Windows平台上几乎任何类型的软件或组件的方式。另外,C#和.NET都对编写程序的方式进行了革新,更易于实现在Windows上编程。 这是一个相当重要的声明。毕竟,我们都知道计算机技术的发展速度非常快,每年Microsoft都会推出新软件、新的编程工具或Windows的新版本,并宣称这些对开发人员都非常有用,.NET和C#也不例外。 .NET和C#的重要性 为了理解.NET的重要性,考虑一下近10年来出现的许多Windows技术的本质会有一定的帮助。尽管所有的Windows操作系统在表面上看来完全不同,但从Windows 3.1(1992年)到Windows Server 2003,在内核上都有相同的Windows API。在我们转而使用Windows的新版本时,API中增加了非常多的新功能,但这是一个演化和扩展API的过程,并非是替换它。 开发Windows软件所使用的许多技术和架构也是这样。例如,COM (Component Object Model,组件对象模型)是作为OLE (Object Linking and Embedding,对象链接和嵌入)开发出来的,那时,它在很大程度上仅是把不同类型的办公文档链接在一起,所以利用它可以把一个小Excel电子表格放在Word文档中。之后,它逐步演化为COM、DCOM (Distributed COM,分布式组件对象模型)和最终的COM+。COM+是一种复杂的技术,它是几乎所有组件通信方式的基础,实现了事务处理、消息传输服务和对象池。 Microsoft选择这条道路的原因非常明显:它关注向后的兼容性。在过去的这些年中,第三方厂商编写了相当多的Windows软件,如果Microsoft每次都引入一项不遵循现有代码基础的新技术,Windows就不会获得今天的成功。 向后兼容性是Windows技术的极其重要的特性,也是Windows平台的一个长处,但它有一个很大的缺点。每次某项技术进行演化,增加了新功能后,都会比它以前更复杂。很明显,对此必须进行改进。Microsoft不可能一直扩展这些开发工具和语言,使它们越来越复杂,既要保证能跟上最新硬件的发展步伐,又要与20世纪90年代初开始流行的Windows产品向后兼容。如果要得到一种简单而专业化的语言、环境和开发工具,让开发人员轻松地编写优秀的软件,就需要一种新的开端。 这就是C#和.NET的作用。粗略地说,.NET是一种在Windows上编程的新架构―― 一种新API。C#是一种新语言,它可以利用.NET Framework及其开发环境中的所有新特性,以及在最近20年来出现的面向对象的编程方法。 在继续介绍前,必须先说明,向后兼容性并没有在这个演化进程中失去。现有的程序仍可以使用,.NET也兼容现有的软件。软件组件在Windows上的通信,现在几乎都是使用COM实现的。因此,.NET能够提供现有COM组件的包装器(wrapper),以便.NET组件与之通信。 Microsoft已经扩展了C++,提供了一种新语言J#,还对VB进行了很多改进,把它转变成为功能更强大的VB.NET,并允许把用这些语言编写的代码用于.NET环境。但这些语言都因有多年演化的痕迹,所以不能完全用现在的技术来编写。 本书将介绍C#编程技术,同时提供.NET体系结构工作原理的必要背景知识。我们不仅会介绍C#语言的基础,还会给出使用各种相关技术的应用程序示例,包括数据库访问、动态的Web页面、先进的图形技术和目录访问等。惟一的要求是用户至少熟悉一门在Windows上使用的高级语言,例如C++、VB或J++。 .NET的优点 前面阐述了.NET的优点,但并没有说它会使开发人员的工作更易于完成。在本节中,我们将简要讨论.NET的改进特性。 ● 面向对象的编程:.NET Framework和C#从一开始就完全是基于面向对象的。 ● 优秀的设计:一个基类库,它是以一种非常直观的方式设计出来的。 ● 语言的无关性:在.NET中,VB.NET、C#、J#和Managed C++等语言都可以编译为通用的中间语言(Intermediate Language)。这说明,语言可以用以前没有的方式交互操作。 ● 对动态Web页面的支持:ASP具有很大的灵活性,但效率不是很高,这是因为它使用了解释性的脚本语言,且缺乏面向对象的设计,从而导致ASP代码比较凌乱。.NET使用一种新技术ASP.NET,它为Web页面提供了一种集成式的支持。使用ASP.NET,可以编译页面中的代码,这些代码还可以使用.NET高级语言来编写,例如C#、J#或VB.NET。 ● 高效的数据访问:一组.NET组件,总称为ADO.NET,提供了对关系数据库和各种数据源的高效访问。这些组件也可以访问文件系统和目录。.NET内置了XML支持,可以处理从非Windows平台导入或导出的数据。 ● 代码共享:.NET引入了程序集的概念,替代了传统的DLL,可以完美无暇地修补代码在应用程序之间的共享方式。程序集有解决版本冲突的正式系统,程序集的不同版本可以同时存在。 ● 增强的安全性:每个程序集还可以包含内置的安全信息,这些信息可以准确地指出谁或哪种类型的用户或进程可以调用什么类的哪些方法。这样就可以非常准确地控制程序集的使用方式。 ● 对安装没有任何影响:有两种类型的程序集,分别是共享程序集和私有程序集。共享程序集是可用于所有软件的公共库,私有程序集只用于某个软件。私有程序集功能完备,所以安装过程非常简单,没有注册表项,只需把相应的文件放在文件系统的相应文件夹中即可。 ● Web服务的支持:.NET集成了对开发Web服务的完全支持,用户可以开发出任何类型的应用程序。 ● Visual Studio .NET 2003:.NET附带了一个开发环境Visual Studio .NET,它可以很好地利用C++、C#、J#、VB.NET和ASP.NET进行代码编写。Visual Studio .NET集成了Visual Studio 6环境中各种语言专用的所有最佳功能。 ● C#:是使用.NET的一种面向对象的新语言。 第1章将详细讨论.NET体系结构的优点。 .NET Framework 1.1中的新增特性 .NET Framework的第1版(1.0版)在2002年发布,赢得了许多人的喝彩。.NET Framework的最新版本1.1在2003年发布,它被认为是对该架构进行了较小的改进。即使是较小的改进,新版本仍有一些非常明显的变化和新增的内容,值得我们探讨一番。 在对.NET Framework 1.1版本进行的所有改进中,Microsoft试图确保对使用1.0版本编写的代码改动尽可能少。即使做了这样的努力,但在新版本中仍有一些显著的变化。许多代码的改进是为了增强安全性。读者可以在Microsoft的GotDotNet Web站点(http://www.gotdotnet.com)上查看完整的改进列表。 下面详细论述.NET Framework 1.1版本中的一些改进和Visual Studio .NET 2003(.NET Framework 1.1的开发环境)的新增特性。 可移动性 在使用.NET Framework 1.0和Visual Studio .NET 2002时,要创建可移动应用程序,就必须下载Microsoft Mobile Internet Toolkit(MMIT)。而现在,有了.NET Framework 1.1和Visual Studio .NET 2003,就可以直接创建可移动应用程序,不需要下载其他工具包了。 在使用Visual Studio .NET 2003创建新项目时,这是显而易见的。例如,在查看可以创建的C#项目类型列表时,会看到ASP.NET Mobile Web Application和Smart Device Application。ASP.NET Mobile Web Application项目类型可以用于建立基于Web的可移动应用程序。Smart Device Application项目类型可以创建用于Pocket PC或其他Windows CE设备的应用程序。为Windows CE设备建立的第三方客户应用程序利用的是Compact Framework,这是.NET Framework的删节版本。 打开任何一种可移动项目类型,系统就会在Visual Studio .NET工具箱中列出一组可用的可移动服务器控件,然后用户就可以使用这些控件创建应用程序。 新的数据提供程序 在新的架构中,另一个大的变化是ADO.NET。ADO.NET是访问和处理数据的.NET方式,现在它有两个新的数据提供程序,其中一个用于ODBC,另一个用于Oracle。 在使用.NET Framework 1.0时,就可以使用ODBC数据提供程序,但它需要单独下载。另外,一旦下载,这个数据提供程序的命名空间就是Microsoft.Data.Odbc。 而在.NET Framework 1.1中,ODBC数据提供程序是内置的,不需要单独下载。而且可以通过System.Data.Odbc命名空间来使用ODBC数据源,访问ODBC数据连接、数据适配器和数据读取器对象。 另一个新的数据提供程序用于处理Oracle数据库。该数据库在企业中的应用非常广泛,缺乏Oracle数据提供程序常常是.NET进入企业的一大障碍。为了使用这个新的数据提供程序,需要在项目中引用System.Data.OracleClient命名空间。 新的语言:Visual J# 在安装Visual Studio .NET 2003时,注意该版本提供了一种新语言Visual J#,可用于建立.NET应用程序。在此版本之前,Visual Studio .NET 2002需要单独安装该语言。 Visual J#简称为J#(读作J-Sharp),是Visual J++语言的新版本。它非常类似于Java语言,Java开发人员通过它将很容易迁移到.NET中。J#开发人员将使用.NET类库来代替Java运行 时库。 在.NET平台上,J#开发人员将拥有与C#开发人员相同的能力。使用J#,也可以建立.NET类、Windows窗体应用程序、ASP.NET Web应用程序和XML Web服务。另外,还可以像使用其他.NET兼容语言那样,以跨语言的方式使用J#。例如,可以创建一个J#类,并在C#应用程序中使用这个J#类,或者可以创建一个C#类,并在J#应用程序中使用这个C#类。 与其他语言一样,在.NET Framework中也有用于J#的内置编译器。所有的编译器都位于C:\Windows\Microsoft .NET\Framework\v1.1.xxxx目录下。C#的编译器是csc.exe,VB.NET的编译器是vbc.exe,J#的编译器是vjc.exe。 并发执行 并发执行side-by-side execution是指在同一个服务器上运行应用程序的多个版本,其中不同的应用程序版本使用不同的运行库版本。Microsoft一直都向开发人员承诺提供这个功能,但该功能总是很难可视化,因为只能使用Framework的一个版本。在发布了Framework的第2版.NET Framework 1.1后,就可以看到Microsoft提供的这个功能了。现在,可以创建.NET应用程序面向.NET Framework 1.1的新版本,同时还可以让面向.NET Framework 1.0的旧应用程序像以前那样继续运行。 支持Internet Protocol 6(IPv6) 最近,许多Internet使用IP 4运行,IP4也称为IPv4。它提供了IP地址,例如255.255.255. 255。.NET Framework 1.1现在支持IPv6,IPv6是在1995年创建的,解决了IPv4所面临的许多问题。如果人们一直采用IPv4,将很快用尽可用的IP地址。 .NET Framework 1.1通过System.Net命名空间支持IPv6,ASP.NET和XML Web服务也支持IPv6。 Visual Studio .NET 2003的改进 在升级.NET Framework时,还对Visual Studio .NET本身进行了升级。注意,在开始页面上有一些新图形,该页面上对象的组织方式也有所不同。另外,新IDE最重大的变化是,一旦安装,就不是简单地把Visual Studio .NET 2002升级为Visual Studio .NET 2003,而是安装了一个全新的IDE版本。如果机器上已经安装了Visual Studio .NET 2002,就会得到两个完全独立的VS.NET IDE。这样,如果要创建和使用面向.NET Framework 1.0的应用程序,就使用VS.NET 2002;如果要创建和使用面向.NET Framework 1.1的应用程序,就使用VS.NET 2003。 还应注意,在打开用VS.NET 2002创建的项目时,系统会询问是否要把项目升级为VS.NET 2003项目,如果回答“是”,就会把项目升级为面向.NET Framework 1.1的应用程序。注意,这是一个不可逆的过程。 除了这些较大的变化之外,在VS.NET 2003的IDE中,Intellisense的智能化程度更高,代码自动完成功能更强。本书将使用IDE的这个版本。 C#的优点 C#在某种程度上可以看作是.NET面向Windows环境的一种编程语言。在过去的十几年里,Microsoft给Windows和 Windows API添加了许多功能,VB和C++也经历了许多变化。虽然VB和C++最终已成为非常强大的语言,但这两种语言也存在问题,因为它们保留了原来的一些内容。 对于Visual Basic来说,它的主要优点是很容易理解,许多编程工作都很容易完成,基本上隐藏了Windows API和COM组件结构的内涵。其缺点是Visual Basic从来没有实现真正意义上的面向对象,所以大型应用程序很难分解和维护。另外,因为VB的语法继承于BASIC的早期版本(BASIC主要是为了让初学者更容易理解,而不是为了编写大型商业应用程序),所以不能真正成为结构化或面向对象的编程语言。 另一方面,C++在ANSI C++语言定义中有其自己的根。它与ANSI不完全兼容,因为Microsoft是在ANSI定义标准化之前编写C++编译器的,但已经相当接近了。遗憾的是,这导致了两个问题。其一,ANSI C++是在十几年前的技术条件下开发的,因此不支持现在的概念(例如Unicode字符串和生成XML文档),某些古老的语法结构是为以前的编译器设计的(例如成员函数的声明和定义是分开的)。其二,Microsoft同时还试图把C++演变为一种用于在Windows上执行高性能任务的语言―― 在语言中避免添加大量Microsoft专用的关键字和各种库。其结果是在Windows中,该语言成为了一种非常杂乱的语言。让一个C++开发人员说说字符串有多少个定义方式就可以说明这一点:char*、LPTSTR、string、CString (MFC 版本)、CString (WTL 版本)、wchar_t*和 OLECHAR*等。 现在进入.NET时代―― 一种全新的环境,它对这两种语言都进行了新的扩展。Microsoft给C++添加了许多Microsoft专用的关键字,并把VB演变为VB.NET,保留了一些基本的VB语法,但在设计上完全不同,从实际应用的角度来看,VB.NET是一种新语言。 在这里,Microsoft决定给开发人员另一个选择―― 专门用于.NET、具有新起点的语言, 即Visual C# .NET。Microsoft在正式场合把C#描述为一种简单、现代、面向对象、类型非常安全、派生于C和C++的编程语言。大多数独立的评论员对其说法是“派生于C、 C++ 和Java”。这种描述在技术上是非常准确的,但没有涉及到该语言的真正优点。从语法上看,C#非常类似于C++和Java,许多关键字都是相同的,C#也使用类似于C++和Java的块结构,并用括号({})来标记代码块,用分号分隔各行语句。对C#代码的第一印象是它非常类似于C++或Java代码。但在这些表面上的类似性后面,C#学习起来要比C++容易得多,但比Java难一些。其设计与现代开发工具的适应性要比其他语言更高,它同时具有Visual Basic的易用性、高性能以及C++的低级内存访问性。C#包括以下一些特性: ● 完全支持类和面向对象编程,包括接口和继承、虚函数和运算符重载的处理。 ● 定义完整、一致的基本类型集。 ● 对自动生成XML文档说明的内置支持。 ● 自动清理动态分配的内存。 ● 可以用用户定义的特性来标记类或方法。这可以…… 作者简介:
李敏波,2001年获清华大学工学博士,随后在新加坡国立大学从事协同产品设计与门户的博士后研究。2002年至2004年在金蝶软件(中国)公司中央研究院担任高级研究员。现任复旦大学软件学院零售与分销管理系统研究中心的副主任,从事教学与科研工作。
编辑推荐:
C#与.NET为在Windows平台上编程提供了一个全新的开发环境,在此环境中几乎可以开发出所有基于Windows和Web的应用程序。本书全面介绍了C#的编程知识,同时提供了理解.NET体系结构工作原理所必需的背景知识,相对前两个版本新增了应用程序的部署和本地化等内容。
本书是开发人员必备的C#参考资料,是C#和.NET用户的良师益友。通过对本书的学习,您将对C#语言的各个方面有深入细致的理解,能够在.NET环境中应用C#,构建Windows窗体,用ADO.NET访问数据库,用ASP.NET编写组件,利用.NET为COM和COM+提供支持等。 本书主要内容: ?使用面向对象的C#语言编程; ?使用C#处理XML的方法; ?集成COM、COM+和Active Directory; ?编写Windows应用程序和Windows服务; ?使用.NET Remoting技术开发分布式应用程序; ?理解.NET程序集; ?用C#创建图形; ?控制.NET安全性的方式; 本书读者对象: 本书适用于已具有C++、Visual Basic或J++编程经验的开发人员,也适合那些希望深入学习的C#初级程序员。 目录:
第1章 .NET体系结构
第2章 C#基础 第3章 对象和类型 第4章 继承 第5章 运算符和类型强制转换 第6章 委托和事件 第7章 内存管理和指针 第8章 字符串和正则表达式 第9章 集合 第10章 反射 第11章 错误和异常 第12章 Visual Studio.NET 第13章 程序集 第14章 .NET的安全性 第15章 线程 第16章 使用.NET Remoting的分布式应用程序 第17章 本地化 第18章 部署 第19章 Windows窗体 第20章 使用GDI+绘图 第21章 .NET数据访问 第22章 查看.NET数据 第23章 处理XML 第24章 使用Active Directory 第25章 ASP.NET页面 第26章 Web服务 第27章 用户控件和定制控件 第28章 COM的互操作性 第29章 Enterprise Services 第30章 文件和注册表操作 第31章 访问Internet 第32章 Windows服务 译者序:
C#是专用于.NET平台的一种新型编程语言,不仅功能强大,而且用法灵活,利用它几乎可以开发出运行在Windows上的所有桌面应用程序和网络应用程序。2002年底,为了工作需要,我曾购买《C#入门经典》和《C#高级编程(第2版)》这两本作为参考书,并通读了这两本书。虽然我已经从事软件研发工作多年,曾阅读过很多程序设计类的图书,但是仍然觉得这两本书无论是从内容结构的安排,还是从实用性上考虑都值得推荐。其中《C#入门经典》适合那些不具备太多编程知识和经验的新手学习(此书对我来说有点浅),而《C#高级编程(第2版)》则适合我们这些有一定的编程经验但对C#了解不多的“老手”学习。在阅读《C#高级编程(第2版)》的..
前言:
对于开发人员来说,把C#语言及其相关环境.NET Framework描述为多年来最重要的新技术一点都不夸张。.NET提供了一种新环境。在这个环境中,可以开发出运行在Windows上的几乎所有应用程序,而C#是专门用于.NET的新编程语言。例如,使用C#可以编写出动态Web页面、XML Web服务、分布式应用程序的组件、数据库访问组件或传统的Windows桌面应用程序。本书介绍.NET Framework 1.1,即.NET Framework的第2版,但本书的大部分内容也适用于.NET Framework 1.0。如果使用1.0版本进行编码,就需要作一些修改,本书将在需要修改的地方指出要修改的内容。
不要被.NET这个名称所愚弄,这个名称仅强调Microsoft相信分布式应..
|