本科毕业设计论文-用C#实现XML编辑器.doc_第1页
本科毕业设计论文-用C#实现XML编辑器.doc_第2页
本科毕业设计论文-用C#实现XML编辑器.doc_第3页
本科毕业设计论文-用C#实现XML编辑器.doc_第4页
本科毕业设计论文-用C#实现XML编辑器.doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

引言引言微软公司近期推出了C#程序设计语言,引起业界的普遍关注。为什么有了VB,VC+,业界又公认了Java,还要推出一个新的语言?C#能代替VB,VC+,成为微软统一的语言吗?我们将以多大的关注去学习C#?这对于业界第一线软件开发者,的确是个问题。我们已被各种描述语言(Jscript,VBScript),置标语言(XML, eXML,HTML,SGML),模型语言(UML),体系结构描述语言(ADL)弄得不堪重负,偏偏最直接表述软件的编程语言又出了一个C#,殊知,编程语言是专业程序员“找饭碗”的工具。众所周知,经常换语言滋味是不好受。这是因为无论什么语言既是表达工具也是思维工具,习惯了某种语言的表达也就习惯了这种语言的思维范型。一旦习惯,改起来就不舒服。几年前,从C到C+,不少人编程序依然是DFD图,结构图,过程模块,最后凑出对象,以C+表示。直到相当一段时间之后,才理解到OO的开发好处。一遇到问题,首先想到的是什么是对象,她和对象如何交互,直接用C+表达对象。一个编程语言不断带来新的思维范形式好学的,但是学不到软件开发新技术。正如ALGOL,C程序员学习FORTRAN和Pascal一样。仅仅学会了一种新的表示法,从C+到C#却不是这样,C#带来新的编程范型,即从面向对象编程到Web服务编程。这中间有这个业界巨大的转变:从分布式客户/服务器计算转向“软件就是服务”的网络计算。后者把资源共享,软件重用又提成到一个新的阶段,租赁,下载在Internet上进行。在ASP(应用服务提供者)提供的各式各样服务基础上,业务系统的应用开发者几乎不用编制,维护(升级,纠错)软件就可以快速交付十分复杂的系统。而ASP用C#开发的Web服务也使大量的使用其它ASP提供的服务(当然也包括以Java,甚至C+提供的服务构件)。微软公司提供的Microsoft.NET就是为了完善新一代网络计算环境,而C#是其中的核心工具之一,简单说是表达Web服务软件最方便的工具。然而微软在开发推行C#时,又是非常稳健的。原因是网络计算还在纵深发展,目前成功的应用,如电子商务,企业门户,信息检索不过是网络计算最早期的成果,C#还在不断试探中完善。本文用C#实现XML编辑器,XML是1998年2月在WWW(W3C:World Wide Web Consortium)的不懈推动之下持续向前发展。起初,许多开发者还嘲笑XML,认为它只不过是编写脚本的新方法而已。但那些常用数据库进行管理和开发的人员很快就意识到XML的潜力之所在;XML会成为不需要任何专门的方法,就能为团体之间提供数据服务的一种新的途径。开发员开始把XML的一些片断融入到他们的桌面应用程序中,有的用来存储配置数据,有的作为输出文件。随着时间的推移,他们开始把XML放到Internet上,使数据库之间开始通过XML进行通信。许多企业发现,得益于XML,他们对外部数据的数据操作变得更加轻松了。不过开发人员并不是唯一发现XML潜力的群体:还有微软和那些让XML成为.NET Framework基础的人士。. NET的目标是:在桌面应用程序与在线应用程序之间建立联系;使其对象之间的通信变得更为方便。- 45 -第一章 XML简介第一章XML简介第一节 XML产生的背景可扩展标记语言Extensive Markup Language-简称XML,它同HTML(即超文本标记语言-Hyper Text Markup Language)一样,都是来自Standard Generalized Markup Language,即标准通用标记语言,简称SGML。SGML是一种用标记来描述文档资料的通用语言,它包含了一系列的文档类型定义(简称DTD),DTD中定义了标记的含义,因而SGML的语法是可以扩展的。SGML十分庞大,既不容易学,用不容易使用,在计算机上实现也十分困难。鉴于这些因素,Web的发明者-欧洲核子物理研究中心的研究人员根据当时(1989年)计算机技术的能力,提出了HTML。HTML只使用SGML中很小一部分标记。为了便于在计算机上实现,HTML规定的标记是固定的,既HTML语法是不扩展的,它不需要包含DTD。HTML这种固定的语法是它易学易用,在计算机上开发的浏览器也十分容易。正是由于HTML的简单性,使Web技术从计算机界走向全社会,Web的发展如日中天。近年来,随着的Web应用越来越广泛和深入,人们觉得HTML不够用了,HTML过去简单得愈发严重阻碍了用它来表现复杂的形式。尽管HTML推出了一个又一个新版本,已经有了脚本.表格等表达功能,但始终满足不了不断增长的需求。另一方面,这几年来计算机技术的发展也十分迅速,已经可以实现比当初发明创造HTML时复杂得多的Web浏览器,所以开发一种新的Web页面语言是十分必要的,也是可能的。有人建议直接使用SGML作为Web语言,这固然能解决HTML遇到的困难。但是SGML太庞大了,用户学.用不方便不说,要全面实现SGML的浏览器就十分困难,于是自然会想到仅使用SGML的子集,使新的语言既方便实用又实现容易。正是在这种形势下,标准化组织W3C建议使用一种精简的SGML版本-XML应运而生了。它继承了SGML重要的三个特性:可扩展性,结构化,有效性,成为表示结构化信息的一种标准文本格式5。 第二节XML的基本内容XML文档:XML标识语言写成的XML原代码文件,实际上是ASCII的纯文本文件,可以用Notepad创建和修改。XML文档的后缀名为.XML,用IE5.0以上浏览器可以直接打开并显示成树状结构,看到的就是XML文档.一般来说,XML文档包含三个部分:a一个XML文档声明 : b 一个关于文档类型的定义 : 如不需要可以省略c. 用XML标识创建的内容. 举例: Carson 31.95 05/01/2001 MSPress WA 文档对象模型 (DOM) 类是 XML 文档的内存中表示形式下图显示将此 XML 数据读入 DOM 结构中时内存的构造。 图1.1 XML文档的树形结构下面是XML中的有关概念:(1)Element(元素) 元素是组成XML文档的最小单位,由标识来定义,包括其中的内容,如Carson,而且要由自己创建。元素可以包含元素,也可以包含通常只用于文档中的文本的那些词和句子。在XML中,这些文本叫做文档的字符数据。标记语言方面的专业人员把他称作为文档的树型结构。包含所有元素的元素叫根元素。根元素所直接包含的那些元素叫做子元素。它们也可以包含它们自己的子元素。如果元素包含子元素,我们叫他熟知。如果元素只包含字符数据,我们叫它树叶(2)Attribute(属性)元素还可以具有属性,属性是一种将特征或特性赋给文档元素的一种方式。例如:31.95其中format就是属性的名称,dollar是属性值。属性值用单引号或双引号包围。(3)Declaration(声明) 所有XML文档的第一行都有一个L声明表示是一个XML文档,并指出遵循哪个版本的规范:说明是1.0版本的XML文档。(4)Entity(实体)文档被定义为一个字符序列。一个处理器自始至终处理这个序列。提供了一种机制,可以使文本非线性的组织,也就是以多片的形式组织,语法分析器可以重新变成线性结构。“文本片”这个概念叫做实体。一个实体可以小到一个字符,大到可以大到一本书的所有自负。每个实体都有名字。在文档中,可以通过插入实体应用来引用实体。处理器将用实体替换相应的实体引用,这叫做文本替换。元素是描述文档的逻辑结构,而实体是描述组成文档的那些字节块的位置,我们把它称作文档的物理结构。(5)DTD(文件类型定义)。DTD是由元素类型,属性,符号和实体等一系列定义组成的一个集合。他明确规定在文档中哪些是合法的,以及在哪些地方是合法的。一个文档可以在他的文档类型中说明它符合哪种特定的DTD。(文档类型通常所写成,因为首字母缩写将和文档类型定义类型相同)。DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。DTD文件也是一个ASCII的文本文件,后缀名为.dtd。一些文档并没有相应的文档类型说明,但这并不是说它们就不符合相应的文档类型,而是说它们没有声明符合某种定义的文档类型定义(6)Shape completely but legality(形式完备而合法)在XML中,“在正确的地方使用正确的单词”叫做合法。它同文档类型密切相关,所谓一个文档和法是指在文档类型说明中他声称符合某种DTD,并且事实上也符合该DTD。那些没有文档类型说明的文档并不是真正的非法,他们没有违反他们的DTD,但也不能因为没有办法确定它们违反DTD而说明他们是违法的。在创建一个形式完备而不合法的文档之前,应该仔细考虑清楚。如果该文挡类型只有唯一的一个文档并且文档很小,那麽文档形式完备也许就够了。但如果它是信息系统(即是很小)的一部分或是一个大文挡,那就应该为他写一个DTD,并且应经常查看文档是否合法。1第三节 XML语法基础基本构成单元叫实体(entity),包含解析的或未解析的数据.解析的数据由字符构成,可以看成是标记,由XML处理函数处理,而未解析的字符数据被当成原始文本不被处理,例如Delfan,和就是标记,而Delfan是原始文本。标记用来描述文件的存储结构(实体)和逻辑结构(元素)。XML语法实际描述了用来定义XML文件的结构和布局的构造,也包含了约束关系,而XML需要XML处理函数来处理,所以必须遵守严格的语法。一个简单的例子: Delfan 某某 ab.c 一个XML文件只能有一个根,而且,XML是基于UNCODE编码的,标记都可以是汉字.还有,IE本身就是个XML的解析器,虽然不很完善。可以将以上代码写到一个文本文件中,例如文件名为test.xml,双击,IE就可以把这个XML文档解析成一棵树并按层次显示出来。8第四节 XML编辑器现今的XML编辑器有多种多样,例如XML Explorer(XML Edition) 2.6.7,XML Spy 5.0, XML Blueprint 2.2 , Bonodi XML Edition 2.0, XML DB Query简体中文版,Easy XML, XML Generate 1.0等等。Bonodi XML Editor 2.0 一个适用于Microsoft Windows 98/Me/NT4/2000/XP的多语言XML编辑器。你可以用不同的语言编辑XML文档,比如说英语、日语、汉语、韩语、西班牙语、法语、德语、俄语、希腊语、泰语、希伯莱语、阿拉伯语以及其它任何Windows所支持的语言Easy XMLXML编辑/检查工具 Easy XML,支持 QXML 查询语言的结点选择,文件可以以树状结构显示,XSLT 功能可以将 XML 转译成 HTML。XML Spy 5.0XML编辑器,提供三种XML文档视图:结构显示和编辑,原码视图和支持CSS,XSL的预览。XML Generate 1.0XML的结构与树控件结构非常相似,本软件能够通过树控件的操作来产生XML文件,产生的文件可以用来给其他程序使用。树控件操作可以添加,删除,修改,拖放,XML的读取及存储。XML Blueprint 2.2是一款专为Windows开发者而设计的XML编辑器,高效易用。其主要功能包括:浅显的文本编辑功能;能编辑任何DTD文件;XML图层整理;即时XML色彩;XML目录设定;无限制的undo/redo功能。 XML Explorer (XML Editor) 2.6.7XML Explorer是一个XML和schema编辑器、XML数据分析工具。它简单好用,可以展现多个窗口。你可从树形图、列表、表格、文字模式和跳出式编辑区等方式操作任何XML数据。它copy and paste的功能让使用者复制任何XML 文字到系统剪贴簿上,然后贴到任何XML Explorer窗口,它支持双向Xpath,所以只要点任何XML节点或属性,一个标准的Xpath就出来了。它两栏的文字展现方式方便比较和编辑。它的schema完全支持树形图、列表、集合观看模式、文字模式。有了它,你还能轻易把微软Excel、Access和任何ODBC数据转成XML格式。新版本增加了XML数据的图表与统计分析功能。本软件的目的是要做一个编辑XML文挡的编辑器。由于XML文挡是树形结构的,所以在本软件中XML文挡就用TreeView控件显式显示出来,TreeView也是树形结构的,但TreeView控件允许有多个根节点,需要对TreeView作一些限制,另外TreeView控件只是将XML文档的树形结构显示出来,但XML文档中各个节点的属性值和文本值不能在TreeView中显示出来,所以,要给TreeView中的每个节点赋一个指针,指针所指的地址中存储着XML文档中对应节点的文本值和属性值。这是实现XML编辑器的难点,通过addxmlnode和addtreenode函数可以完成打开文件,保存文件的功能。以下是XML编辑器的界面:图1.2 XML编辑器该软件通过编辑按钮或工具栏里的箭头可以添加,删除,插入,编辑结点;通过更改按钮可以输入选定结点的文本值,属性值,属性名称;通过更改完成按钮可以保存更改;通过文件按钮可以打开,保存,新建,另存,退出功能。还可以通过工具栏的最后一个按钮,察看把XML文件代码。第二章 Microsoft .Net中的C#第一节 .NET平台1 .NET的简介要介绍C#。就要先介绍一下C#所运行的平台.NET。我们正处于一个崭新的计算时代,一个互联网时代。Internet应用开发新技术层出不穷,其中微软的.NET是近来最热门的技术之一,因此也受到越来越多软件开发者和用户的关注。但. NET到底是什么?大家对.NET平台的看法和观点也不尽相同。有的说.NET是微软的下一代Visual Studio开发环境;有的说它是一个新的程序语言(C#);还有些人说它是以XML和SOAP为基础的信息交换与消息传递的机制。其实,这些说法都是整个.NET的一部分。.NET的发布是近十年来微软开发平台的一个战略转变。. Mixrosoft.NET是把Internet转换成一个分布式计算平台的技术。.NET蕴含的基本理念就是将注意力从单独的Web站点和与Internet相联的各种设备,转移到与各种计算机,设备,和服务协同工作的构架之上,从而提供涉及面更广,功能更全面的解决方案。.Net 的设计理念及在于在合作解决方案构架内,继承和协调Internet上的任意资源组。.NET平台为创建分布式Web应用,提供了所有的技术和工具。它在应用的各个层次上提供了一个语言中立的统一编程模型,同时对已有技术进行了无缝集成。.NET平台集成了所有在微软平台出现的表示技术。构件技术和数据技术。整个.NET平台将使Internet应用的开发如同桌面应用程序一样简单。.NET提供了新型的基于Web服务的应用开发模式。公司提供的产品和服务方式将可以令用户和供应商将这些产品和服务无缝的嵌入在其自身的业务进程和日常活动的电子构架中。.NET平台支持标准的Internet协议,包括HTTP,XML,SOAP(简单对象访问协议),同时对Web服务的大力支持将使它与非.Net平台交互变得简单。92 .NET的技术基础随着三层/多层企业信息系统结构的深度发展和下一代分布式计算模型Web西电科大经管院毕业论文服务的出现,企业应用中关于平台、框架、语言的竞争也愈演愈烈。2000年6月微软公司发布了.NET开发平台。.NET开发平台在开发者用以创造应用程序的工具和技术上做了根本的改变。.NET开发平台包括以下内容:(1).NET framework(架构),包括:Common Language Runtime(CLR)(通用语言运行环境),这是用于运行和加载应用程序的软件组织;新的类库,分级组织了开发者可以在他们的应用程序中用来显示图形用户界面、访问数据库和文件以及在Web上通信的代码集。(2).NET开发工具,包括:VisualStudio.NET Integrated Development Environment (IDE)(Visual Studio.NET集成开发环境),用来开发和测试应用程序;.NET编程语言(例如VB.NET和新的C#),用来创建运行在CLR下并使用类库的应用程序。(3)ASP.NET,一个取代以前的Active Server Pages (ASP)的特殊类库,用来创建动态的Web内容和Web服务器应用程序,这些都将采用诸如HTML、XML和SOAP(简单对象访问协议)等Internet协议和数据格式。图2.1 .NET开发框架的主要组成部分从上图我们可以简要的了解.NET开发框架的主要组成部分:首先是整个开发框架的基础,即通用语言运行环境以及它所提供的一组基础类库;在开发技术方面,.NET提供了全新的数据库访问技术ADO.NET,以及网络应用开发技术ASP.NET和Windows编程技术Winforms;在开发语言方面,.NET提供了Visual Basic、Visual C+、C#和Java script等多种语言支持;而Visual 则是全面支持.NET的开发工具,.NET平台在底层的执行引擎也引用了Java宿主的虚拟机概念,但.NET的通用语言运行环境CLR(common language runtime)比Java虚拟机(JVM)又多了新的概念。CLR在借鉴了JVM的自动垃圾收集、异常处理等机制的同时,又为.NET平台添加了多语言支持、组件自描述等新的特性。和Java源代码翻译成字节代码(ByteCode)类似,.NET将所有Visual Studio。NET中性语言翻译成一种称为Intermediary Language(IL)的通用语言而实现了.NET平台的跨语言承诺。执行时,中间语言被即时编译器(JIT)编译成特定平台的二进制代码,鉴于微软在”Wintel平台”上的代码优化能力,.NET代码的执行速度比Java有明显的优势。2这样我们就了解了微软开发.NET的目的、含义、特点、以及技术基础。第二节 XML Web Service何谓.NET?它是Microsoft面向XML Web服务的平台。但准确地说,什么是XML Web服务呢? 它是未来的计算。Microsoft .NET 扩展了通过任何设备随时随地操作数据和进行通讯的能力。. NET 使用分布式计算模型并基于开放标准(如 XML)将 PC 与其他智能设备连接在一起。. NET 就是 Microsoft 的 XML Web 服务平台。不论操作系统或编程语言有何差别,XML Web 服务能使应用程序在 Internet 上传输和共享数据。10前面讲道.Net是面向XML Web服务的平台,那XML Web服务又具体是什么呢?1 XML Web Service的定义XML Web Service是基于XML数据交换标准的Web服务,是通过标准的Web协议(HTTP)可编程访问的Web组件,或者说提供函数调用的Web站点。它的核心观念是将软件作为服务(Soft ware As A Service)即可以将软件作为Web服务并在Internet上进行发布,真正的使企业只面向核心的商务逻辑,企业可以使用标准的Web协议(XML,HTTP,SOPA)与远程应用通信。软件向服务转化是目前的业界重点,基于Internet的Web服务是实现这一转变的最佳选择。以XML Web Service方式提供现有应用程序,可以构建新的、更强大的应用程序,并利用XML Web Service作为构造块。例如,用户可以开发一个采购应用程序,以自动获取来自不同供应商的价格信息,从而使用户可以选择供应商,提交订单,然后跟踪货物的运输,直至收到货物。而供应商的应用程序除了在Web上提供服务外,还可以使用XML Web Service检查客户的信用、收取货款,并与货运公司办理货运手续。2 XML Web Service的优点其主要优点有:(1)采用W3C标准,真正的与平台无关。允许在不同平台上、以不同语言编写的各种程序以基于标准的方式相互通信。这虽然与CORBA和DCE有着相同的目标,但是SOPA比以前的方法要简单得多。(2)使用标准的协议XML,HTTP和TCP/IP。许多公司都已经建立了Web基础结构,同时它们的员工在维护方面也都具备相应的知识和经验。因此,引入XML Web Service与引入以前的技术相比,其成本要低得多。(3)现有的远程访问协议DCOM,CORBA,RMI不能很好用于互联网环境。(4)不受现有的代理和防火墙的限制。(5)可以利用HTTP验证模式,支持安全套接层(SSL)43 XML Web Services的基础结构若要在 Web 的多样性世界里取得成功,在涉及到操作系统、对象模型和编程语言的选择时,XML Web services 不能有任何倾向性。同样,若要使 XML Web services 像其他基于 Web 的技术一样被广泛采用,则它们必须是: 松耦合的:如果对两个系统的唯一要求是要理解前面提到的自我描述的基于文本的消息,那么这两个系统就被认为是松耦合的。另一方面,紧耦合系统要求大量自定义系统开销来进行通信,并要求系统之间有更多的了解。 常见的通信:大概不会有人会在现在或不远的将来生成一个无法连接到 Internet 的操作系统,因此,需要提供常见的通信信道。同样,能够将几乎所有系统或设备连接到 Internet 的能力将确保这样的系统和设备能够为连接到 Internet 的所有其他系统或设备所使用。 通用数据格式:通过用现有的开放式标准而不是专用的封闭通信方法,任何支持同样的开放式标准的系统都能够理解 XML Web services。在采用自我描述的基于文本的消息时,XML Web services 及其客户端无须知道每个基础系统的构成即可共享该消息,这使得自治系统和完全不同的系统之间能够进行通信。XML Web services 使用 XML 实现此功能。 XML Web services 采用一种基础结构,该基础结构提供下列内容:定位 XML Web services 的发现机制、定义如何使用这些服务的服务说明以及通信时使用的标准连网形式。下图显示了此基础结构的一个示例。图2.2 XML基础结构UDDI(Universal Description Discovery Integration)通用发现、说明和集成(UDDI)是Web服务的黄页。UDDI允许你查找提供的Web服务的公司。WSDL(XML Web service Description Language)描述Web service的语言规范,相当于访问Web Service的接口。WSDL(Web Service Description Language)表示Web服务说明语言。WSDL文件是一个XML文档,用于说明一组SOAP消息以及如何交换这些消息。换句话说,WSDL对于SOAP的作用就像IDL对于CORBSA或COM的作用。由于WSDL是XML文档,因此很容易进行阅读和编辑;但大多数情况下,它由软件生成和使用。SOAP(Simple Object Access Protocal)简单对象访问协议,用XML实现Web Service的标准协议,是XML Web Service的通信协议。6第三节 .NET 框架概述以上是对.Net在宏观方面的解释,下面就说一说.Net在微观方面既具体在计算机上是如何实现的,这一部分也就是Microsoft构建的面向开发人员的 Visual Studio .NET。Visual Studio .NET 提升了下列高产的编程语言:Microsoft Visual Basic,它包含了新的面向对象的编程功能;Microsoft Visual C+,它提升了 Windows 开发并可用于创建 .NET 应用程序;以及 C#,它给 C 和 C+ 开发人员带来了 RAD。现将.Net框架简述如下: .NET 框架是一种新的计算平台,它简化了在高度分布式 Internet 环境中的应用程序开发。. NET 框架旨在实现下列目标: 提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在 Internet 上分布,或者是在远程执行的。 提供一个将软件部署和版本控制冲突最小化的代码执行环境。 提供一个保证代码(包括由未知的或不完全受信任的第三方创建的代码)安全执行的代码执行环境。 提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。 使开发人员的经验在面对类型大不相同的应用程序(如基于 Windows 的应用程序和基于 Web 的应用程序)时保持一致。 按照工业标准生成所有通讯,以确保基于 .NET 框架的代码可与任何其他代码集成。 .NET 框架具有两个主要组件:公共语言运行库和 .NET 框架类库。公共语言运行库是 .NET 框架的基础。您可以将运行库看作一个在执行时管理代码的代理,它提供核心服务(如内存管理、线程管理和远程处理),而且还强制实施严格的类型安全以及可确保安全性和可靠性的其他形式的代码准确性。事实上,代码管理的概念是运行库的基本原则。以运行库为目标的代码称为托管代码,而不以运行库为目标的代码称为非托管代码。. NET 框架的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,您可以使用它开发包含从传统的命令行或图形用户界面 (GUI) 应用程序到基于 ASP.NET 所提供的最新创新的应用程序(如 Web 窗体和 XML Web services)在内的应用程序。11.NET 框架可由非托管组件承载,这些组件将公共语言运行库加载到它们的进程中并启动托管代码的执行,从而创建一个可以同时利用托管和非托管功能的软件环境。. NET 框架不但提供若干个运行库宿主,而且还支持第三方运行库宿主的开发。Internet Explorer 是承载运行库(以 MIME 类型扩展的形式)的非托管应用程序的一个示例。使用 Internet Explorer 承载运行库使您能够在 HTML 文档中嵌入托管组件或 Windows 窗体控件。以这种方式承载运行库使得托管移动代码(类似于 Microsoft ActiveX 控件)成为可能,但是它具有只有托管代码才能提供的重大改进(如不完全受信任的执行和安全的独立文件存储)。7下面的章节将更加详细地描述 .NET 框架的主要组件和功能。图2.3显示公共语言运行库和类库与应用程序之间以及与整个系统之间的关系。该插图还显托管代码如何在更大的结构内运行。图2.3 .NET 框架环境 1 公共语言运行库的功能公共语言运行库管理内存、线程执行、代码执行、代码安全验证、编译以及其他系统服务。这些功能是在公共语言运行库上运行的托管代码所固有的。至于安全性,取决于包括托管组件的来源(如 Internet、企业网络或本地计算机)在内的一些因素,托管组件被赋予不同程度的信任。这意味着即使用在同一活动应用程序中,托管组件既可能能够执行文件访问操作、注册表访问操作或其他须小心使用的功能,也可能不能够执行这些功能。运行库强制实施代码访问安全。例如,用户可以相信嵌入在 Web 页中的可执行文件能够在屏幕上播放动画或唱歌,但不能访问他们的个人数据、文件系统或网络。这样,运行库的安全性功能就使通过 Internet 部署的合法软件能够具有特别丰富的功能。运行库还通过实现称为通用类型系统 (CTS) 的严格的类型验证和代码验证基础结构来加强代码可靠性。CTS 确保所有托管代码都是可以自我描述的。各种 Microsoft 和第三方语言编译器生成符合 CTS 的托管代码。这意味着托管代码可在严格实施类型保真和类型安全的同时使用其他托管类型和实例。此外,运行库的托管环境还消除了许多常见的软件问题。例如,运行库自动处理对象布局并管理对对象的引用,在不再使用它们时将它们释放。这种自动内存管理解决了两个最常见的应用程序错误:内存泄漏和无效内存引用。运行库还提高了开发人员的工作效率。例如,程序员可以用他们选择的开发语言编写应用程序,却仍能充分利用其他开发人员用其他语言编写的运行库、类库和组件。任何选择以运行库为目标的编译器供应商都可以这样做。以 .NET 框架为目标的语言编译器使得用该语言编写的现有代码可以使用 .NET 框架的功能,这大大减轻了现有应用程序的迁移过程的工作负担。尽管运行库是为未来的软件设计的,但是它也支持现在和以前的软件。托管和非托管代码之间的互操作性使开发人员能够继续使用所需的 COM 组件和DLL。运行库旨在增强性能。尽管公共语言运行库提供许多标准运行库服务,但是它从不解释托管代码。一种称为实时 (JIT) 编译的功能使所有托管代码能够以它在其上执行的系统的本机语言运行。同时,内存管理器排除了出现零碎内存的可能性,并增大了内存引用区域以进一步提高性能。最后,运行库可由高性能的服务器端应用程序(如 Microsoft SQL Server 和 Internet 信息服务 (IIS))承载。此基础结构使您在享受支持运行库宿主的行业最佳企业服务器的优越性能的同时,能够使用托管代码编写业务逻辑。152 .NET 框架类库.NET 框架类库是一个与公共语言运行库紧密集成的可重用的类型集合。该类库是面向对象的,并提供您自己的托管代码可从中导出功能的类型。这不但使 .NET 框架类型易于使用,而且还减少了学习 .NET 框架的新功能所需要的时间。此外,第三方组件可与 .NET 框架中的类无缝集成。例如,.NET 框架集合类实现一组可用于开发您自己的集合类的接口。您的集合类将与 .NET 框架中的类无缝地混合。正如您对面向对象的类库所希望的那样,.NET 框架类型使您能够完成一系列常见编程任务(包括诸如字符串管理、数据收集、数据库连接以及文件访问等任务)。除这些常见任务之外,类库还包括支持多种专用开发方案的类型。例如,可使用 .NET 框架开发下列类型的应用程序和服务: 控制台应用程序。 脚本应用程序或寄宿的应用程序。 Windows GUI 应用程序(Windows 窗体)。 ASP.NET 应用程序。 XML Web services。 Windows 服务。 例如,Windows 窗体类是一组综合性的可重用的类型,它们大大简化了 Windows GUI 的开发。如果要编写 ASP.NET Web 窗体应用程序,可使用 Web 窗体类。123 客户端应用程序开发客户端应用程序在基于 Windows 的编程中最接近于传统风格的应用程序。这些是在桌面上显示窗口或窗体从而使用户能够执行任务的应用程序类型。客户端应用程序包括诸如字处理器和电子表格等应用程序以及自定义的业务应用程序(如数据输入工具、报告工具等等)。客户端应用程序通常使用窗口、菜单、按钮和其他 GUI 元素,并且它们可能访问本地资源(如文件系统)和外围设备(如打印机)。另一种客户端应用程序是作为 Web 页通过 Internet 部署的传统 ActiveX 控件(现在被托管 Windows 窗体控件所替代)。此应用程序非常类似于其他客户端应用程序:它在本机执行,可以访问本地资源,并包含图形元素。过去,开发人员将 C/C+ 与 Microsoft 基础类 (MFC) 或应用程序快速开发 (RAD) 环境(如 Microsoft Visual Basic)一起使用来创建这样的应用程序。.NET 框架将这些现有产品的特点合并到了单个且一致的开发环境中,该环境大大简化了客户端应用程序的开发。包含在 .NET 框架中的Windows 窗体类旨在用于 GUI 开发。您可以轻松创建具有适应多变的商业需求所需的灵活性的命令窗口、按钮、菜单、工具栏和其他屏幕元素。例如,.NET 框架提供简单的属性以调整与窗体相关联的可视属性。某些情况下,基础操作系统不支持直接更改这些属性,而在这些情况下,.NET 框架将自动重新创建窗体。这是 .NET 框架集成开发人员接口从而使编码更简单更一致的许多方法之一。和 ActiveX 控件不同,Windows 窗体控件具有对用户计算机的不完全受信任的访问权限。这意味着二进制代码或在本机执行的代码可访问用户系统上的某些资源(如 GUI 元素和受限制的文件访问)而不能访问或危害其他资源。由于具有代码访问安全性,许多曾经需要安装在用户系统上的应用程序现在可以通过 Web 安全地部署。您的应用程序可以在像 Web 页那样部署时实现本地应用程序的功能。134 服务器应用程序开发在托管领域中,服务器端应用程序是通过运行库宿主实现的。非托管应用程序承载公共语言运行库,后者使您的自定义托管代码可以控制服务器的行为。此模型在获得主服务器的性能和可伸缩性的同时提供给您公共语言运行库和类库的所有功能。图2.4显示在不同服务器环境中运行托管代码的基本网络架构。在应用程序逻辑通过托管代码执行时,服务器(如 IIS 和 SQL Server)可执行标准操作。 图 2.4 服务器端托管代码ASP.NET 是使开发人员能够使用 .NET 框架开发基于 Web 的应用程序的宿主环境。但是,ASP.NET 不止是一个运行库宿主;它是使用托管代码开发 Web 站点和通过 Internet 分布的对象的完整结构。Web 窗体和 XML Web services 都将 IIS 和 ASP.NET 用作应用程序的发布机制,并且两者在 .NET 框架中都具有支持类集合。XML Web services 作为基于 Web 的技术的重要发展,是类似于常见 Web 站点的分布式服务器端应用程序组件。但是,与基于 Web 的应用程序不同,XML Web services 组件不具有 UI 并且不以浏览器(如 Internet Explorer 和Netscape Navigator)为目标。相反,XML Web services 包含旨在供其他应用程序(如传统的客户端应用程序、基于 Web 的应用程序或者甚至是其他 XML Web services)使用的可重用的软件组件。因此,XML Web services 技术正迅速地将应用程序开发和部署推向高度分布式 Internet 环境。如果您使用过 ASP 技术的早期版本,您马上就会注意到 ASP.NET 和 Web 窗体提供的改进。例如,您可以用支持 .NET 框架的任何语言开发 Web 窗体页。此外,您的代码不再需要与 HTTP 文本共享同一个文件(尽管如果您愿意,代码还可以继续这样做)。Web 窗体页用本机语言执行,这是因为与所有其他托管应用程序一样,它们充分利用运行库。与此相对照,非托管 ASP 页始终被写成脚本并解释。ASP.NET 页比非托管 ASP 页更快、更实用并且更易于开发,这是因为它们像所有托管应用程序一样与运行库进行交互。.NET 框架还提供类和工具的集合来帮助开发和使用 XML Web services 应用程序。XML Web services 是基于 SOAP(一种远程过程调用协议)、XML(一种可扩展的数据格式)和 WSDL(Web 服务描述语言)这些标准生成的。基于这些标准生成 .NET 框架的目的是为了提高与非 Microsoft 解决方案的互操作性。例如,.NET 框架 SDK 所包含的Web 服务描述语言工具可以查询在 Web 上发布的 XML Web services,分析它的 WSDL 描述,并产生 C# 或 Visual Basic 源代码,您的应用程序可以使用这些代码而成为 XML Web services 的客户端。这些源代码可以创建从类库中的类派生的类,这些类使用 SOAP 和 XML 分析处理所有基础通讯。虽然您可以使用类库来直接使用 XML Web services,Web 服务描述语言工具和包含在 SDK 中的其他工具可以使您更加方便地用 .NET 框架进行开发。如果您开发和发布自己的 XML Web services,.NET 框架为您提供了一组符合所有基础通讯标准(如 SOAP、WSDL 和 XML)的类。使用这些类使您能够将注意力集中在服务的逻辑上,而无需关注分布式软件开发所需要的通讯基础结构。最后,与托管环境中的 Web 窗体页相似,您的 XML Web services 将使用 IIS 的可伸缩通讯以本机语言的速度运行。14第四节 C#概述Microsoft.NET是一个完善的平台! 它提供了一套公共的运行库!并制定了一套公共语言规范!所有符合该规范的语言都可以无缝使用这套运行库! 这也就是说在Microsoft.NET平台下使用符合Microsoft.NET规范的都可以开发.NET 应用程序。微软Micarosoft.NET认证要求从C#(C Sharp)和Visual Basic.NET两种语言中任一种语言进行Microsoft.NET平台应用程序开发。由于C# 是微软公司针对Microsoft.NET平台而开发一种新型编程语言。它从C/C+ 演变而来,是一种简单.现代.类型安全和完全面向对象的语言。微软公司力荐开发者使用C#开发Microsoft.NET应用程序,下面我们就看看C#语言的有关知识。11 C#简介C#(读作“C sharp”)是一种简单、现代、面向对象且类型安全的编程语言。C和C+程序员能很快熟悉它。C#同时具备“应用程序快速开发”(RAD)语言的高效率和 C+ 固有的强大能力。Visual C# .NET是Microsoft的C#开发工具。它包括交互式开发环境、可视化设计器(用于生成 Windows 和 Web 应用程序)、编译器和调试器。Visual C#.NET 是Visual Studio .NET的产品套件的组成部分,该产品套件还包括 Visual Basic.NET、Visual C+.NET和JScript脚本语言。所有这些语言都支持对 Microsoft .NET Framework的访问,该框架包括一个公共执行引擎和一个丰富的类库。.NET Framework定义了一个“公共语言规范”(CLS),这是一种通用规范,它确保遵循该规范的语言与类库之间实现无缝的互操作性。对C#开发人员而言,这意味着即C#是一种新语言,但仍可恰如其他成熟工具(如 Visual Basic.NET 和Visual C.NET)一样,使用相同的、功能丰富的类库。C# 本身不包含类库。52 C#的主要特点(1)简单性C#首先是一个简单的语言。它加入了许多新的特征,但同时也为了提供简单性,也舍弃了一些语言的特性。C+的编程是很复杂的。举个简单的例子,对于“”和“:”以及“.”操作符,分别用于引用,名字空间和成员等操作。C#意识到了C+编程中这个烦人的地方。C#去掉了别的操作符,所有的操作符都用“.”表示。程序员只需理解名字嵌套的概念就可以了。C#程序中使用一种受管代码,所有对象的分配释放都是由公共语言运行时替你完成的,不安全操作,诸如直接内存存取是不允许的。这样就消除了悬挂指针,内存泄漏,循环引用等问题。值得一提的是,C#还可继续使用指针,可以通过unsafe代码。这也体现了C#的灵活性。Unsafe代码恰如其分的表示了它本身的含义。大多数情况下不建议使用unsafe代码,但在一些需要高性能程序或本地资源访问时可以使用。执行unsafe代码需要一个很高的安全许可,毕竟它是不安全的。C和C#编程中的另一个烦人的地方就是选择使用的数据类型。C#中,一个UNICODE 的字符不再是 wchar_t,它就代表一个字符。64位的整形是long型,而不是_int64,字符就是字符,不再需要对char, unsigned char, signed char, wchar_t作出区别。C和C+编程中还有一个令人困扰的地方,就是整形可以当作布尔值使用,而且程序员经常把=错写成=。C#对两者进行了区分。C#提供了一个单独的bool类型来表示bool值,可以为true也可以为false,但是不可以转换为其他类型。同样,整形和对象引用也不可以当作布尔值使用,只能和0或null比较。这意味着if判别式中的结果只能是bool类型。如果是其他类型的话,编译器将会做出错误报告。对C+另一个改进就是switch语句了。C+程序中如果switch语句中的case语句没有break结尾的话,将继续执行直到遇到break或跳出程序块。C#和VB类似,在每一个case语句中隐含加入了break语句,但如果确实像往下继续执行的话,可以使用goto语句。简单性的另一个体现是一步到位的编码。C#程序中所有元素的声明和实现合为一体在同一个源文件中,不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论