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

下載本文檔

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

文檔簡介

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

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

3、ml處理函數(shù)處理,而未解析的字符數(shù)據(jù)被當(dāng)成原始文本不被處理,例如 <name>delfan</name>, <name>和v/name>就是標(biāo)記,而delfan是原始文本。標(biāo)記用來描述 文件的存儲結(jié)構(gòu)(實(shí)體)和邏輯結(jié)構(gòu)(元素)oxml語法實(shí)際描述了用來定義xml文件的結(jié)構(gòu)和 布局的構(gòu)造,也包含了約束關(guān)系,而xml需要xml處理函數(shù)來處理,所以必須遵守嚴(yán)格的 語法。一個簡單的例子:< ?xml version二t .0” encoding=,gb2312,' ?>v我的電話木v記錄v姓名delfan</姓名v電子郵件>pr

4、ogramer21 </電子郵件</記錄v記錄v姓名某某v/姓名<電了郵件>ab.c</電了郵件</記錄v/我的電話本一個xml文件只能有一個根,而且,xml是基于uncode編碼的,標(biāo)記都可以是漢字.還 有,ie本身就是個xml的解析器,雖然不很完善??梢詫⒁陨洗a寫到一個文本文件中, 例如文件名為test.xml,雙擊,ie就可以把這個xml文檔解析成一棵樹并按層次顯示出來:第三節(jié)xml的術(shù)語xml文檔:xml標(biāo)識語言寫成的xml原代碼文件,實(shí)際上是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標(biāo)識創(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文檔的最小單位,由標(biāo)識來定義,包括其中的內(nèi)容,如經(jīng)手人張三v/ 經(jīng)手人,而且要由自己創(chuàng)建2tag(標(biāo)識)標(biāo)識是用來定義元素的。在xml中,標(biāo)識必須成對出現(xiàn),將數(shù)據(jù)包圍在中間。標(biāo)識的 名稱和元素的名稱是一樣的。例如: 經(jīng)手人張三/經(jīng)手人,其中v經(jīng)手人 就是標(biāo)

7、識。3. attribute(屬性)例如紙張規(guī)格=”b5“單位二”木”中”規(guī)格”和”單位”就是屬性,屬性是對標(biāo)識進(jìn)一步的描 述和說明,一個標(biāo)識可以有多個屬性,每個屬性都有它自己的名字和數(shù)值,是標(biāo)識的一部分, 也是自己定義的,但盡量不要用屈性,而是使用子元素,例如上而元素可以改成v紙張v規(guī)格b5v/規(guī)格v單位本v/單位200v紙張,這么做的原因是屬性不易擴(kuò)充。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文檔,元素和標(biāo)簽使用是否正確。dtd文檔 包含:元素的定義規(guī)則,元素間關(guān)系的定義規(guī)則,元素可使用的屬性,可使用的實(shí)體或符號 規(guī)則。dtd文件也是一個ascii的文木文件,后綴名為.dtdo實(shí)際上是xml文件的抽象出 來的模板。但建立xml文檔并不一定需要dtd文件。6well-formed xml(良好格式的 xml)遵守xml語法規(guī)則,并遵守xml規(guī)范的文檔稱z為”良好格式“。如果你所有的標(biāo)識都 嚴(yán)格遵守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é)點(diǎn),需要對treeview作一些限制,另外treeview控件只是將xml文檔的 樹形結(jié)構(gòu)顯示出來,但xml文檔屮各個節(jié)點(diǎn)的屬性值和文本值不能在treeview中

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

41、布自己的xml web services, .net框架為您提供了一組符合所有基礎(chǔ) 通訊標(biāo)準(zhǔn)(如soap、wsdl和xml)的類。使用這些類使您能夠?qū)⒆⒁饬性诜?wù)的邏輯 上,而無需關(guān)注分布式軟件開發(fā)所需要的通訊基礎(chǔ)結(jié)構(gòu)。最后,與托管環(huán)境中的web窗體頁相似,您的xml web services將使用iis的可仲縮通訊以本機(jī)語言的速度運(yùn)行。第四節(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+應(yīng)用程序往往需要更長時間來開發(fā)。由于c/c+語言的 復(fù)雜性,許多程序員都試圖尋找一種新的語言,希望能在功能與效率之間找到一個更為理想 的權(quán)衡點(diǎn)。目前有些語言,以犧牲靈活性的代價來提高效率??墒沁@些靈活性正是c/c+程序員所 需要的。這些解決方案對編程人員的限制過多(如屏蔽一些底層代碼控制的機(jī)制),其所提供 的功能難以令人滿意。這些語言無法方便地同早先的系統(tǒng)交互,也無法很好地和當(dāng)前的網(wǎng)絡(luò) 編程相結(jié)合。對于c/c+用戶來說,最理想的解決方案無疑是在快速開發(fā)的同吋又可以調(diào)用底層平臺 的所有功能。他們想要一種和最新的網(wǎng)絡(luò)標(biāo)準(zhǔn)保持同步并且能和已有的應(yīng)用程序良

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

評論

0/150

提交評論