本科毕业设计-用c编一个xml的编辑器_第1页
本科毕业设计-用c编一个xml的编辑器_第2页
本科毕业设计-用c编一个xml的编辑器_第3页
本科毕业设计-用c编一个xml的编辑器_第4页
本科毕业设计-用c编一个xml的编辑器_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、第一章xml简介第一节 xml历史:20世纪60年代,ibm创建gml(generalized markup language,通用标记语言),后经演 变,发展成sgml(standard generalized markup language,标准通用标记语言),成为第一个 标准化的信息结构化技术,被用在ibm内部,1986年成为iso标准。功能强大,但缺点是 需要一大堆昂贵的软件来运行,所以在internet发展的初期,不能成为表示超文本的最佳选择。 于是后来html对sgml进行了极大的简化,从而成为现在internet的标准。随着对网络需 求进一步增大,人们开始扩充html的功能,慢慢

2、发展成现在这么庞大混乱的局面。于是 w3c(world wide web consortium,万维网联盟)组织了一个sgml专家组,主要r标是创建一 种新的标记技术,既要具备sgml的核心技术,还要具备html的简单性。1998年2月, w3c发布了 xml 1.0规范,即可扩展的标记语w(extensible markup language)是sgml简化 的子集,继承了 sgml重要的三个特性:可扩展性,结构化,有效性,成为表示结构化信息 的一种标准文本格式。第二节 xml语法基础:基木构成单元叫实体(entity),包含解析的或未解析的数据.解析的数据由字符构成,可以 看成是标记,由x

3、ml处理函数处理,而未解析的字符数据被当成原始文本不被处理,例如 <name>delfan</name>, <name>和v/name>就是标记,而delfan是原始文本。标记用来描述 文件的存储结构(实体)和逻辑结构(元素)oxml语法实际描述了用來定义xml文件的结构和 布局的构造,也包含了约束关系,而xml需要xml处理函数来处理,所以必须遵守严格的 语法。一个简单的例子:< ?xml version二t .0” encoding=,gb2312,' ?>v我的电话木v记录v姓名delfan</姓名v电子邮件>pr

4、ogramer21 </电子邮件</记录v记录v姓名某某v/姓名<电了邮件>ab.c</电了邮件</记录v/我的电话本一个xml文件只能有一个根,而且,xml是基于uncode编码的,标记都可以是汉字.还 有,ie本身就是个xml的解析器,虽然不很完善。可以将以上代码写到一个文本文件中, 例如文件名为test.xml,双击,ie就可以把这个xml文档解析成一棵树并按层次显示出来:第三节xml的术语xml文档:xml标识语言写成的xml原代码文件,实际上是ascii的纯文本文件,可 以用notepad创建和修改。xml文档的后缀名为.xml,用ie5.0以上浏

5、览器可以直接打开并 显示成树状结构,看到的就是xml文档一般来说,xml文档包含三个部分:1. 一个 xml 文档声明:<?xml version=n1.0"?>2. 一个关于文档类型的定义:v!doctype data system ”data.dtd”>如不需要可以省略3. 用xml标识创建的内容.举例:v?xml version二”1.0" encoding二"gb2312" ?>v清单v入库v纸张 规格=”a4”单位二”本">1000</纸张v经手人 > 张三</经手人>v/入库v出

6、库v纸张规格=nb5u单位二”本”>200</纸张v经手人张三</经手人v出库v/清单其中第一行v?xml version二”1.0” encoding=ngb2312h ?>就是一个xml文档的声明,并指生使用 gb2312,以下就是内容主体部分。:xml文档中有关的术语:l. element(元素)元素是组成xml文档的最小单位,由标识来定义,包括其中的内容,如经手人张三v/ 经手人,而且要由自己创建2tag(标识)标识是用来定义元素的。在xml中,标识必须成对出现,将数据包围在中间。标识的 名称和元素的名称是一样的。例如: 经手人张三/经手人,其中v经手人 就是标

7、识。3. attribute(属性)例如纸张规格=”b5“单位二”木”中”规格”和”单位”就是属性,属性是对标识进一步的描 述和说明,一个标识可以有多个属性,每个属性都有它自己的名字和数值,是标识的一部分, 也是自己定义的,但尽量不要用屈性,而是使用子元素,例如上而元素可以改成v纸张v规格b5v/规格v单位本v/单位200v纸张,这么做的原因是属性不易扩充。4. declaration(声明)所有xml文档的第一行都有一个l声明表示是一个xml文档,并指出遵循哪个版本的 规范:?xml version二t.0”?说明是1.0版木的xml文档5. dtd(文件类型定义)dtd是用来定义xml文档

8、中元素,属性以及元素之间关系的。通过dtd文件可以检测 xml文档的结构是否正确,作用:用来规范xml文档,元素和标签使用是否正确。dtd文档 包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号 规则。dtd文件也是一个ascii的文木文件,后缀名为.dtdo实际上是xml文件的抽象出 来的模板。但建立xml文档并不一定需要dtd文件。6well-formed xml(良好格式的 xml)遵守xml语法规则,并遵守xml规范的文档称z为”良好格式“。如果你所有的标识都 严格遵守xml规范,那么你的xml文档就不一淀需要dtd文件来定义它。良好格式的文 档必须以一个

9、xml声明开始,必须说明文档遵守的xml版木,目前是1.0,文档必须有一个根 元素,而且只能有一个,就是紧接着声明后面建立的第一个元素,其它元素都是这个根元素的 子元素丄文档的内容书写时必须遵守xml语法。第四节本软件中的xml木软件的目的是要做一个编辑xml文挡的编辑器。由于xml文挡是树形结构的,所以在 本软件中xml文挡就用tree view控件显式显示出来,treeview也是树形结构的,但treeview 控件允许有多个根节点,需要对treeview作一些限制,另外treeview控件只是将xml文档的 树形结构显示出来,但xml文档屮各个节点的属性值和文本值不能在treeview中

10、显示出来, 所以,要给treeview中的每个节点赋一个指针,指针所指的地址中存储着xml文档中对应节 点的文木值和属性值。以上是本软件的制作思想,要实现这种做法有两个难点:1、要用treeview显示xml文档 的结构,就要能读取xml文档的结构,再在treeview中显示出来。2、存储文件时,能读取 treeview的结构,把它存储成xml文件。这里对本软件作了一个简要的介绍,在论文的结束部分将做进一步的介绍。第二章 microsoft .net 中的 c#第一节.net简介要介绍c#。就要先介绍一下c#所运行的平台.neto .net是什么呢?先看一下微软木身对它是如何定义的。定义-ne

11、t的最简单方法(sanjay parthasarathy,平台战略副总裁,2000年12月21日)1分布式计算定义.net最好的方式就是想一想.net要做什么。microsoft认为向分布式计算的转变止在悄悄地进行着。在过去的儿年中,人们一直在铺设宽带电缆,使带宽的限制比过去 要小得多。根据摩尔定律效应,每18个月处理能力翻一番,价格降低一半,现在您首次可以选择进行真正的分布式计算:因为带宽已经不那么昂贵,您可以在任何最佳地点进行处理。当今已经有很多这种分布式应用程序的例子onapster就是一个使用胖客户端与计算机 群集中的目录服务进行对话的应用程序,它把网络上的所有参与的计算机都当作服务器

12、。另 一个分布式应用程序的例子是即时消息,胖客户端与计算机群集中一个伙伴列表对话,同时 述可以与网络中的其他胖客户端insumt messenger和 windows进行通信。因此,.net的口的正是要加速产生下一代分布式计算的过程。2三个杠杆我们认为可以拉动三个杠杆,以使下一代分布式计算尽可能快地发生。web服务:第一个杠杆是一切都要成为web服务。这适用于网络中的两种东西:软 件和资源(如存储)。聚合与集成:第二个需要拉动的杠杆是,一旦您拥有了这些web服务,就需要以一种非常简单和容易的方式将它们聚合与集成起来。简单而令人神往的用户体验:加速分布式计算的第三个杠杆是,需要有简单和令人神往

13、的消费者或者最终用户体验。因此我们认为这三个杠杆是加速向分布式计算转移的必要条件:一切都要成为web服务;聚合与集成web服务的能力;向最终用户提供简单而令人神往的体验的能力。.net的目的正是致力于拉动这些杠杆,以加速向分布式计算的转移,为了正确地拉动这些 杠杆,我们正在做五项工作。3分五部分构建net(1) 开发工具我们做的第一项工作是:通过.net框架和visual studio工具集,使编写web 服务尽可能简单方便。我们认为,用于编写web服务最好、最方便、最快并且最节约的方 法是使用.net框架和visual studio .net开发工具。(2) 服务器我们做的第二项工作是:真止

14、致力于web服务聚合与集成,这恰恰是我们的.net服务器家族的用武之地。我们认为,这些服务器是用于聚合与集成web服务最好、 最简单、最方便、最节约的方法。可以从两个方面看待这些服务器。大家熟悉和恵爱的一组 服务器是 windows 2000、sql server 2000> exchange 2000, xml 管线内置于其核心。而 xml,正如您所知,可能是最简单最大众化的集成web服务的方法。第二类服务器是我们 构建的专门服务器,如biztalk server,它们提供更高级别和更灵活的聚合与集成。以biztalk server2000为例,它内置了一种叫作xlang的语言,通过该

15、语言您可以定义过程流、事 务流和协定,也可以跨异类环境进行相当深层次的集成。这就是.net的第二部分:用以加 速web服务聚合与集成的服务器集。(3) 基础服务我们的第三项工作是:使最终消费者的体验简单而令人神往,为此我们正在构 建一个.net构造块服务集。几乎每个人,每当他遇到多个站点和多个应用程序时,都遇到 过这样的情况:需要登录这些站点和应用程序;我们正在创建一个诸如标识、通知和系统化 存储之类的小服务集,利用这些服务,消费者和用户从一个服务转向另一个服务,从一个应 用程序转到另一个应用程序,甚至从一种环境转向另一个环境都将非常容易。这种简单性在 分布式计算的世界里是绝对必要的。这些.n

16、et构造块服务对开发人员也有巨大的益处:它们与以前的windows 中的内存管理器和文件系统非常相似,当人们编写应用程序时,不需要每次都把内存管理器 和文件系统复制一遍。我们相信,开发人员将喜欢这些服务集成到计算机群集中,而且它们 得到保证,因此他们可以将精力集中投入到可以大大增值的事情上去。.net构造块服务 是.net的第三部分。(4) 设备第四部分致力于最终用户的体验,通过一套我们止在创建的客户端和设备软件, 将特别带给用户令人神往的体验。首先,net假设您拥有了一个设备家族,我们正是要创 建许多设备软件,以使人们可以使用相互取长补短的设备家族。我们将在设备软件中做一些 有趣的事情,以使

17、您尽可能体验到令人神往的效果。一方面,您将拥有我们为游戏机创建的 设备软件,另一方面,您也将拥有我们为pc创建的设备软件,同时我们还致力于创建用于 从电话到pda到其他如掌上pc之类的各种设备的软件。(5) 用户体验在拉动简单而令人神往的用户体验这一杠杆方面,我们的最后一项工作,是正 在实实在在地创建一些非常有针对性的用户体验,把web服务集合到一起,并口集成很多 功能,以提供非常有针对性的体验。我们正在创建面向消费者的msn而向小型企业的bcentral面向知识工作者的office面向开发人员的visualstudio.net。3net平台总而言之,这五部分就是.net的全部内容。您已经了解

18、了.net 框架和 visual studio .net 工具;服务器;.net构造块服务;设备软件;有针对性的用户体验。我把前四者组合到一起称之为.net平台,而最后一个则是建在该平台之上的应用。现在我们已经知道.net产生的目的是什么,也知道它应该具有的功能,那么可以对.net做 如下定义:何谓-net?它是microsoft面向xmlweb服务的平台。但准确地说,什么是xml web服务呢?它是未来的计算。microsoft -net扩展了通过任何设备随时随地操作数 据和进行通讯的能力。net使用分布式计算模型并基于开放标准(如xml)将pc与其 他智能设备连接在一起。.net就是mic

19、rosoft的xml web服务平台。不论操作系统或 编程语言有何差别,xml web服务能使应用程序在internet上传输和共享数据。第二节什么是xml web服务?前面讲道.net是面向xml web服务的平台,那xml web服务又具体是什么呢? 那下面将详细阐述什么是xml web服务:要点 xml web服务使应用程序能够共享数据。可以跨平台和跨操作系统,不分编程语言地对xml web服务进行调用。 .net是microsoft的针对xml web服务的平台。1 xml革命尽管简单得令人难以置信,xml确实正在彻底改变我们创建和使用软件的方式。web彻底改变了用户与应用程序的交互方

20、式。通过提供一种能使数据更易适配或更易转换的 通用数据格式,xml正在彻底改变应用程序间的交互方式一或者更广义地说,计算机间的交互方式。包括soap和uddi在内的基于xml的标准,构成了应用程序间通信的开 放式方法,此方法叫做xml web服务。2 xml web服务:一种通用语言xml web服务使应用程序能够通过internet进行通信,不管操作系统或编程语言 是什么。它们可以在任何平台上实现并且可以由诸如w3c的公共标准组织定义。有了 xml web服务,应用程序不仅可以共享数据,还可以调用其他应用程序的功能,而不考虑其他应 用程序是如何生成的。通过xml共享数据在保证应用程序相互独立

21、的同时,还使它们能够 建立松链接而形成一个合作组来完成某个特定的任务。3 web站点与xml web服务web站点致力于为用户提供信息:它们是服务器与用户交互的通信工具。另一方面, xml web服务为应用程序间的交互提供了一个直接的手段。本机上托管的应用程序和远程 计算机上的应用程序可以使用xml和soap消息通过internet进行通信。4 ml web服务如何连接应用程序以下是一个简单实例:假如您有一个库存系统。如果您没有把它与其他任何系统连接 起来,它就不会有很大价值。您可以跟踪库存,但这是一项繁重的工作,并且一个系统可以 单独完成的工作是有限的。您所出售的每件商品的记录不仅要输入库存

22、系统,述要分别输入 计帐系统和客户帐户记录。然后您必须记得下次订货的时候从您的供应商那里预订更多的此 类商品。因为从系统中获得的赢利接近系统的管理成本,所以成本/收益比率就很没有吸引力 了。但是,如果您通过xml把您的库存系统和您的计帐系统连接起来,就会变得更有 趣。现在,无论何时您购买或出售了什么,对您的库存和资金周转的影响会在一个步骤中跟 踪。如果更进一步,把您的仓库管理系统、客户订货系统、供应商订货系统和您的发货公司 也用xml连接起来,突然间您的库存管理系统就变得价值不匪:您可以端到端地管理您的 业务,对每个交易只做一次操作,而不是对交易涉及的每个系统都做一次操作。工作量大大 减少,出

23、错机会也会大大减少。xml web服务使这些连接变得简单易行。xml web可使应用程序通过internet共享信息,而不必考虑操作系统或应用程序使用的后端软件。(图221观察此图,可知用户之间、服务器之间以及用户与服务器之间是如何交互的)第三节net框架概述以上是microsoft对.net在宏观方面的解释,下面就说一说.net在微观方面既具体在 计算机上是如何实现的,这一部分也就是microsoft构建的面向开发人员的visual studio .neto visual studio .net 提升了下列高产的编程语言:microsoft visual basic®, 它包含了新

24、的面向对象的编程功能;microsoft visual c+-®,它提升了 windows®开发并可 用于创建.net应用程序;以及c#,它给c和c+开发人员带来了 rado现将.net框架简述如下:.net框架是一种新的计算平台,它简化了在高度分布式internet环境中的应用程序 开发。.net框架旨在实现下列目标:提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,述是在 本地执行但在internet上分布,或者是在远程执行的。提供一个将软件部署和版本控制冲突最小化的代码执行环境。提供一个保证代码(包括由未知的或不完全受信任的第三方创建的代码)安全执行

25、的代码执行环境。提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。使开发人员的经验在面对类型大不相同的应用程序(如基于windows的应用程序和 基于web的应用程序)吋保持一致。按照工业标准牛成所有通讯,以确保基于.net框架的代码可与任何其他代码集成。.net框架具有两个主要组件:公共语言运行库和.net框架类库。公共语言运行库 是.net框架的基础。您可以将运行库看作一个在执行时管理代码的代理,它提供核心服务 (如内存管理、线程管理和远程处理),而且还强制实施严格的类型安全以及可确保安全性 和可靠性的其他形式的代码准确性。事实上,代码管理的概念是运行库的基本原则。以运行 库为目标

26、的代码称为托管代码,而不以运行库为目标的代码称为非托管代码o .net框架的另 一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,您可以使用它开发包 含从传统的命令行或图形用户界而(gui)应用程序到基于asp. net所提供的最新创新的应 用程序(如web窗体和xml web services)在内的应用程序。.net框架可由非托管组件承载,这些组件将公共语言运行库加载到它们的进程中并启动 托管代码的执行,从而创建一个可以同时利用托管和非托管功能的软件环境o .net框架不但 提供若干个运行库宿主,而且述支持第三方运行库宿主的开发。internet explorer是承载运行库(

27、以mime类型扩展的形式)的非托管应用程序的一 个示例。使用internet explorer承载运行库使您能够在html文档中嵌入托管组件或 windows窗体控件。以这种方式承载运行库使得托管移动代码(类似于microsoft® activex® 控件)成为可能,但是它具有只有托管代码才能提供的重大改进(如不完全受信任的执行和 安全的独立文件存储)。下而的插图(图2. 3. 1)显示公共语言运行库和类库与应用程序之间以及与整个系统之间的关系。该插图还显示托管代码如何在更大的结构内运行。自定义对象库asp.net(运行库)internet信息服务托管web应用程序(图2.

28、 3. 1 .net框架环境)下面的章节将更加详细地描述.net框架的主要组件和功能。1公共语言运行库的功能公共语言运行库管理内存、线程执行、代码执行、代码安全验证、编译以及其他系统服 务。这些功能是在公共语言运行库上运行的托管代码所固有的。至于安全性,取决于包括托管组件的来源(如internet.企业网络或本地计算机)在内 的一些因素,托管组件被赋予不同程度的信任。这意味着即使用在同一活动应用程序中,托 管组件既可能能够执行文件访问操作、注册表访问操作或其他须小心使用的功能,也可能不 能够执行这些功能。运行库强制实施代码访问安全。例如,用户可以相信嵌入在web页中的可执行文件能够 在屏幕上播

29、放动画或唱歌,但不能访问他们的个人数据、文件系统或网络。这样,运行库的 安全性功能就使通过internet部署的合法软件能够具有特别丰富的功能。运行库述通过实现称为通用类型系统(cts)的严格的类型验证和代码验证基础结构来 加强代码可靠性。cts确保所有托管代码都是可以自我描述的。各种microsoft和第三方语 言编译器生成符合cts的托管代码。这意味着托管代码可在严格实施类型保真和类型安全的 同时使用其他托管类型和实例。此外,运行库的托管环境述消除了许多常见的软件问题。例如,运行库自动处理对象布 局并管理对对象的引用,在不再使用它们时将它们释放。这种自动内存管理解决了两个最常 见的应用程序

30、错误:内存泄漏和无效内存引用。运行库还提高了开发人员的工作效率。例如,程序员可以用他们选择的开发语言编写应 用程序,却仍能充分利用其他开发人员用其他语言编写的运行库、类库和组件。任何选择以 运行库为目标的编译器供应商都可以这样做。以.net框架为目标的语言编译器使得用该语 言编写的现有代码可以使用.net框架的功能,这大大减轻了现有应用程序的迁移过程的工 作负担。尽管运行库是为未来的软件设计的,但是它也支持现在和以前的软件。托管和非托管代 码之间的互操作性使开发人员能够继续使用所需的com组件和dllo运行库旨在增强性能。尽管公共语言运行库提供许多标准运行库服务,但是它从不解释 托管代码。一种

31、称为实时(j1t)编译的功能使所有托管代码能够以它在其上执行的系统的本 机语言运行。同时,内存管理器排除了出现零碎内存的可能性,并增大了内存引用区域以进 一步提高性能。最后,运行库可由高性能的服务器端应用程序(如microsoft® sql server和internet 信息服务(iis)承载。此基础结构使您在享受支持运行库宿主的行业最佳企业服务器的优 越性能的同时,能够使用托管代码编写业务逻辑。2net框架类库.net框架类库是一个与公共语言运行库紧密集成的可重用的类型集合。该类库是面向对 象的,并提供您自己的托管代码可从中导幽功能的类型。这不但使net框架类型易于使用, 而且还

32、减少了学习.net框架的新功能所需要的时间。此外,第三方组件可与.net框架中 的类无缝集成。例如,.net框架集合类实现一组可用于开发您自己的集合类的接口。您的集合类将 与.net框架中的类无缝地混合。正如您对面向对象的类库所希望的那样,.net框架类型使您能够完成一系列常见编程任 务(包括诸如字符串管理、数据收集、数据库连接以及文件访问等任务)。除这些常见任务 之外,类库述包括支持多种专用开发方案的类型。例如,可使用.net框架开发下列类型的 应用程序和服务:控制台应用程序。脚本应用程序或寄宿的应用程序。 windows gui 应用程序(windows 窗体)。 asp.net应用程序。

33、 xml web services。 windows 服务。例如windows窗体类是一组综合性的可觅用的类型,它们大犬简化了 windows gut的 开发。如果要编写asp. net web窗体应用程序,可使用web窗体类。3 客户端应用程序开发客户端应用程序在基于windows的编程中最接近于传统风格的应用程序。这些是在桌面 上显示窗口或窗体从而使用户能够执行任务的应用程序类型。客户端应用程序包括诸如字处 理器和电子表格等应用程序以及自定义的业务应用程序(如数据输入工具、报告工具等等)。 客户端应用程序通常使用窗口、菜单、按钮和其他gui元素,并且它们可能访问木地资源(如 文件系统)和外

34、围设备(如打印机)。另一种客户端应用程序是作为web页通过internet部署的传统activex控件(现在 被托管windows窗体控件所替代)。此应用程序非常类似于其他客户端应用程序:它在本机 执行,可以访问本地资源,并包含图形元素。过去,开发人员将c/c+与microsoft基础类(mfc)或应用程序快速开发(rad)环 境(如microsoft® visual basic®) 一起使用来创建这样的应用程序。.net框架将这些现 有产品的特点合并到了单个且一致的开发环境中,该环境大大简化了客户端应用程序的开发。包含在.net框架中的windows窗体类旨在用于gui开

35、发。您可以轻松创建具有适应 多变的商业需求所需的灵活性的命令窗口、按钮、菜单、工具栏和其他屏幕元素。例如,.net框架提供简单的属性以调整与窗体相关联的可视属性。某些情况下,基础操 作系统不支持直接更改这些属性,而在这些情况下,.net框架将自动重新创建窗体。这 是.net框架集成开发人员接口从而使编码更简单更一致的许多方法之一。和activex控件不同windows窗体控件具有对用户计算机的不完全受信任的访问权 限。这意味着二进制代码或在本机执行的代码可访问用户系统上的某些资源(如gui元素和 受限制的文件访问)而不能访问或危害其他资源。由于具有代码访问安全性,许多曾经需要 安装在用户系统上

36、的应用程序现在可以通过web安全地部署。您的应用程序可以在像web 页那样部署时实现木地应用程序的功能。4 服务器应用程序开发在托管领域中,服务器端应用程序是通过运行库宿主实现的。非托管应用程序承载公共 语言运行库,后者使您的自定义托管代码可以控制服务器的行为。此模型在获得主服务器的 性能和可伸缩性的同时提供给您公共语言运行库和类库的所有功能。asp.net 承载 xml web services血用程序windows.net 企业级 服务器承我运行库和 托管代码下面的插图(图2. 3.2)显示在不同服务器环境中运行托管代码的基本网络架构。在应 用程序逻辑通过托管代码执行时,服务器(如iis和

37、sql server)可执行标准操作。客户端asp.net 承载 web窗体 应用程序(图2. 3.2服务器端托管代码)asp. net是使开发人员能够使用.net框架开发基于web的应用程序的宿主环境。但 是,asp. net不止是一个运行库宿主;它是使用托管代码开发web站点和通过internet分 布的对象的完整结构。web窗体和xml web services都将iis和asp. net用作应用程序的发布机制,并且两者在.net框架中都具有支持类集合。xml web services作为基于web的技术的重要发展,是类似于常见web站点的分布式 服务器端应用程序组件。但是,与基于web

38、的应用程序不同,xml web services组件不具 有ui并且不以浏览器(如internet explorer和netscape navigeitor)为目标。相反, xml web services包含旨在供其他应用程序(如传统的客户端应用程序、基于web的应用 程序或者甚至是其他xmlweb services)使用的可重用的软件组件。因此,xml web services 技术止迅速地将应用程序开发和部署推向高度分布式internet环境。如果您使用过asp技术的早期版本,您马上就会注意到asp. net和web窗体提供的改 进。例如,您可以用支持.net框架的任何语言开发web窗体

39、页。此外,您的代码不再需要 与http文本共享同一个文件(尽管如果您愿意,代码还可以继续这样做)。web窗体页用 木机语言执行,这是因为与所有其他托管应用程序一样,它们充分利用运行库。与此相对照, 非托管asp页始终被写成脚本并解释o asp.net页比非托管asp页更快、更实用并且更易 于开发,这是因为它们像所有托管应用程序一样与运行库进行交互。.net框架还提供类和工具的集合来帮助开发和使用xml web services应用程序。xml web services是基于soap (-种远程过程调用协议)、xil (种可扩展的数据格式)和wsdl (web服务描述语言)这些标准生成的。基于这

40、些标准生成.net框架的目的是为了提高与 非microsoft解决方案的互操作性。例如,.net框架sdk所包含的web服务描述语言工具可以查询在web上发布的xml web services,分析它的wsdl描述,并产生c#或visual basic源代码,您的应用程序 可以使用这些代码而成为xml web services的客户端。这些源代码可以创建从类库中的类 派生的类,这些类使用soap和xml分析处理所有基础通讯。虽然您可以使用类库来直接使 用xml web services, web服务描述语言工具和包含在sdk中的其他工具可以使您更加方 便地用.net框架进行开发。如果您开发和发

41、布自己的xml web services, .net框架为您提供了一组符合所有基础 通讯标准(如soap、wsdl和xml)的类。使用这些类使您能够将注意力集中在服务的逻辑 上,而无需关注分布式软件开发所需要的通讯基础结构。最后,与托管环境中的web窗体页相似,您的xml web services将使用iis的可仲缩通讯以本机语言的速度运行。第四节 为什么会出现c# (c sharp)为什么会出现c# (c sharp) ?在过去的二十年里,c和c+已经成为在商业软件的开发领域中使用最广泛的语言。它 们为程序员提供了十分灵活的操作,不过同时也牺牲了一定的效率。与诸如microsoft visu

42、al basic等语言相比,同等级别的c/c+应用程序往往需要更长时间来开发。由于c/c+语言的 复杂性,许多程序员都试图寻找一种新的语言,希望能在功能与效率之间找到一个更为理想 的权衡点。目前有些语言,以牺牲灵活性的代价来提高效率。可是这些灵活性正是c/c+程序员所 需要的。这些解决方案对编程人员的限制过多(如屏蔽一些底层代码控制的机制),其所提供 的功能难以令人满意。这些语言无法方便地同早先的系统交互,也无法很好地和当前的网络 编程相结合。对于c/c+用户来说,最理想的解决方案无疑是在快速开发的同吋又可以调用底层平台 的所有功能。他们想要一种和最新的网络标准保持同步并且能和已有的应用程序良

43、好整合的 环境。另外,一些c/c+开发人员述需要在必要的时候进行一些底层的编程。微软推出c#, c# (c sharp)是微软对这一问题的解决方案。c#是一种最新的、面向对象 的编程语言。它使得程序员可以快速地编写各种基于microsoft .net平台的应用程序, microsoft .net提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。第五节c#的特点2000年6月,microsoft公司向外界宣布了 c#语言,它是专门设计用于为microsoft的.net 应用开发体系结构服务的。从以往的开发经验中可以知道,如果要开发一门新的计算机语言, 就要解决那些用c或c+语言开发时常

44、遇到的传统问题,如内存泄漏、多线程应用程序写入 困难、静态链接、非法指针调用、复杂的多重继承规则等等。为了减少语言学习过程中的弯 路,还应使设计出的语言看起来与c和c+尽量相似。6年前,sun公司开发了与平台无关 的java语言,它增加了垃圾回收,集成了线程间的互锁、动态链接等概念,同时抛开了指针 概念,只允许单继承,并且还引入了接口的概念。那么c#对此类问题是如何解决的呢?又 或者说c#有什么特点呢?c#的特点c#使得c+程序员可以高效的开发程序,而绝不损失c/c+原有的强大的功能。因为这 种继承关系,c#与c/c+具有极大的相似性,熟悉类似语言的开发者可以很快的转向c#。1效率与安全性新兴

45、的网络经济迫使商务企业必须更加迅速的应对竞争的威胁。开发者必须不断缩短 开发周期,不断推出应用程序的新版本,而不仅仅是开发一个“标志性”的版本。c#在设计时就考虑了这些问题。它使开发者用更少的代码做更多的事,同时也不易出错。2支持现有的网络编程新标准新的应用程序开发模型意味着越来越多地解决方案依赖于新出现的网络标准,例 如html, xml, soap等。现存的开发工具往往都是早于internet出现的,或者是在我们 所熟知的网络还处于孕育期时出现的。所以,它们一般无法很好地支持最新的网络技术。c#程序员可以在microsoft .net平台上事半功倍的构建应用程序的扩展框架。c#包含了 内置

46、的特性,使任何组件可以轻松转化为xml网络服务,通过internet被任何操作系统上运 行的任何程序调用。更突出的是,xml网络服务框架可以使现有的xml网络服务对程序员來说就和c#对彖 一样。这样,程序员就可以方便地使用他们已有的面向对象的编程技巧来开发利用现有的 xml网络服务。还有一些精细的特性,使得c#成为一流的网络编程工具。例如,xml正逐渐成为在网 络上传输结构化数据的标准。这种数据集合往往非常小。为提高性能,c#允许把xml数据 直接映射到struct数据类型,而不是classo这样对处理少量的数据非常有效。3消除大量程序错误即使是专家级的c+程序员也常会犯一些最简单的小错误比如

47、忘了初始化变 量,但往往就是这些小错误带来了难以预料的问题,有些甚至需耍很长时间来寻找和解决。 一旦一个程序作为产品来使用,就算最简单的错误纠正起来也可能要付出极其昂贵的代价。c#的现代化设计能够消除很多常见的c+编程错误。例如:1,资源回收减轻了程序员内存管理的负担。2, c#中变量由环境自动初始化。3, 变量是类型安全的。这样,程序员编写与维护那些解决复杂商业问题的程序就更方便了。4对版本的更新提供内在的支持降低了开发成本更新软件组件是一项很容易出错的工作,因为代码的修改可能无意间改变原有程序 的语义。为协助开发者进行这项工作,c#为版本的更新提供内在的支持。例如,方法重载必 须显式声明。

48、这样可以防止编码错误,保证版本更新的灵活性。还有一个相关的特性就是对 接口和接口继承的内在支持。这些特性使得c#可以开发复杂的框架并且随着吋间不断发展更 新它。总体来说,这些特性使得开发程序项目的后续版本的过程更加健壮,从而减少后续 版本的开发成本。5商业过程和软件实现的更好对应企业的商业计划要付诸现实,必须在抽象的商业过程和实际的软件实现之间建立紧 密地对应。不过大多数语言都很难做到这点。例如,如今的程序员们一般使用代码注释来注 明哪个类对应于某个抽彖的商业对彖。c#语言允许类型定义的,扩展的元数据。这些元数据可以应用于任何对象。项目构 建者可以定义领域特有的属性并把他们应用于任何语言元素类

49、,接口等等。然后,开发人员 可以编程检查每个元素的属性。这样,很多工作都变得方便多了,比如编写一个小工具来自 动检查每个类或接口是否被止确定义为某个抽象商业对象的一部分,或者只是创建一份基于 对彖的领域特有属性的报表。定制的元数据和程序代码z间的紧密对应有助于加强程序的预 期行为和实际实现的之间的对应关系。6扩展交互性作为一种自动管理的,类型安全的环境,c#适合于大多数企业应用程序。但实际的 经验表明有些应用程序仍然需要一些底层的代码,要么是因为基于性能的考虑,要么是因 为要与现有的应用程序接口兼容。这些情况可能会迫使开发者使用c+,即使他们本身宁愿 使用更高效的开发环境。c#采用以下对策来解

50、决这一问题: 内置对组建对彖模型(com)和基于windows?的api的支持; 允许有限制地使用纯指针(native pointer)o在c#中,每个对象都自动生成为一个com对象。开发者不再需要显式的实现iunknown 和其他com接口这些功能都是内置的.类似的,c#可以调用现有的com对象,无论它是由 什么语言编写的.c#包含了一个特殊的功能,使程序可以调用任何纯apl在一段特别标记的代码中,开 发者可以使用指针和传统c/c+特性,如手工的内存管理和指针运算。这是其相对于其它环 境的极大优势。这意味着c#程序员可以在原有的c/c+代码的基础上编写程序,而不是彻底 放弄那些代码。无论是支

51、持com还是纯api的调用,都是为了使开发者在c#环境中直接拥有必要的强 大功能。结论c#是一种现代的面向对象语言。它使程序员快速便捷地创建基于microsoft .net平台的 解决方案。这种框架使c#组件可以方便地转化为xml网络服务,从而使任何平台的应用程 序都可以通过internet调用它。c#增强了开发者的效率,同时也致力于消除编程中可能导致严重结果的错误。c#使 c/c+程序员可以快速进行网络开发,同时也保持了开发者所需要的强大性和灵活性。第六节c sharp的一些绝技c#是由c和c+派生而來的一种“简单、流行、面向对彖、类型安全”的程序设计语言, c#意在综合visual bas

52、ic的高效率和c+的强人功能。那c#是如何综合visual basic和c+ 的呢?而且除了 visual basic和c+的特点,c#是否还有别的特点呢?答案是肯定的:1快速应用开发(rad)功能支持快速开发(rapid application development)可以说是口前开发语言最为重要的一大功 能,也正是c/c+的致命伤。网络吋代应用系统的开发必须按照网络吋代的速度来进行,支 持快速开发可以使得开发人员的开发效率倍增,从而使得他们可以从繁重的重复性劳动中解放岀来。c#的rad功能主要表现在例如垃圾收集、指代等众多特性上。垃圾收集机制将减轻开 发人员对内存的管理负担,而指代功能更是

53、可以让开发者不经过内部类就调用函数。利用c# 的这些功能,可以使开发者通过较少的代码来实现更强大的应用程序,并口能够更好地避免 错误发生,从而缩短了应用系统的开发周期。2语言的自由性用c#编写的程序能最大程度地和任何支持.net的语言互相交换信息。能够继承和使用 任何语言所编写的程序可以称得上是知识的继承,这样做的好处是节省了大量的工作,你不 必把cobol等语言强行改成另一种语言,.net让各种语言真正地互相交流了。c#和其他.net语言有着最好的协作,这点对开发人员菲常重要。全球从事编写软件的人 当中,大约有50%以visual basic作为基本的编程工具,在跨入.net编程时代的时候,

54、这些 人轻松地使用了.net的vb开发web上的应用程序,想想以后你可以和你的那些只懂vb的 同事真正在一起共同开发.net的应用程序时,还有比这更让人轻松和高兴的事情吗?3强大的web服务端组件在c#的web编程屮,最让人兴奋的是web服务端的组件,它们不仅包括传统组件,还 包括那些能够自动连接五花八门服务的可编程组件,你可以用c#编写自己的服务器端组件, 服务器端组件和标准的html提供的服务自然是不一样的,使用它们可以更自由、更容易地 进行数据绑定。不久,那些视频服务器组件也很快会出现,有了这些强大的组件,我们可以 设计出功能更加强劲的企业级分布式应用系统。4支持跨平台随着互联网应用程序

55、的应用越来越广,人们逐渐意识到由于网络系统错综复杂,使用的 硬件设备和软件系统各不相同,开发人员所设计的应用程序必须具有强大的跨平台性。c#编 写的应用程序就具有强大的跨平台性,这种跨平台性也包括了 c#程序的客户端可以运行在不同类型的客户端上,比如pda、手机等非pc装置。5与xml的融合由于xml技术真止融入到了.net和c#之中,c#的编程变成了真止意义的网络编程, 甚至可以说.net和c#是专为xml而设计,使用c#的程序员可以轻松用c#内含的类来使用 xml技术。就这方面而言,目前c#提供给了程序员更多的白由和更好的性能来使用xmlo6对c+的继承c#继承并保留了 c+强大的功能,例

56、如,c#保留了类型安全的检测和重载功能,c#述 提供了一些新功能取代了一些原来的ansi c预处理程序的功能,提高了语言的类型安全等 安全性。了解了 c#如此众多的特性,你是不是也感觉心动呢!身怀绝技的c#将在未来正式步入征程,与我们的程序开发人员携手共进!没有最好只有更好c#将真正成为新世纪的新语言。有人现在就在讨论c#和java的性能优劣,其实这并没有什么实际意义,因为c#和java都将随着吋代的发展而继续发展,并不断加以改进以适应 新的开发需求,这正印证了一句著名的广告词:“没有最好,只有更好s不久的未来,c#的应用也将如同java-样,飞速向数字电视、机顶盒、汽车、pda、移 动电话、

57、呼机,甚至电冰箱等其他非pc装置中进行推广。总之,只有在激烈的良性竞争下,我们才能更快、更好地促进应用开发技术的发展,才 能更加快速地推动it行业的人发展。不管怎样,c#的确值得我们关注!第三章用c#实现对xml的编辑前而已经讲到,本软件有两个难点:1、要用treeview显示xml文档的结构,就要能读取xml文档的结构,再在treeview屮显示出来。2、存储文件时,能读取treeview的结构,把它存储成xml文件。下面就看一下木软件是如何解决第一个难点的: 先看一看下面的addtreenode函数:publ ic void addtreenode(xmlnode node, treenode treenode)1 foreach(xmlnode nodcarrayl in node.childnodcs )2treenode tree no deback=new treenodeo :3if (nodearray 1nodetype xmlnodetype.element)4 textattr textattr二new textattr ();5treenodeback二treenode .nodes add (nodearray1. name

温馨提示

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

评论

0/150

提交评论