本科畢業(yè)設計-用c編一個xml的編輯器_第1頁
本科畢業(yè)設計-用c編一個xml的編輯器_第2頁
本科畢業(yè)設計-用c編一個xml的編輯器_第3頁
本科畢業(yè)設計-用c編一個xml的編輯器_第4頁
本科畢業(yè)設計-用c編一個xml的編輯器_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第一章xml簡介第一節(jié) xml歷史:20世紀60年代,ibm創(chuàng)建gml(generalized markup language,通用標記語言),后經(jīng)演 變,發(fā)展成sgml(standard generalized markup language,標準通用標記語言),成為第一個 標準化的信息結(jié)構(gòu)化技術(shù),被用在ibm內(nèi)部,1986年成為iso標準。功能強大,但缺點是 需要一大堆昂貴的軟件來運行,所以在internet發(fā)展的初期,不能成為表示超文本的最佳選擇。 于是后來html對sgml進行了極大的簡化,從而成為現(xiàn)在internet的標準。隨著對網(wǎng)絡需 求進一步增大,人們開始擴充html的功能,慢慢

2、發(fā)展成現(xiàn)在這么龐大混亂的局面。于是 w3c(world wide web consortium,萬維網(wǎng)聯(lián)盟)組織了一個sgml專家組,主要r標是創(chuàng)建一 種新的標記技術(shù),既要具備sgml的核心技術(shù),還要具備html的簡單性。1998年2月, w3c發(fā)布了 xml 1.0規(guī)范,即可擴展的標記語w(extensible markup language)是sgml簡化 的子集,繼承了 sgml重要的三個特性:可擴展性,結(jié)構(gòu)化,有效性,成為表示結(jié)構(gòu)化信息 的一種標準文本格式。第二節(jié) xml語法基礎:基木構(gòu)成單元叫實體(entity),包含解析的或未解析的數(shù)據(jù).解析的數(shù)據(jù)由字符構(gòu)成,可以 看成是標記,由x

3、ml處理函數(shù)處理,而未解析的字符數(shù)據(jù)被當成原始文本不被處理,例如 <name>delfan</name>, <name>和v/name>就是標記,而delfan是原始文本。標記用來描述 文件的存儲結(jié)構(gòu)(實體)和邏輯結(jié)構(gòu)(元素)oxml語法實際描述了用來定義xml文件的結(jié)構(gòu)和 布局的構(gòu)造,也包含了約束關(guān)系,而xml需要xml處理函數(shù)來處理,所以必須遵守嚴格的 語法。一個簡單的例子:< ?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的解析器,雖然不很完善??梢詫⒁陨洗a寫到一個文本文件中, 例如文件名為test.xml,雙擊,ie就可以把這個xml文檔解析成一棵樹并按層次顯示出來:第三節(jié)xml的術(shù)語xml文檔:xml標識語言寫成的xml原代碼文件,實際上是ascii的純文本文件,可 以用notepad創(chuàng)建和修改。xml文檔的后綴名為.xml,用ie5.0以上瀏

5、覽器可以直接打開并 顯示成樹狀結(jié)構(gòu),看到的就是xml文檔一般來說,xml文檔包含三個部分:1. 一個 xml 文檔聲明:<?xml version=n1.0"?>2. 一個關(guān)于文檔類型的定義:v!doctype data system ”data.dtd”>如不需要可以省略3. 用xml標識創(chuàng)建的內(nèi)容.舉例:v?xml version二”1.0" encoding二"gb2312" ?>v清單v入庫v紙張 規(guī)格=”a4”單位二”本">1000</紙張v經(jīng)手人 > 張三</經(jīng)手人>v/入庫v出

6、庫v紙張規(guī)格=nb5u單位二”本”>200</紙張v經(jīng)手人張三</經(jīng)手人v出庫v/清單其中第一行v?xml version二”1.0” encoding=ngb2312h ?>就是一個xml文檔的聲明,并指生使用 gb2312,以下就是內(nèi)容主體部分。:xml文檔中有關(guān)的術(shù)語:l. element(元素)元素是組成xml文檔的最小單位,由標識來定義,包括其中的內(nèi)容,如經(jīng)手人張三v/ 經(jīng)手人,而且要由自己創(chuàng)建2tag(標識)標識是用來定義元素的。在xml中,標識必須成對出現(xiàn),將數(shù)據(jù)包圍在中間。標識的 名稱和元素的名稱是一樣的。例如: 經(jīng)手人張三/經(jīng)手人,其中v經(jīng)手人 就是標

7、識。3. attribute(屬性)例如紙張規(guī)格=”b5“單位二”木”中”規(guī)格”和”單位”就是屬性,屬性是對標識進一步的描 述和說明,一個標識可以有多個屬性,每個屬性都有它自己的名字和數(shù)值,是標識的一部分, 也是自己定義的,但盡量不要用屈性,而是使用子元素,例如上而元素可以改成v紙張v規(guī)格b5v/規(guī)格v單位本v/單位200v紙張,這么做的原因是屬性不易擴充。4. declaration(聲明)所有xml文檔的第一行都有一個l聲明表示是一個xml文檔,并指出遵循哪個版本的 規(guī)范:?xml version二t.0”?說明是1.0版木的xml文檔5. dtd(文件類型定義)dtd是用來定義xml文檔

8、中元素,屬性以及元素之間關(guān)系的。通過dtd文件可以檢測 xml文檔的結(jié)構(gòu)是否正確,作用:用來規(guī)范xml文檔,元素和標簽使用是否正確。dtd文檔 包含:元素的定義規(guī)則,元素間關(guān)系的定義規(guī)則,元素可使用的屬性,可使用的實體或符號 規(guī)則。dtd文件也是一個ascii的文木文件,后綴名為.dtdo實際上是xml文件的抽象出 來的模板。但建立xml文檔并不一定需要dtd文件。6well-formed xml(良好格式的 xml)遵守xml語法規(guī)則,并遵守xml規(guī)范的文檔稱z為”良好格式“。如果你所有的標識都 嚴格遵守xml規(guī)范,那么你的xml文檔就不一淀需要dtd文件來定義它。良好格式的文 檔必須以一個

9、xml聲明開始,必須說明文檔遵守的xml版木,目前是1.0,文檔必須有一個根 元素,而且只能有一個,就是緊接著聲明后面建立的第一個元素,其它元素都是這個根元素的 子元素丄文檔的內(nèi)容書寫時必須遵守xml語法。第四節(jié)本軟件中的xml木軟件的目的是要做一個編輯xml文擋的編輯器。由于xml文擋是樹形結(jié)構(gòu)的,所以在 本軟件中xml文擋就用tree view控件顯式顯示出來,treeview也是樹形結(jié)構(gòu)的,但treeview 控件允許有多個根節(jié)點,需要對treeview作一些限制,另外treeview控件只是將xml文檔的 樹形結(jié)構(gòu)顯示出來,但xml文檔屮各個節(jié)點的屬性值和文本值不能在treeview中

10、顯示出來, 所以,要給treeview中的每個節(jié)點賦一個指針,指針所指的地址中存儲著xml文檔中對應節(jié) 點的文木值和屬性值。以上是本軟件的制作思想,要實現(xiàn)這種做法有兩個難點:1、要用treeview顯示xml文檔 的結(jié)構(gòu),就要能讀取xml文檔的結(jié)構(gòu),再在treeview中顯示出來。2、存儲文件時,能讀取 treeview的結(jié)構(gòu),把它存儲成xml文件。這里對本軟件作了一個簡要的介紹,在論文的結(jié)束部分將做進一步的介紹。第二章 microsoft .net 中的 c#第一節(jié).net簡介要介紹c#。就要先介紹一下c#所運行的平臺.neto .net是什么呢?先看一下微軟木身對它是如何定義的。定義-ne

11、t的最簡單方法(sanjay parthasarathy,平臺戰(zhàn)略副總裁,2000年12月21日)1分布式計算定義.net最好的方式就是想一想.net要做什么。microsoft認為向分布式計算的轉(zhuǎn)變止在悄悄地進行著。在過去的兒年中,人們一直在鋪設寬帶電纜,使帶寬的限制比過去 要小得多。根據(jù)摩爾定律效應,每18個月處理能力翻一番,價格降低一半,現(xiàn)在您首次可以選擇進行真正的分布式計算:因為帶寬已經(jīng)不那么昂貴,您可以在任何最佳地點進行處理。當今已經(jīng)有很多這種分布式應用程序的例子onapster就是一個使用胖客戶端與計算機 群集中的目錄服務進行對話的應用程序,它把網(wǎng)絡上的所有參與的計算機都當作服務器

12、。另 一個分布式應用程序的例子是即時消息,胖客戶端與計算機群集中一個伙伴列表對話,同時 述可以與網(wǎng)絡中的其他胖客戶端insumt messenger和 windows進行通信。因此,.net的口的正是要加速產(chǎn)生下一代分布式計算的過程。2三個杠桿我們認為可以拉動三個杠桿,以使下一代分布式計算盡可能快地發(fā)生。web服務:第一個杠桿是一切都要成為web服務。這適用于網(wǎng)絡中的兩種東西:軟 件和資源(如存儲)。聚合與集成:第二個需要拉動的杠桿是,一旦您擁有了這些web服務,就需要以一種非常簡單和容易的方式將它們聚合與集成起來。簡單而令人神往的用戶體驗:加速分布式計算的第三個杠桿是,需要有簡單和令人神往

13、的消費者或者最終用戶體驗。因此我們認為這三個杠桿是加速向分布式計算轉(zhuǎn)移的必要條件:一切都要成為web服務;聚合與集成web服務的能力;向最終用戶提供簡單而令人神往的體驗的能力。.net的目的正是致力于拉動這些杠桿,以加速向分布式計算的轉(zhuǎn)移,為了正確地拉動這些 杠桿,我們正在做五項工作。3分五部分構(gòu)建net(1) 開發(fā)工具我們做的第一項工作是:通過.net框架和visual studio工具集,使編寫web 服務盡可能簡單方便。我們認為,用于編寫web服務最好、最方便、最快并且最節(jié)約的方 法是使用.net框架和visual studio .net開發(fā)工具。(2) 服務器我們做的第二項工作是:真止

14、致力于web服務聚合與集成,這恰恰是我們的.net服務器家族的用武之地。我們認為,這些服務器是用于聚合與集成web服務最好、 最簡單、最方便、最節(jié)約的方法??梢詮膬蓚€方面看待這些服務器。大家熟悉和恵愛的一組 服務器是 windows 2000、sql server 2000> exchange 2000, xml 管線內(nèi)置于其核心。而 xml,正如您所知,可能是最簡單最大眾化的集成web服務的方法。第二類服務器是我們 構(gòu)建的專門服務器,如biztalk server,它們提供更高級別和更靈活的聚合與集成。以biztalk server2000為例,它內(nèi)置了一種叫作xlang的語言,通過該

15、語言您可以定義過程流、事 務流和協(xié)定,也可以跨異類環(huán)境進行相當深層次的集成。這就是.net的第二部分:用以加 速web服務聚合與集成的服務器集。(3) 基礎服務我們的第三項工作是:使最終消費者的體驗簡單而令人神往,為此我們正在構(gòu) 建一個.net構(gòu)造塊服務集。幾乎每個人,每當他遇到多個站點和多個應用程序時,都遇到 過這樣的情況:需要登錄這些站點和應用程序;我們正在創(chuàng)建一個諸如標識、通知和系統(tǒng)化 存儲之類的小服務集,利用這些服務,消費者和用戶從一個服務轉(zhuǎn)向另一個服務,從一個應 用程序轉(zhuǎn)到另一個應用程序,甚至從一種環(huán)境轉(zhuǎn)向另一個環(huán)境都將非常容易。這種簡單性在 分布式計算的世界里是絕對必要的。這些.n

16、et構(gòu)造塊服務對開發(fā)人員也有巨大的益處:它們與以前的windows 中的內(nèi)存管理器和文件系統(tǒng)非常相似,當人們編寫應用程序時,不需要每次都把內(nèi)存管理器 和文件系統(tǒng)復制一遍。我們相信,開發(fā)人員將喜歡這些服務集成到計算機群集中,而且它們 得到保證,因此他們可以將精力集中投入到可以大大增值的事情上去。.net構(gòu)造塊服務 是.net的第三部分。(4) 設備第四部分致力于最終用戶的體驗,通過一套我們止在創(chuàng)建的客戶端和設備軟件, 將特別帶給用戶令人神往的體驗。首先,net假設您擁有了一個設備家族,我們正是要創(chuàng) 建許多設備軟件,以使人們可以使用相互取長補短的設備家族。我們將在設備軟件中做一些 有趣的事情,以使

17、您盡可能體驗到令人神往的效果。一方面,您將擁有我們?yōu)橛螒驒C創(chuàng)建的 設備軟件,另一方面,您也將擁有我們?yōu)閜c創(chuàng)建的設備軟件,同時我們還致力于創(chuàng)建用于 從電話到pda到其他如掌上pc之類的各種設備的軟件。(5) 用戶體驗在拉動簡單而令人神往的用戶體驗這一杠桿方面,我們的最后一項工作,是正 在實實在在地創(chuàng)建一些非常有針對性的用戶體驗,把web服務集合到一起,并口集成很多 功能,以提供非常有針對性的體驗。我們正在創(chuàng)建面向消費者的msn而向小型企業(yè)的bcentral面向知識工作者的office面向開發(fā)人員的visualstudio.net。3net平臺總而言之,這五部分就是.net的全部內(nèi)容。您已經(jīng)了解

18、了.net 框架和 visual studio .net 工具;服務器;.net構(gòu)造塊服務;設備軟件;有針對性的用戶體驗。我把前四者組合到一起稱之為.net平臺,而最后一個則是建在該平臺之上的應用?,F(xiàn)在我們已經(jīng)知道.net產(chǎn)生的目的是什么,也知道它應該具有的功能,那么可以對.net做 如下定義:何謂-net?它是microsoft面向xmlweb服務的平臺。但準確地說,什么是xml web服務呢?它是未來的計算。microsoft -net擴展了通過任何設備隨時隨地操作數(shù) 據(jù)和進行通訊的能力。net使用分布式計算模型并基于開放標準(如xml)將pc與其 他智能設備連接在一起。.net就是mic

19、rosoft的xml web服務平臺。不論操作系統(tǒng)或 編程語言有何差別,xml web服務能使應用程序在internet上傳輸和共享數(shù)據(jù)。第二節(jié)什么是xml web服務?前面講道.net是面向xml web服務的平臺,那xml web服務又具體是什么呢? 那下面將詳細闡述什么是xml web服務:要點 xml web服務使應用程序能夠共享數(shù)據(jù)??梢钥缙脚_和跨操作系統(tǒng),不分編程語言地對xml web服務進行調(diào)用。 .net是microsoft的針對xml web服務的平臺。1 xml革命盡管簡單得令人難以置信,xml確實正在徹底改變我們創(chuàng)建和使用軟件的方式。web徹底改變了用戶與應用程序的交互方

20、式。通過提供一種能使數(shù)據(jù)更易適配或更易轉(zhuǎn)換的 通用數(shù)據(jù)格式,xml正在徹底改變應用程序間的交互方式一或者更廣義地說,計算機間的交互方式。包括soap和uddi在內(nèi)的基于xml的標準,構(gòu)成了應用程序間通信的開 放式方法,此方法叫做xml web服務。2 xml web服務:一種通用語言xml web服務使應用程序能夠通過internet進行通信,不管操作系統(tǒng)或編程語言 是什么。它們可以在任何平臺上實現(xiàn)并且可以由諸如w3c的公共標準組織定義。有了 xml web服務,應用程序不僅可以共享數(shù)據(jù),還可以調(diào)用其他應用程序的功能,而不考慮其他應 用程序是如何生成的。通過xml共享數(shù)據(jù)在保證應用程序相互獨立

21、的同時,還使它們能夠 建立松鏈接而形成一個合作組來完成某個特定的任務。3 web站點與xml web服務web站點致力于為用戶提供信息:它們是服務器與用戶交互的通信工具。另一方面, xml web服務為應用程序間的交互提供了一個直接的手段。本機上托管的應用程序和遠程 計算機上的應用程序可以使用xml和soap消息通過internet進行通信。4 ml web服務如何連接應用程序以下是一個簡單實例:假如您有一個庫存系統(tǒng)。如果您沒有把它與其他任何系統(tǒng)連接 起來,它就不會有很大價值。您可以跟蹤庫存,但這是一項繁重的工作,并且一個系統(tǒng)可以 單獨完成的工作是有限的。您所出售的每件商品的記錄不僅要輸入庫存

22、系統(tǒng),述要分別輸入 計帳系統(tǒng)和客戶帳戶記錄。然后您必須記得下次訂貨的時候從您的供應商那里預訂更多的此 類商品。因為從系統(tǒng)中獲得的贏利接近系統(tǒng)的管理成本,所以成本/收益比率就很沒有吸引力 了。但是,如果您通過xml把您的庫存系統(tǒng)和您的計帳系統(tǒng)連接起來,就會變得更有 趣?,F(xiàn)在,無論何時您購買或出售了什么,對您的庫存和資金周轉(zhuǎn)的影響會在一個步驟中跟 蹤。如果更進一步,把您的倉庫管理系統(tǒng)、客戶訂貨系統(tǒng)、供應商訂貨系統(tǒng)和您的發(fā)貨公司 也用xml連接起來,突然間您的庫存管理系統(tǒng)就變得價值不匪:您可以端到端地管理您的 業(yè)務,對每個交易只做一次操作,而不是對交易涉及的每個系統(tǒng)都做一次操作。工作量大大 減少,出

23、錯機會也會大大減少。xml web服務使這些連接變得簡單易行。xml web可使應用程序通過internet共享信息,而不必考慮操作系統(tǒng)或應用程序使用的后端軟件。(圖221觀察此圖,可知用戶之間、服務器之間以及用戶與服務器之間是如何交互的)第三節(jié)net框架概述以上是microsoft對.net在宏觀方面的解釋,下面就說一說.net在微觀方面既具體在 計算機上是如何實現(xiàn)的,這一部分也就是microsoft構(gòu)建的面向開發(fā)人員的visual studio .neto visual studio .net 提升了下列高產(chǎn)的編程語言:microsoft visual basic®, 它包含了新

24、的面向?qū)ο蟮木幊坦δ?;microsoft visual c+-®,它提升了 windows®開發(fā)并可 用于創(chuàng)建.net應用程序;以及c#,它給c和c+開發(fā)人員帶來了 rado現(xiàn)將.net框架簡述如下:.net框架是一種新的計算平臺,它簡化了在高度分布式internet環(huán)境中的應用程序 開發(fā)。.net框架旨在實現(xiàn)下列目標:提供一個一致的面向?qū)ο蟮木幊汰h(huán)境,而無論對象代碼是在本地存儲和執(zhí)行,述是在 本地執(zhí)行但在internet上分布,或者是在遠程執(zhí)行的。提供一個將軟件部署和版本控制沖突最小化的代碼執(zhí)行環(huán)境。提供一個保證代碼(包括由未知的或不完全受信任的第三方創(chuàng)建的代碼)安全執(zhí)行

25、的代碼執(zhí)行環(huán)境。提供一個可消除腳本環(huán)境或解釋環(huán)境的性能問題的代碼執(zhí)行環(huán)境。使開發(fā)人員的經(jīng)驗在面對類型大不相同的應用程序(如基于windows的應用程序和 基于web的應用程序)吋保持一致。按照工業(yè)標準牛成所有通訊,以確?;?net框架的代碼可與任何其他代碼集成。.net框架具有兩個主要組件:公共語言運行庫和.net框架類庫。公共語言運行庫 是.net框架的基礎。您可以將運行庫看作一個在執(zhí)行時管理代碼的代理,它提供核心服務 (如內(nèi)存管理、線程管理和遠程處理),而且還強制實施嚴格的類型安全以及可確保安全性 和可靠性的其他形式的代碼準確性。事實上,代碼管理的概念是運行庫的基本原則。以運行 庫為目標

26、的代碼稱為托管代碼,而不以運行庫為目標的代碼稱為非托管代碼o .net框架的另 一個主要組件是類庫,它是一個綜合性的面向?qū)ο蟮目芍赜妙愋图?,您可以使用它開發(fā)包 含從傳統(tǒng)的命令行或圖形用戶界而(gui)應用程序到基于asp. net所提供的最新創(chuàng)新的應 用程序(如web窗體和xml web services)在內(nèi)的應用程序。.net框架可由非托管組件承載,這些組件將公共語言運行庫加載到它們的進程中并啟動 托管代碼的執(zhí)行,從而創(chuàng)建一個可以同時利用托管和非托管功能的軟件環(huán)境o .net框架不但 提供若干個運行庫宿主,而且述支持第三方運行庫宿主的開發(fā)。internet explorer是承載運行庫(

27、以mime類型擴展的形式)的非托管應用程序的一 個示例。使用internet explorer承載運行庫使您能夠在html文檔中嵌入托管組件或 windows窗體控件。以這種方式承載運行庫使得托管移動代碼(類似于microsoft® activex® 控件)成為可能,但是它具有只有托管代碼才能提供的重大改進(如不完全受信任的執(zhí)行和 安全的獨立文件存儲)。下而的插圖(圖2. 3. 1)顯示公共語言運行庫和類庫與應用程序之間以及與整個系統(tǒng)之間的關(guān)系。該插圖還顯示托管代碼如何在更大的結(jié)構(gòu)內(nèi)運行。自定義對象庫asp.net(運行庫)internet信息服務托管web應用程序(圖2.

28、 3. 1 .net框架環(huán)境)下面的章節(jié)將更加詳細地描述.net框架的主要組件和功能。1公共語言運行庫的功能公共語言運行庫管理內(nèi)存、線程執(zhí)行、代碼執(zhí)行、代碼安全驗證、編譯以及其他系統(tǒng)服 務。這些功能是在公共語言運行庫上運行的托管代碼所固有的。至于安全性,取決于包括托管組件的來源(如internet.企業(yè)網(wǎng)絡或本地計算機)在內(nèi) 的一些因素,托管組件被賦予不同程度的信任。這意味著即使用在同一活動應用程序中,托 管組件既可能能夠執(zhí)行文件訪問操作、注冊表訪問操作或其他須小心使用的功能,也可能不 能夠執(zhí)行這些功能。運行庫強制實施代碼訪問安全。例如,用戶可以相信嵌入在web頁中的可執(zhí)行文件能夠 在屏幕上播

29、放動畫或唱歌,但不能訪問他們的個人數(shù)據(jù)、文件系統(tǒng)或網(wǎng)絡。這樣,運行庫的 安全性功能就使通過internet部署的合法軟件能夠具有特別豐富的功能。運行庫述通過實現(xiàn)稱為通用類型系統(tǒng)(cts)的嚴格的類型驗證和代碼驗證基礎結(jié)構(gòu)來 加強代碼可靠性。cts確保所有托管代碼都是可以自我描述的。各種microsoft和第三方語 言編譯器生成符合cts的托管代碼。這意味著托管代碼可在嚴格實施類型保真和類型安全的 同時使用其他托管類型和實例。此外,運行庫的托管環(huán)境述消除了許多常見的軟件問題。例如,運行庫自動處理對象布 局并管理對對象的引用,在不再使用它們時將它們釋放。這種自動內(nèi)存管理解決了兩個最常 見的應用程序

30、錯誤:內(nèi)存泄漏和無效內(nèi)存引用。運行庫還提高了開發(fā)人員的工作效率。例如,程序員可以用他們選擇的開發(fā)語言編寫應 用程序,卻仍能充分利用其他開發(fā)人員用其他語言編寫的運行庫、類庫和組件。任何選擇以 運行庫為目標的編譯器供應商都可以這樣做。以.net框架為目標的語言編譯器使得用該語 言編寫的現(xiàn)有代碼可以使用.net框架的功能,這大大減輕了現(xiàn)有應用程序的遷移過程的工 作負擔。盡管運行庫是為未來的軟件設計的,但是它也支持現(xiàn)在和以前的軟件。托管和非托管代 碼之間的互操作性使開發(fā)人員能夠繼續(xù)使用所需的com組件和dllo運行庫旨在增強性能。盡管公共語言運行庫提供許多標準運行庫服務,但是它從不解釋 托管代碼。一種

31、稱為實時(j1t)編譯的功能使所有托管代碼能夠以它在其上執(zhí)行的系統(tǒng)的本 機語言運行。同時,內(nèi)存管理器排除了出現(xiàn)零碎內(nèi)存的可能性,并增大了內(nèi)存引用區(qū)域以進 一步提高性能。最后,運行庫可由高性能的服務器端應用程序(如microsoft® sql server和internet 信息服務(iis)承載。此基礎結(jié)構(gòu)使您在享受支持運行庫宿主的行業(yè)最佳企業(yè)服務器的優(yōu) 越性能的同時,能夠使用托管代碼編寫業(yè)務邏輯。2net框架類庫.net框架類庫是一個與公共語言運行庫緊密集成的可重用的類型集合。該類庫是面向?qū)?象的,并提供您自己的托管代碼可從中導幽功能的類型。這不但使net框架類型易于使用, 而且還

32、減少了學習.net框架的新功能所需要的時間。此外,第三方組件可與.net框架中 的類無縫集成。例如,.net框架集合類實現(xiàn)一組可用于開發(fā)您自己的集合類的接口。您的集合類將 與.net框架中的類無縫地混合。正如您對面向?qū)ο蟮念悗焖M哪菢?.net框架類型使您能夠完成一系列常見編程任 務(包括諸如字符串管理、數(shù)據(jù)收集、數(shù)據(jù)庫連接以及文件訪問等任務)。除這些常見任務 之外,類庫述包括支持多種專用開發(fā)方案的類型。例如,可使用.net框架開發(fā)下列類型的 應用程序和服務:控制臺應用程序。腳本應用程序或寄宿的應用程序。 windows gui 應用程序(windows 窗體)。 asp.net應用程序。

33、 xml web services。 windows 服務。例如windows窗體類是一組綜合性的可覓用的類型,它們大犬簡化了 windows gut的 開發(fā)。如果要編寫asp. net web窗體應用程序,可使用web窗體類。3 客戶端應用程序開發(fā)客戶端應用程序在基于windows的編程中最接近于傳統(tǒng)風格的應用程序。這些是在桌面 上顯示窗口或窗體從而使用戶能夠執(zhí)行任務的應用程序類型??蛻舳藨贸绦虬ㄖT如字處 理器和電子表格等應用程序以及自定義的業(yè)務應用程序(如數(shù)據(jù)輸入工具、報告工具等等)。 客戶端應用程序通常使用窗口、菜單、按鈕和其他gui元素,并且它們可能訪問木地資源(如 文件系統(tǒng))和外

34、圍設備(如打印機)。另一種客戶端應用程序是作為web頁通過internet部署的傳統(tǒng)activex控件(現(xiàn)在 被托管windows窗體控件所替代)。此應用程序非常類似于其他客戶端應用程序:它在本機 執(zhí)行,可以訪問本地資源,并包含圖形元素。過去,開發(fā)人員將c/c+與microsoft基礎類(mfc)或應用程序快速開發(fā)(rad)環(huán) 境(如microsoft® visual basic®) 一起使用來創(chuàng)建這樣的應用程序。.net框架將這些現(xiàn) 有產(chǎn)品的特點合并到了單個且一致的開發(fā)環(huán)境中,該環(huán)境大大簡化了客戶端應用程序的開發(fā)。包含在.net框架中的windows窗體類旨在用于gui開

35、發(fā)。您可以輕松創(chuàng)建具有適應 多變的商業(yè)需求所需的靈活性的命令窗口、按鈕、菜單、工具欄和其他屏幕元素。例如,.net框架提供簡單的屬性以調(diào)整與窗體相關(guān)聯(lián)的可視屬性。某些情況下,基礎操 作系統(tǒng)不支持直接更改這些屬性,而在這些情況下,.net框架將自動重新創(chuàng)建窗體。這 是.net框架集成開發(fā)人員接口從而使編碼更簡單更一致的許多方法之一。和activex控件不同windows窗體控件具有對用戶計算機的不完全受信任的訪問權(quán) 限。這意味著二進制代碼或在本機執(zhí)行的代碼可訪問用戶系統(tǒng)上的某些資源(如gui元素和 受限制的文件訪問)而不能訪問或危害其他資源。由于具有代碼訪問安全性,許多曾經(jīng)需要 安裝在用戶系統(tǒng)上

36、的應用程序現(xiàn)在可以通過web安全地部署。您的應用程序可以在像web 頁那樣部署時實現(xiàn)木地應用程序的功能。4 服務器應用程序開發(fā)在托管領(lǐng)域中,服務器端應用程序是通過運行庫宿主實現(xiàn)的。非托管應用程序承載公共 語言運行庫,后者使您的自定義托管代碼可以控制服務器的行為。此模型在獲得主服務器的 性能和可伸縮性的同時提供給您公共語言運行庫和類庫的所有功能。asp.net 承載 xml web services血用程序windows.net 企業(yè)級 服務器承我運行庫和 托管代碼下面的插圖(圖2. 3.2)顯示在不同服務器環(huán)境中運行托管代碼的基本網(wǎng)絡架構(gòu)。在應 用程序邏輯通過托管代碼執(zhí)行時,服務器(如iis和

37、sql server)可執(zhí)行標準操作??蛻舳薬sp.net 承載 web窗體 應用程序(圖2. 3.2服務器端托管代碼)asp. net是使開發(fā)人員能夠使用.net框架開發(fā)基于web的應用程序的宿主環(huán)境。但 是,asp. net不止是一個運行庫宿主;它是使用托管代碼開發(fā)web站點和通過internet分 布的對象的完整結(jié)構(gòu)。web窗體和xml web services都將iis和asp. net用作應用程序的發(fā)布機制,并且兩者在.net框架中都具有支持類集合。xml web services作為基于web的技術(shù)的重要發(fā)展,是類似于常見web站點的分布式 服務器端應用程序組件。但是,與基于web

38、的應用程序不同,xml web services組件不具 有ui并且不以瀏覽器(如internet explorer和netscape navigeitor)為目標。相反, xml web services包含旨在供其他應用程序(如傳統(tǒng)的客戶端應用程序、基于web的應用 程序或者甚至是其他xmlweb services)使用的可重用的軟件組件。因此,xml web services 技術(shù)止迅速地將應用程序開發(fā)和部署推向高度分布式internet環(huán)境。如果您使用過asp技術(shù)的早期版本,您馬上就會注意到asp. net和web窗體提供的改 進。例如,您可以用支持.net框架的任何語言開發(fā)web窗體

39、頁。此外,您的代碼不再需要 與http文本共享同一個文件(盡管如果您愿意,代碼還可以繼續(xù)這樣做)。web窗體頁用 木機語言執(zhí)行,這是因為與所有其他托管應用程序一樣,它們充分利用運行庫。與此相對照, 非托管asp頁始終被寫成腳本并解釋o asp.net頁比非托管asp頁更快、更實用并且更易 于開發(fā),這是因為它們像所有托管應用程序一樣與運行庫進行交互。.net框架還提供類和工具的集合來幫助開發(fā)和使用xml web services應用程序。xml web services是基于soap (-種遠程過程調(diào)用協(xié)議)、xil (種可擴展的數(shù)據(jù)格式)和wsdl (web服務描述語言)這些標準生成的?;谶@

40、些標準生成.net框架的目的是為了提高與 非microsoft解決方案的互操作性。例如,.net框架sdk所包含的web服務描述語言工具可以查詢在web上發(fā)布的xml web services,分析它的wsdl描述,并產(chǎn)生c#或visual basic源代碼,您的應用程序 可以使用這些代碼而成為xml web services的客戶端。這些源代碼可以創(chuàng)建從類庫中的類 派生的類,這些類使用soap和xml分析處理所有基礎通訊。雖然您可以使用類庫來直接使 用xml web services, web服務描述語言工具和包含在sdk中的其他工具可以使您更加方 便地用.net框架進行開發(fā)。如果您開發(fā)和發(fā)

41、布自己的xml web services, .net框架為您提供了一組符合所有基礎 通訊標準(如soap、wsdl和xml)的類。使用這些類使您能夠?qū)⒆⒁饬性诜盏倪壿?上,而無需關(guān)注分布式軟件開發(fā)所需要的通訊基礎結(jié)構(gòu)。最后,與托管環(huán)境中的web窗體頁相似,您的xml web services將使用iis的可仲縮通訊以本機語言的速度運行。第四節(jié) 為什么會出現(xiàn)c# (c sharp)為什么會出現(xiàn)c# (c sharp) ?在過去的二十年里,c和c+已經(jīng)成為在商業(yè)軟件的開發(fā)領(lǐng)域中使用最廣泛的語言。它 們?yōu)槌绦騿T提供了十分靈活的操作,不過同時也犧牲了一定的效率。與諸如microsoft visu

42、al basic等語言相比,同等級別的c/c+應用程序往往需要更長時間來開發(fā)。由于c/c+語言的 復雜性,許多程序員都試圖尋找一種新的語言,希望能在功能與效率之間找到一個更為理想 的權(quán)衡點。目前有些語言,以犧牲靈活性的代價來提高效率。可是這些靈活性正是c/c+程序員所 需要的。這些解決方案對編程人員的限制過多(如屏蔽一些底層代碼控制的機制),其所提供 的功能難以令人滿意。這些語言無法方便地同早先的系統(tǒng)交互,也無法很好地和當前的網(wǎng)絡 編程相結(jié)合。對于c/c+用戶來說,最理想的解決方案無疑是在快速開發(fā)的同吋又可以調(diào)用底層平臺 的所有功能。他們想要一種和最新的網(wǎng)絡標準保持同步并且能和已有的應用程序良

43、好整合的 環(huán)境。另外,一些c/c+開發(fā)人員述需要在必要的時候進行一些底層的編程。微軟推出c#, c# (c sharp)是微軟對這一問題的解決方案。c#是一種最新的、面向?qū)ο?的編程語言。它使得程序員可以快速地編寫各種基于microsoft .net平臺的應用程序, microsoft .net提供了一系列的工具和服務來最大程度地開發(fā)利用計算與通訊領(lǐng)域。第五節(jié)c#的特點2000年6月,microsoft公司向外界宣布了 c#語言,它是專門設計用于為microsoft的.net 應用開發(fā)體系結(jié)構(gòu)服務的。從以往的開發(fā)經(jīng)驗中可以知道,如果要開發(fā)一門新的計算機語言, 就要解決那些用c或c+語言開發(fā)時常

44、遇到的傳統(tǒng)問題,如內(nèi)存泄漏、多線程應用程序?qū)懭?困難、靜態(tài)鏈接、非法指針調(diào)用、復雜的多重繼承規(guī)則等等。為了減少語言學習過程中的彎 路,還應使設計出的語言看起來與c和c+盡量相似。6年前,sun公司開發(fā)了與平臺無關(guān) 的java語言,它增加了垃圾回收,集成了線程間的互鎖、動態(tài)鏈接等概念,同時拋開了指針 概念,只允許單繼承,并且還引入了接口的概念。那么c#對此類問題是如何解決的呢?又 或者說c#有什么特點呢?c#的特點c#使得c+程序員可以高效的開發(fā)程序,而絕不損失c/c+原有的強大的功能。因為這 種繼承關(guān)系,c#與c/c+具有極大的相似性,熟悉類似語言的開發(fā)者可以很快的轉(zhuǎn)向c#。1效率與安全性新興

45、的網(wǎng)絡經(jīng)濟迫使商務企業(yè)必須更加迅速的應對競爭的威脅。開發(fā)者必須不斷縮短 開發(fā)周期,不斷推出應用程序的新版本,而不僅僅是開發(fā)一個“標志性”的版本。c#在設計時就考慮了這些問題。它使開發(fā)者用更少的代碼做更多的事,同時也不易出錯。2支持現(xiàn)有的網(wǎng)絡編程新標準新的應用程序開發(fā)模型意味著越來越多地解決方案依賴于新出現(xiàn)的網(wǎng)絡標準,例 如html, xml, soap等。現(xiàn)存的開發(fā)工具往往都是早于internet出現(xiàn)的,或者是在我們 所熟知的網(wǎng)絡還處于孕育期時出現(xiàn)的。所以,它們一般無法很好地支持最新的網(wǎng)絡技術(shù)。c#程序員可以在microsoft .net平臺上事半功倍的構(gòu)建應用程序的擴展框架。c#包含了 內(nèi)置

46、的特性,使任何組件可以輕松轉(zhuǎn)化為xml網(wǎng)絡服務,通過internet被任何操作系統(tǒng)上運 行的任何程序調(diào)用。更突出的是,xml網(wǎng)絡服務框架可以使現(xiàn)有的xml網(wǎng)絡服務對程序員來說就和c#對彖 一樣。這樣,程序員就可以方便地使用他們已有的面向?qū)ο蟮木幊碳记蓙黹_發(fā)利用現(xiàn)有的 xml網(wǎng)絡服務。還有一些精細的特性,使得c#成為一流的網(wǎng)絡編程工具。例如,xml正逐漸成為在網(wǎng) 絡上傳輸結(jié)構(gòu)化數(shù)據(jù)的標準。這種數(shù)據(jù)集合往往非常小。為提高性能,c#允許把xml數(shù)據(jù) 直接映射到struct數(shù)據(jù)類型,而不是classo這樣對處理少量的數(shù)據(jù)非常有效。3消除大量程序錯誤即使是專家級的c+程序員也常會犯一些最簡單的小錯誤比如

47、忘了初始化變 量,但往往就是這些小錯誤帶來了難以預料的問題,有些甚至需耍很長時間來尋找和解決。 一旦一個程序作為產(chǎn)品來使用,就算最簡單的錯誤糾正起來也可能要付出極其昂貴的代價。c#的現(xiàn)代化設計能夠消除很多常見的c+編程錯誤。例如:1,資源回收減輕了程序員內(nèi)存管理的負擔。2, c#中變量由環(huán)境自動初始化。3, 變量是類型安全的。這樣,程序員編寫與維護那些解決復雜商業(yè)問題的程序就更方便了。4對版本的更新提供內(nèi)在的支持降低了開發(fā)成本更新軟件組件是一項很容易出錯的工作,因為代碼的修改可能無意間改變原有程序 的語義。為協(xié)助開發(fā)者進行這項工作,c#為版本的更新提供內(nèi)在的支持。例如,方法重載必 須顯式聲明。

48、這樣可以防止編碼錯誤,保證版本更新的靈活性。還有一個相關(guān)的特性就是對 接口和接口繼承的內(nèi)在支持。這些特性使得c#可以開發(fā)復雜的框架并且隨著吋間不斷發(fā)展更 新它??傮w來說,這些特性使得開發(fā)程序項目的后續(xù)版本的過程更加健壯,從而減少后續(xù) 版本的開發(fā)成本。5商業(yè)過程和軟件實現(xiàn)的更好對應企業(yè)的商業(yè)計劃要付諸現(xiàn)實,必須在抽象的商業(yè)過程和實際的軟件實現(xiàn)之間建立緊 密地對應。不過大多數(shù)語言都很難做到這點。例如,如今的程序員們一般使用代碼注釋來注 明哪個類對應于某個抽彖的商業(yè)對彖。c#語言允許類型定義的,擴展的元數(shù)據(jù)。這些元數(shù)據(jù)可以應用于任何對象。項目構(gòu) 建者可以定義領(lǐng)域特有的屬性并把他們應用于任何語言元素類

49、,接口等等。然后,開發(fā)人員 可以編程檢查每個元素的屬性。這樣,很多工作都變得方便多了,比如編寫一個小工具來自 動檢查每個類或接口是否被止確定義為某個抽象商業(yè)對象的一部分,或者只是創(chuàng)建一份基于 對彖的領(lǐng)域特有屬性的報表。定制的元數(shù)據(jù)和程序代碼z間的緊密對應有助于加強程序的預 期行為和實際實現(xiàn)的之間的對應關(guān)系。6擴展交互性作為一種自動管理的,類型安全的環(huán)境,c#適合于大多數(shù)企業(yè)應用程序。但實際的 經(jīng)驗表明有些應用程序仍然需要一些底層的代碼,要么是因為基于性能的考慮,要么是因 為要與現(xiàn)有的應用程序接口兼容。這些情況可能會迫使開發(fā)者使用c+,即使他們本身寧愿 使用更高效的開發(fā)環(huán)境。c#采用以下對策來解

50、決這一問題: 內(nèi)置對組建對彖模型(com)和基于windows?的api的支持; 允許有限制地使用純指針(native pointer)o在c#中,每個對象都自動生成為一個com對象。開發(fā)者不再需要顯式的實現(xiàn)iunknown 和其他com接口這些功能都是內(nèi)置的.類似的,c#可以調(diào)用現(xiàn)有的com對象,無論它是由 什么語言編寫的.c#包含了一個特殊的功能,使程序可以調(diào)用任何純apl在一段特別標記的代碼中,開 發(fā)者可以使用指針和傳統(tǒng)c/c+特性,如手工的內(nèi)存管理和指針運算。這是其相對于其它環(huán) 境的極大優(yōu)勢。這意味著c#程序員可以在原有的c/c+代碼的基礎上編寫程序,而不是徹底 放弄那些代碼。無論是支

51、持com還是純api的調(diào)用,都是為了使開發(fā)者在c#環(huán)境中直接擁有必要的強 大功能。結(jié)論c#是一種現(xiàn)代的面向?qū)ο笳Z言。它使程序員快速便捷地創(chuàng)建基于microsoft .net平臺的 解決方案。這種框架使c#組件可以方便地轉(zhuǎn)化為xml網(wǎng)絡服務,從而使任何平臺的應用程 序都可以通過internet調(diào)用它。c#增強了開發(fā)者的效率,同時也致力于消除編程中可能導致嚴重結(jié)果的錯誤。c#使 c/c+程序員可以快速進行網(wǎng)絡開發(fā),同時也保持了開發(fā)者所需要的強大性和靈活性。第六節(jié)c sharp的一些絕技c#是由c和c+派生而來的一種“簡單、流行、面向?qū)﹀?、類型安全”的程序設計語言, c#意在綜合visual bas

52、ic的高效率和c+的強人功能。那c#是如何綜合visual basic和c+ 的呢?而且除了 visual basic和c+的特點,c#是否還有別的特點呢?答案是肯定的:1快速應用開發(fā)(rad)功能支持快速開發(fā)(rapid application development)可以說是口前開發(fā)語言最為重要的一大功 能,也正是c/c+的致命傷。網(wǎng)絡吋代應用系統(tǒng)的開發(fā)必須按照網(wǎng)絡吋代的速度來進行,支 持快速開發(fā)可以使得開發(fā)人員的開發(fā)效率倍增,從而使得他們可以從繁重的重復性勞動中解放岀來。c#的rad功能主要表現(xiàn)在例如垃圾收集、指代等眾多特性上。垃圾收集機制將減輕開 發(fā)人員對內(nèi)存的管理負擔,而指代功能更是

53、可以讓開發(fā)者不經(jīng)過內(nèi)部類就調(diào)用函數(shù)。利用c# 的這些功能,可以使開發(fā)者通過較少的代碼來實現(xiàn)更強大的應用程序,并口能夠更好地避免 錯誤發(fā)生,從而縮短了應用系統(tǒng)的開發(fā)周期。2語言的自由性用c#編寫的程序能最大程度地和任何支持.net的語言互相交換信息。能夠繼承和使用 任何語言所編寫的程序可以稱得上是知識的繼承,這樣做的好處是節(jié)省了大量的工作,你不 必把cobol等語言強行改成另一種語言,.net讓各種語言真正地互相交流了。c#和其他.net語言有著最好的協(xié)作,這點對開發(fā)人員菲常重要。全球從事編寫軟件的人 當中,大約有50%以visual basic作為基本的編程工具,在跨入.net編程時代的時候,

54、這些 人輕松地使用了.net的vb開發(fā)web上的應用程序,想想以后你可以和你的那些只懂vb的 同事真正在一起共同開發(fā).net的應用程序時,還有比這更讓人輕松和高興的事情嗎?3強大的web服務端組件在c#的web編程屮,最讓人興奮的是web服務端的組件,它們不僅包括傳統(tǒng)組件,還 包括那些能夠自動連接五花八門服務的可編程組件,你可以用c#編寫自己的服務器端組件, 服務器端組件和標準的html提供的服務自然是不一樣的,使用它們可以更自由、更容易地 進行數(shù)據(jù)綁定。不久,那些視頻服務器組件也很快會出現(xiàn),有了這些強大的組件,我們可以 設計出功能更加強勁的企業(yè)級分布式應用系統(tǒng)。4支持跨平臺隨著互聯(lián)網(wǎng)應用程序

55、的應用越來越廣,人們逐漸意識到由于網(wǎng)絡系統(tǒng)錯綜復雜,使用的 硬件設備和軟件系統(tǒng)各不相同,開發(fā)人員所設計的應用程序必須具有強大的跨平臺性。c#編 寫的應用程序就具有強大的跨平臺性,這種跨平臺性也包括了 c#程序的客戶端可以運行在不同類型的客戶端上,比如pda、手機等非pc裝置。5與xml的融合由于xml技術(shù)真止融入到了.net和c#之中,c#的編程變成了真止意義的網(wǎng)絡編程, 甚至可以說.net和c#是專為xml而設計,使用c#的程序員可以輕松用c#內(nèi)含的類來使用 xml技術(shù)。就這方面而言,目前c#提供給了程序員更多的白由和更好的性能來使用xmlo6對c+的繼承c#繼承并保留了 c+強大的功能,例

56、如,c#保留了類型安全的檢測和重載功能,c#述 提供了一些新功能取代了一些原來的ansi c預處理程序的功能,提高了語言的類型安全等 安全性。了解了 c#如此眾多的特性,你是不是也感覺心動呢!身懷絕技的c#將在未來正式步入征程,與我們的程序開發(fā)人員攜手共進!沒有最好只有更好c#將真正成為新世紀的新語言。有人現(xiàn)在就在討論c#和java的性能優(yōu)劣,其實這并沒有什么實際意義,因為c#和java都將隨著吋代的發(fā)展而繼續(xù)發(fā)展,并不斷加以改進以適應 新的開發(fā)需求,這正印證了一句著名的廣告詞:“沒有最好,只有更好s不久的未來,c#的應用也將如同java-樣,飛速向數(shù)字電視、機頂盒、汽車、pda、移 動電話、

57、呼機,甚至電冰箱等其他非pc裝置中進行推廣。總之,只有在激烈的良性競爭下,我們才能更快、更好地促進應用開發(fā)技術(shù)的發(fā)展,才 能更加快速地推動it行業(yè)的人發(fā)展。不管怎樣,c#的確值得我們關(guān)注!第三章用c#實現(xiàn)對xml的編輯前而已經(jīng)講到,本軟件有兩個難點:1、要用treeview顯示xml文檔的結(jié)構(gòu),就要能讀取xml文檔的結(jié)構(gòu),再在treeview屮顯示出來。2、存儲文件時,能讀取treeview的結(jié)構(gòu),把它存儲成xml文件。下面就看一下木軟件是如何解決第一個難點的: 先看一看下面的addtreenode函數(shù):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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論