计算机科学与技术专业C#NET开发者指南大学毕业论文外文文献翻译及原文Word下载.docx
《计算机科学与技术专业C#NET开发者指南大学毕业论文外文文献翻译及原文Word下载.docx》由会员分享,可在线阅读,更多相关《计算机科学与技术专业C#NET开发者指南大学毕业论文外文文献翻译及原文Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
![计算机科学与技术专业C#NET开发者指南大学毕业论文外文文献翻译及原文Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/10/9b0c0b42-aa0c-4211-ae70-048c77829c01/9b0c0b42-aa0c-4211-ae70-048c77829c011.gif)
C#.NET开发者指南>
前言1
第一章微软.NET平台的介绍3
1.1简介3
1.1.1.NET平台简介3
1.1.2微软的.NET和WINDOWS的基因4
1.1.3微软.NET体系结构4
1.1.4.NET平台的特点4
1.1.5多国语言的发展5
1.1.6平台和处理器独立性6
1.1.7自动内存管理7
1.1.8支持的版本7
1.1.9支持的开放标准8
1.1.10配置简单8
1.1.11分布式体系结构9
1.1.12与非托管代码的互用9
原文:
sGuide>
Foreword11
Chapter1IntroductionoftheMicrosoft.NETPlatform13
1.1Introduction13
1.1.1Introductionofthe.NETPlatform13
1.1.2Microsoft.NETandWindowsDNA15
1.1.3Microsoft.NETArchitectureHierarchy15
1.1.4Featuresofthe.NETPlatform16
1.1.5MultilanguageDevelopment17
1.1.6PlatformandProcessorIndependence18
1.1.7AutomaticMemoryManagement19
1.1.8VersioningSupport20
1.1.9SupportforOpenStandards21
1.1.10EasyDeployment22
1.1.11DistributedArchitecture23
1.1.12InteroperabilitywithUnmanagedCode23
前言
在电脑软件的历史上,很少有一种技术能够得到开发者和业界如此强烈的正面响应。
全球已经有数百万的开发者下载了Microsoft的.NET软件开发工具包,已经出现了很多有关.NET平台及其相关技术和语言的教材、网站和新闻团体。
Microsoft在创建.NET上已经投入了数十亿美元进行了多年的研究。
.NET是一种全面的策略,它由操作系统、数据库服务器、应用程序服务器和.NET运行时库组成,还包括运行于.NET平台之上的操纵语言。
很多人把.NET平台看作先前所说的WindowsDNA的实际实现,也有人把它看作是改进先前技术和语言的结果。
然而,这些仅仅说明了.NET是对Microsoft以前技术的重大改进。
其实.NET平台是从头开始设计的,包括许多内在目标,如安全性、可升级性、可靠性、灵活性和互操作性。
为了使.NET平台适合于企业和开发者,所有这些目标从一开始就被考虑到了。
NET平台呈现了Microsoft思想的重大转变。
建立.NET平台时,Microsoft表现出对开放标准极大的支持,如XML、SOAP和UDDI,而不是建立自己的标准和技术。
而且.NET平台的核心部分(CommonLanguageInfrastructure,CLI)和C#规范都已提交给ECMA,并通过了标准化。
C#来源于C和C++,是一种简单的、现代的、面向对象和类型安全的编程语言,由Microsoft的AndersHejlsberg专门为.NET平台开发的语言,继承了许多语言的特征,如C、C++和Java。
C#是为了综合VisualBasic的简单和C++作为面向对象语言的功能强大的优点而写的,对于开发者来说,C#使企业应用程序的创建、调试和配置变得很容易。
有人预言,C#将成为在.NET平台上开发应用程序最受欢迎的语言。
作为VisualStudioIDE的下一个版本,VisualStudio.NET也是.NET战略的关键组成部分。
VisualStudio.NETIDE也已经被整合并装入了大量的新功能。
位图编辑器、调试器、Web窗体设计器、Windows窗体设计器、Web服务设计器、XML编辑器、HTML编辑器、Web浏览器、服务器资源管理器和多语言支持,所有这些都被集成在IDE中。
C#.NETWeb开发指导的重点不是教你C#语言的核心内容,而是提供代码实例来帮助你使用.NET框架类库的功能。
基础类库的.NET框架集合覆盖了大量API。
尽管不可能在一本书中包含所有的特征,但是本书中包含了其中的关键思想、类库和.NET框架的API,希望本书能够帮助你容易地使用C#创建新的应用程序。
既然有这么多特征要学习和掌握,那就不要再等待了,咱们现在就开始吧!
第一章微软.NET平台的介绍
1.1简介
Microsoft在创建.NET上已经投入了数十亿美元并进行了多年的研究,并且将极大可能考虑把它作为新兴的标准。
许多微软的伙伴也宣布支持NET工具和部件——你可以浏览
.NET平台能提供强大的新服务,新的独立于处理器的二进制格式,新的管理语言,现有的语言扩展的管理语言,这样的例子不胜枚举。
没有良好的操作背景是不可能有效地使用这些新工具的来运行你的应用程序。
在这一章中,我们来看一看.NET平台的各个组成部分。
我们不仅介绍他们的技术和概念,而且还要用专业术语去解释它们。
这将使你对.NET平台的内部工作有一个深入的了解,并在接下来的章节中能有更多的收获。
1.1.1.NET平台简介
.NET平台的所处的背景是:
世界正在从个人电脑连接到一个服务器(比如互联网)中改变到一个地方的所有职能设备、电脑和服务协同工作中能为用户提供更丰富的体验。
.NET平台是微软为软件开发人员给这种改变提供的解答。
.NET平台到底有几个组成部分,每个人都会给你不同的答案。
比如微软的商务对话和结构化查询语言以及.NET中的我的服务,它们中的第一个可见组件.NET通行证通常被视为.NET平台的有机组成部分。
然而,对很多人来说,.NET框架是当.NET被提到时我们想象中的样子。
它包括VS.NET,.NET公共语言库(CLR)和.NET基类库(BCL)。
其他组件可能会要求特定的应用,但它们不是所有.NET应用程序的必要组成部分。
下面来看.NET的整体结构,它由这几个个主要部分组成:
■.NET框架一个全新的应用开发平台。
■几个.NET产品多重基于.NET框架的应用,包括新版本的并由可扩展标记语言(XML)在.NET平台上的集成交互和结构化查询语言(SQL)服务器。
■几种.NET服务它是由微软为在.NET框架开发应用程序使用的。
微软的Hailstorm实际上是一个囊括了微软品牌的最重要网站某些服务的计划。
■公共语言库托管执行环境,处理内存分配,捕获错误,并与作业系统服务进行交互。
■基类库对组件的编程和应用程序接口(API)的广泛的收集。
■两个最高发展目标一个用于Web应用程序
(ASP.NET),另外一个用于普通的Windows应用程序(Windows
表格)
。
由.NET框架提供的好处包括:
缩短开发周期(减少代码重用,减少编程意外,多种编程语言的支持),更简单的配置,由于整体式安全性而导致更少的数据类型相关的错误,由于垃圾回收器的存在而引起内存泄漏的减少,而且,具有一般的更具可扩展性、可靠性的应用程序。
1.1.2微软的.NET和WINDOWS的基因
.NET周围中的一些营销宣言听起来很熟悉:
.NET平台被称为WINDOWS基因的下一代。
不过,虽然视窗系统的基因确实提供了健壮的,可扩展的,分布式系统的基石,但是对一些人来说其本身并没有什么实质性。
WindowsDNA的是一种技术规范,重点是对微软服务器产品的基础建设,利用多种技术和语言(ASP,HTML,JavaScript,MTS,COM等等),其中有相当多是与开发无关的。
这些服务器和语言包括不同的API和系统,使互操作性达到最好。
.NET与其有很大的不同:
它不只是一个规范。
在它的好的产品中,它包括语言所需要的工具和发展,使n层应用这些类型更容易,整齐地作为一个单一的连贯和全面的API封装。
1.1.3微软.NET体系结构
从本质上讲,根据公共语言规范,.NET语言编译的种类和微软中间语言(MSIL,或者只是IL)的输出是不同的。
应用程序开发的主要类型是Web窗体,Web服务和Windows窗体应用程序。
这些应用程序使用XML和简单对象访问协议(SOAP)进行通信,从而使得他们能在基类库中继承并能在公共语言中运行。
VisualStudio.NET不仅是为了发展需要.NETFramework应用程序,而且它还提供了可扩展的架构,从而使之成为发展.NET软件的理想选择。
1.1.4.NET平台的特点
.NET平台的核心是在公共语言库,基类库,和公共语言规范中发现的。
.NET的基类库用相同的方法揭露了公共语言库的功能,这样,Windows
API允许你利用的Windows作业系统的特点的共同语言运行库的功能。
而且,它也提供了许多更高级别的功能,促进代码重用。
这种架构提供了许多好处,至少一个很大的数目一致的API。
通过书面形式向公共语言运行库和使用.NET基础类库,所有的应用服务是通过一个共同的面向对象编程模型提供。
今天,一些操作系统的功能是通过调用DLL的访问使用基于C的API和其他设施,通过访问COM对象,从而使开发人员的工作更加简捷,使一切顺利。
某些功能只提供给开发人员在低层次的语言工作,从而迫使他们设计决策。
这种新的编程模型大大简化了那些需要编写Windows
DNA应用程序的工作或为了完成应用程序的几乎所有Win32和COM项目的工作难度。
开发人员不再需要有一个对GUIDS、调用、释放、HRESULTS等等有着深入了解的Windows或COM的大师。
.NET也不是隐藏在开发这些之中,在新的网络平台上,这些概念根本不存在的。
另一个为.NET开发人员带来极大的好处是其错误异常处理模型。
为Windows开发平台软件始终意味着你会出现错误的地方,特别是在错误的方式会返回值。
有些函数会返回错误的Win32代码,一些返回HRESULTS,还有的则比较例外,所有要求程序员编写错误处理代码的不同类型。
.NET中,所有的错误报告都会通过这个模型,从而大大简化了书写,阅读和维护代码。
由于公共语言规范和通用类型系统,.NET也可以在跨模块和跨语言的界限工作
1.1.5多国语言的发展
由于许多语言对.NET公共语言运行库有规范,现在更容易语言应用部分适应你的操作。
以前,不同的编程语言互操作是允许的,如COM或CORBA,这样做是通过一个接口定义语言(IDL)的来实现的。
.NET平台的语言,通过MSIL对彼此的使用加以整合。
虽然它包含指示类似的汇编代码和移入和移出寄存器变量,它也包含了管理对象和调用它们的方法,操纵阵列,提高和捕获异常的说明。
Microsoft公共语言规范描述了其他开发工具,作者必须为他们的编译器输出IL代码,使它们能很好的融入.NET语言。
微软目前针对.NET公共语言运行库的几个编译器提供了IL代码:
C++的托管扩展的C#,JAVAScript和VisualBasic中。
此外,微软和其他几家公司正在生产用于语言的编译器。
这些编译器也针对.NET公共语言运行库。
目前支持为COBOL,Eiffel,Fortran语言,Perl,Python和Scheme。
供应商还公布了其他不同的许多语言。
这是一个当前供应商的列表:
为什么你应该关心的IL详情?
因为它为.NET管理着跨语言功能。
由于IL整个翻译的开销的复杂性,无接口定义语言需要启用跨语言的元数据来处理。
举例来说,一个对IL的定义,同样的对象可以不管是不是能捕获.NET语言。
您的组件在C#可以书面提出一个可以由Fortran采用资讯科技应用捕获的异常。
而且关于不同的调用约定或数据类型,不必再担心无缝互操作性。
跨语言继承的另一个特点是可以使用IL。
现在您可以创建源代码,而且无需再为新类中的基本成分编写其他的语言。
例如,您可以创建一个C++的类,从VisualBasic中实现了一个派生类。
.NET可以实现这一点,因为它定义和类型系统都提供了一个共同的.NET语言。
对应用开发的规范下,WindowsDNA的巨大挑战之一是各种语言开发的应用程序时的调试。
由于统一的VisualStudio.NET开发环境和IL都使用了.NET语言作为输出,跨语言调试就不会排斥汇编语言。
.NET公共语言运行库调试应用程序,完全支持跨语言的界限。
运行库还提供了内置的堆叠设施,使其更容易找到漏洞和错误。
1.1.6平台和处理器独立性
中间语言是与CPU无关的,它远高于大多数机器语言水平。
.NET应用程序可以在任何平台上支持写、新建以及托管,这样就可以支持.NET公共语言运行库。
由于.NET通用类型系统定义不论基本数据类型大小都可以使用.NET应用程序,而且这些应用程序可以在公共语言的环境中运行,所以任何硬件或操作系统都支持.NET平台。
虽然在写这篇文章的时候,.NET应用程序只能运行在Windows平台。
但2001年6月27日,微软宣布,它已经与Corel达成协议,共同开发一个C#编译器和.NET
框架基础结构组件,它们将共享源代码并执行FreeBSD版本的UNIX。
这个测试版本目前预计将在2002年上半年的某个时候发布。
几个星期后,也就是在二零零一年七月十日微软给出了积极的信号。
一个深蓝设计的.NET,这是一个为Linux用户界面设计的流行的Gnome计划的开源版本。
你可以在www.go-找到该项目,称为MONO。
该小组正在开发一个C#语言的编译器,以及.NET公共语言运行库,而且关于基类库的工作也开始了。
在2001年年底该项目的发布了它的第一个可用单代码计划。
1.1.7自动内存管理
提到内存泄漏问题,可能一个开发环境中并没有提供自动内存来管理开发,从而导致调试无数个小时。
对那些想在这个工作中花费一些时间来降低棘手的代码的人来说,绕过资源管理应该是一种不错的方法。
从VisualBasic开发人员或有COM背景与未来技术的相关的人员的角度来说,这项技术在只有一个对象而且没有其他物体对其引用的时候会恢复内存,而且基本上它不再需要使用内存。
虽然这在理论上听起来完善,但在实践中却有几个问题。
最常见的是循环引用问题,即一个对象到另一个对象,它本身包含一个回到第一个对象的引用。
当内存管理的对象不使用它们看起来时候的摸样时,这些对象将始终大于零。
因此,除非它们是隐式解构,不然他们的内存可能永远不会被发现。
C或C++程序员的习惯是自己销毁对象,因为他们能管理其自有的内存。
他们不信任任何人能利用管理资源并将之照顾好。
然而,在.NET环境下,微软正在努力使软件开发更加容易。
在本章后面的内容,我们涉及.NET如何进行已经经过严格的引用计数或手动内存管理方法改进的垃圾收集工作。
1.1.8支持的版本
谁如果不理解“DLLHELL”,那就是他尚未开发Windows(或至少支持)软件很长时间。
对于外行,当客户使用您的应用程序相同的DLL之一安装了一个软件包时,你会发现自己就身在DLLHELL之中。
但是,所有开发人员总是把每件事情都向后100%兼容,就像您的应用程序使用此DLL的版本1.0,新的1.1软件版本能兼容1.0版本的,对不对?
当新的DLL使您的应用程序表现出一些奇怪的问题或者完全停止工作的时候,你要经过大量调查找出有问题的DLL是什么,并用新的版本替换您的软件版本。
但是,如果现在他们的新软件不工作了,那么就是DLLHELL发挥作用了。
当应用程序加载库时,许多开发人员仅需要采取安装每个DLL的应用程序需要的目录的方法。
这虽然违背了共享库的目的,但它是一个解决问题的方法。
COM以前是这样的:
你以前从来没有改变一个方法接口,你只是添加新的方法。
不幸的是,软件开发人员经常是玩弄主义者,留下一些“漏洞”的功能玩弄一些人。
问题是,一旦在使用时产生了不良的客户端软件,那么改变一个组件的接口会被以前的所谓添加新的方法的行为影响。
不过它也有解决方法,由于COM对象是被加载在注册表中的信息,所以只需替代该DLL或应用程序目录,那么这个问题便不会发生。
现在,.NET架构将应用程序组件分开,这样应用程序就能总是加载与它建立和测试相关的元件。
如果应用程序安装运行后,应用程序应该始终运行。
这是通过程序集和.NET的封装组件实现的。
虽然目前的DLL和COM的对象包含了许多不同的版本信息,但是操作系统不会真正使用任何这些信息。
程序集包含了.NET公共语言运行时使用的版本信息,以确保应用程序在加载它时建立使用组件。
我们将在后面的章节涵盖了更多关于配件和版本如何工作的内容。
1.1.9支持的开放标准
在今天的世界上,不是每个你可能工作的设备都是运行微软操作系统或使用英特尔处理器。
为了实现开放的标准,.NET的建构是基于XML和SOAP的,它将使你可以通过Internet激活应用程序,而不论其背后依托标准的信息基础是什么设施。
SOAP将为不同的系统提供容易的交换信息的方法,而且更好的是,SOAP允许您调用远程系统的方法和返回结果。
因为SOAP是一个类似于HTTP的简单的基于文本的协议,它可以轻易地穿过防火墙,不像DCOM或CORBA。
由.NET平台提供的其他标准包括通用描述,发现和集成(UDDI)以及它们的XML接口和Web服务描述语言(WSDL),它描述了一个应用程序代码做目录。
通过许多基于开放标准.NET的基础并向ECMA(一个国际标准组织)提交对C#和.NET公共语言基础结构的标准草案,微软希望籍由软件的未来版本看到其超出自己的领域。
1.1.10配置简单
今天,基于Windows的应用程序的开发和安装达到了令人难以置信的困难。
由于这一点,大多数公司对于用于开发他们的安装程序的第三方工具很不满意。
通常需要在几个目录中安装大量的文件,设置各种注册表,安装所需的COM组件和建立快捷方式等等。
完全卸载的应用程序几乎是不可能的,即使他们提供卸载功能,大多数仍会遗留很多字节以及碎片。
随着Windows2000的发布,微软引入了一个新的安装引擎帮助解决这些问题,但它仍然有可能是一个不正常的微软安装程序包。
即使专门设计一种第三方软件,使得更容易开发一些工具,但要正确地在检索中安装一个应用仍然是一项艰巨的任务。
.NET设计队伍面对这个问题同样感到了的困惑,但.NET队伍计划将这些问题解决了。
.NET组件中不引用注册表,由于元数据和引用的使用,组件描述是自发的。
事实上,安装大部分.NET应用程序仅仅需要将他们的文件复制到一个目录,卸载应用程序将只是删除这些文件。
1.1.11分布式体系结构
今天的分布式应用程序与未来的那些仍然有很大的不同。
微软坚定地认为:
他们十分看好分布式Web服务概念的公司。
例如,现在,当用户与门户网站互动时,在他们看来是与一个远程服务器打交道。
我们大多数人都知道,通常情况并非如此,至少在那些大规模的网站上不是这样的。
其实是各种服务器和应用程序在后台运行,当访问几个远程站点的信息时,服务器结合自己的用户信息数据库,合并成一个集成产品,用户则浏览传递到浏览器上的信息。
由于这些类型的应用很有用,他们的开发和维护都非常的复杂。
每条信息提供商已经开发不同的接口来访问他们的服务器上的数据和流程。
这是非常低效的重复建设,并在大多数情况相当乏味,所以在许多活动已经形成了三个标准以简化流程:
XML,SOAP和UDDI。
正如我们前面讨论的,这些都是用来在.NET并都在竞争。
但是,少为人知的是,这些都是IBM和Sun的倡议。
1.1.12与非托管代码的互用
正如你可能已经猜到了,与非托管代码是不被.NET公共语言运行库管理的代码。
但是,此代码仍然是由CLR运行时,它只是没有得到诸如通用类型系统和自动内存管理优势。
您最终可能会在不同的情况使用不同的代码
■调用DLL函数现在有许多函数都绑定了DLL。
并不是每一个公司都要急于推出的.NET产品组件的版本,所以如果你需要接触他们,你会调用与非托管代码。
■使用COM组件这应该是你调用DLL函数的相同原因。
■从COM组件中调用.NET服务虽然这听起来有点古怪,但它是可能的。
一个COM客户端可以调用.NET组件,就好像这是一个COM服务器一样。
这里有一点关于COM互用问题的更多信息。
微软并没有想迫使公司放弃现有的COM组件,特别是因为现在微软自己的产品很多是基于COM的.COM组件中的消息,这些消息是在.NET运行的时候,它的互操作层通过非法侵占来处理所有管理运行和COM组件系统之间翻译时传递的,就像与非托管代码一样。
在这其中的另一面,有公司出于对.COM技术的既得利益考虑,可能想使用.NET平台的一些零零碎碎的功能之后,然后才会采取坚持.COM客户端可以方便地通过COM
非法侵占层与.NET组件联系。
Foreword
Seldominthehistoryofcomputersoftwarehasanytechnologyreceivedsuchapositiveresponsefromdevelopersandtheindustry,evenwhilethetechnologyisstillinitsnascentbetastage.The.NETBeta2SDKfromMicrosofthasalreadybeendownloadedbymillionsofdevelopersallovertheworld.Dozensofpublishedbooks,Websitesandnewsgroupsdevotedtothe.NETplatform,andrelevanttechnicalknow-how.
Microsofthasinvestedbillionsofdollarsandyearsofresearchinthecreationof.NET..NETisacomprehensivestrategy,consistingofoperatingsystems,databaseservers,applicationservers,andthe.NETRuntime,aswellasmanagedlanguagesthat