版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 引言</b></p><p> 微軟公司近期推出了C#程序設(shè)計(jì)語(yǔ)言,引起業(yè)界的普遍關(guān)注。為什么有了VB,VC++,業(yè)界又公認(rèn)了Java,還要推出一個(gè)新的語(yǔ)言?C#能代替VB,VC++,成為微軟統(tǒng)一的語(yǔ)言嗎?我們將以多大的關(guān)注去學(xué)習(xí)C#?這對(duì)于業(yè)界第一線軟件開發(fā)者,的確是個(gè)問(wèn)題。我們已被各種描述語(yǔ)言(Jscript,VBScript),置標(biāo)語(yǔ)言(XML, eXM
2、L,HTML,SGML),模型語(yǔ)言(UML),體系結(jié)構(gòu)描述語(yǔ)言(ADL)弄得不堪重負(fù),偏偏最直接表述軟件的編程語(yǔ)言又出了一個(gè)C#,殊知,編程語(yǔ)言是專業(yè)程序員“找飯碗”的工具。</p><p> 眾所周知,經(jīng)常換語(yǔ)言滋味是不好受。這是因?yàn)闊o(wú)論什么語(yǔ)言既是表達(dá)工具也是思維工具,習(xí)慣了某種語(yǔ)言的表達(dá)也就習(xí)慣了這種語(yǔ)言的思維范型。一旦習(xí)慣,改起來(lái)就不舒服。幾年前,從C到C++,不少人編程序依然是DFD圖,結(jié)構(gòu)圖,過(guò)程模
3、塊,最后湊出對(duì)象,以C++表示。直到相當(dāng)一段時(shí)間之后,才理解到OO的開發(fā)好處。一遇到問(wèn)題,首先想到的是什么是對(duì)象,她和對(duì)象如何交互,直接用C++表達(dá)對(duì)象。</p><p> 一個(gè)編程語(yǔ)言不斷帶來(lái)新的思維范形式好學(xué)的,但是學(xué)不到軟件開發(fā)新技術(shù)。正如ALGOL,C程序員學(xué)習(xí)FORTRAN和Pascal一樣。僅僅學(xué)會(huì)了一種新的表示法,從C++到C#卻不是這樣,C#帶來(lái)新的編程范型,即從面向?qū)ο缶幊痰絎eb服務(wù)編程。這
4、中間有這個(gè)業(yè)界巨大的轉(zhuǎn)變:從分布式客戶/服務(wù)器計(jì)算轉(zhuǎn)向“軟件就是服務(wù)”的網(wǎng)絡(luò)計(jì)算。后者把資源共享,軟件重用又提成到一個(gè)新的階段,租賃,下載在Internet上進(jìn)行。在ASP(應(yīng)用服務(wù)提供者)提供的各式各樣服務(wù)基礎(chǔ)上,業(yè)務(wù)系統(tǒng)的應(yīng)用開發(fā)者幾乎不用編制,維護(hù)(升級(jí),糾錯(cuò))軟件就可以快速交付十分復(fù)雜的系統(tǒng)。而ASP用C#開發(fā)的Web服務(wù)也使大量的使用其它ASP提供的服務(wù)(當(dāng)然也包括以Java,甚至C++提供的服務(wù)構(gòu)件)。</p>
5、<p> 微軟公司提供的Microsoft.NET就是為了完善新一代網(wǎng)絡(luò)計(jì)算環(huán)境,而C#是其中的核心工具之一,簡(jiǎn)單說(shuō)是表達(dá)Web服務(wù)軟件最方便的工具。然而微軟在開發(fā)推行C#時(shí),又是非常穩(wěn)健的。原因是網(wǎng)絡(luò)計(jì)算還在縱深發(fā)展,目前成功的應(yīng)用,如電子商務(wù),企業(yè)門戶,信息檢索不過(guò)是網(wǎng)絡(luò)計(jì)算最早期的成果,C#還在不斷試探中完善。</p><p> 本文用C#實(shí)現(xiàn)XML編輯器,XML是1998年2月在WWW(W
6、3C:World Wide Web Consortium)的不懈推動(dòng)之下持續(xù)向前發(fā)展。起初,許多開發(fā)者還嘲笑XML,認(rèn)為它只不過(guò)是編寫腳本的新方法而已。但那些常用數(shù)據(jù)庫(kù)進(jìn)行管理和開發(fā)的人員很快就意識(shí)到XML的潛力之所在;XML會(huì)成為不需要任何專門的方法,就能為團(tuán)體之間提供數(shù)據(jù)服務(wù)的一種新的途徑。</p><p> 開發(fā)員開始把XML的一些片斷融入到他們的桌面應(yīng)用程序中,有的用來(lái)存儲(chǔ)配置數(shù)據(jù),有的作為輸出文件。隨
7、著時(shí)間的推移,他們開始把XML放到Internet上,使數(shù)據(jù)庫(kù)之間開始通過(guò)XML進(jìn)行通信。許多企業(yè)發(fā)現(xiàn),得益于XML,他們對(duì)外部數(shù)據(jù)的數(shù)據(jù)操作變得更加輕松了。</p><p> 不過(guò)開發(fā)人員并不是唯一發(fā)現(xiàn)XML潛力的群體:還有微軟和那些讓XML成為.NET Framework基礎(chǔ)的人士。. NET的目標(biāo)是:在桌面應(yīng)用程序與在線應(yīng)用程序之間建立聯(lián)系;使其對(duì)象之間的通信變得更為方便。</p><
8、p><b> 第一章XML簡(jiǎn)介</b></p><p> 第一節(jié) XML產(chǎn)生的背景</p><p> 可擴(kuò)展標(biāo)記語(yǔ)言Extensive Markup Language--簡(jiǎn)稱XML,它同HTML(即超文本標(biāo)記語(yǔ)言--Hyper Text Markup Language)一樣,都是來(lái)自Standard Generalized Markup Language,
9、即標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言,簡(jiǎn)稱SGML。SGML是一種用標(biāo)記來(lái)描述文檔資料的通用語(yǔ)言,它包含了一系列的文檔類型定義(簡(jiǎn)稱DTD),DTD中定義了標(biāo)記的含義,因而SGML的語(yǔ)法是可以擴(kuò)展的。SGML十分龐大,既不容易學(xué),用不容易使用,在計(jì)算機(jī)上實(shí)現(xiàn)也十分困難。鑒于這些因素,Web的發(fā)明者--歐洲核子物理研究中心的研究人員根據(jù)當(dāng)時(shí)(1989年)計(jì)算機(jī)技術(shù)的能力,提出了HTML。</p><p> HTML只使用SGML中
10、很小一部分標(biāo)記。為了便于在計(jì)算機(jī)上實(shí)現(xiàn),HTML規(guī)定的標(biāo)記是固定的,既HTML語(yǔ)法是不擴(kuò)展的,它不需要包含DTD。HTML這種固定的語(yǔ)法是它易學(xué)易用,在計(jì)算機(jī)上開發(fā)的瀏覽器也十分容易。正是由于HTML的簡(jiǎn)單性,使Web技術(shù)從計(jì)算機(jī)界走向全社會(huì),Web的發(fā)展如日中天。</p><p> 近年來(lái),隨著的Web應(yīng)用越來(lái)越廣泛和深入,人們覺得HTML不夠用了,HTML過(guò)去簡(jiǎn)單得愈發(fā)嚴(yán)重阻礙了用它來(lái)表現(xiàn)復(fù)雜的形式。盡管H
11、TML推出了一個(gè)又一個(gè)新版本,已經(jīng)有了腳本.表格等表達(dá)功能,但始終滿足不了不斷增長(zhǎng)的需求。另一方面,這幾年來(lái)計(jì)算機(jī)技術(shù)的發(fā)展也十分迅速,已經(jīng)可以實(shí)現(xiàn)比當(dāng)初發(fā)明創(chuàng)造HTML時(shí)復(fù)雜得多的Web瀏覽器,所以開發(fā)一種新的Web頁(yè)面語(yǔ)言是十分必要的,也是可能的。</p><p> 有人建議直接使用SGML作為Web語(yǔ)言,這固然能解決HTML遇到的困難。但是SGML太龐大了,用戶學(xué).用不方便不說(shuō),要全面實(shí)現(xiàn)SGML的瀏覽器
12、就十分困難,于是自然會(huì)想到僅使用SGML的子集,使新的語(yǔ)言既方便實(shí)用又實(shí)現(xiàn)容易。正是在這種形勢(shì)下,標(biāo)準(zhǔn)化組織W3C建議使用一種精簡(jiǎn)的SGML版本--XML應(yīng)運(yùn)而生了。它繼承了SGML重要的三個(gè)特性:可擴(kuò)展性,結(jié)構(gòu)化,有效性,成為表示結(jié)構(gòu)化信息的一種標(biāo)準(zhǔn)文本格式[5]。 </p><p> 第二節(jié)XML的基本內(nèi)容</p><p> XML文檔:XML標(biāo)識(shí)語(yǔ)言寫成的XML原代碼文件,實(shí)際上
13、是ASCII的純文本文件,可以用Notepad創(chuàng)建和修改。XML文檔的后綴名為.XML,用IE5.0以上瀏覽器可以直接打開并顯示成樹狀結(jié)構(gòu),看到的就是XML文檔.一般來(lái)說(shuō),XML文檔包含三個(gè)部分:</p><p> a一個(gè)XML文檔聲明 : <?xml version="1.0"?></p><p> b 一個(gè)關(guān)于文檔類型的定義 : <!DOCTY
14、PE data SYSTEM "data.dtd">如不需要可以省略</p><p> c. 用XML標(biāo)識(shí)創(chuàng)建的內(nèi)容. </p><p><b> 舉例:</b></p><p> <?xml version="1.0"?></p><p><b>
15、; <books></b></p><p><b> <book></b></p><p> <author>Carson</author></p><p> <price format="dollar">31.95</price>&
16、lt;/p><p> <pubdate>05/01/2001</pubdate></p><p><b> </book></b></p><p><b> <pubinfo></b></p><p> <publisher>MSPre
17、ss</publisher></p><p> <state>WA</state></p><p> </pubinfo></p><p><b> </books> </b></p><p> 文檔對(duì)象模型 (DOM) 類是 XML 文檔的內(nèi)存中表示形
18、式下圖顯示將此 XML 數(shù)據(jù)讀入 DOM 結(jié)構(gòu)中時(shí)內(nèi)存的構(gòu)造。 </p><p> 圖1.1 XML文檔的樹形結(jié)構(gòu)</p><p> 下面是XML中的有關(guān)概念:</p><p> (1)Element(元素) </p><p> 元素是組成XML文檔的最小單位,由標(biāo)識(shí)來(lái)定義,包括其中的內(nèi)容,如<author>Carson&
19、lt;/author>,而且要由自己創(chuàng)建。元素可以包含元素,也可以包含通常只用于文檔中的文本的那些詞和句子。在XML中,這些文本叫做文檔的字符數(shù)據(jù)。</p><p> 標(biāo)記語(yǔ)言方面的專業(yè)人員把他稱作為文檔的樹型結(jié)構(gòu)。包含所有元素的元素叫根元素。根元素所直接包含的那些元素叫做子元素。它們也可以包含它們自己的子元素。如果元素包含子元素,我們叫他熟知。如果元素只包含字符數(shù)據(jù),我們叫它樹葉</p>
20、<p> (2)Attribute(屬性)</p><p> 元素還可以具有屬性,屬性是一種將特征或特性賦給文檔元素的一種方式。例如:<price format="dollar">31.95</price>其中format就是屬性的名稱,dollar是屬性值。屬性值用單引號(hào)或雙引號(hào)包圍。</p><p> (3)Declarati
21、on(聲明) </p><p> 所有XML文檔的第一行都有一個(gè)L聲明表示是一個(gè)XML文檔,并指出遵循哪個(gè)版本的規(guī)范:<?xml version="1.0"?>說(shuō)明是1.0版本的XML文檔。</p><p> (4)Entity(實(shí)體)</p><p> 文檔被定義為一個(gè)字符序列。一個(gè)處理器自始至終處理這個(gè)序列。提供了一種機(jī)制,
22、可以使文本非線性的組織,也就是以多片的形式組織,語(yǔ)法分析器可以重新變成線性結(jié)構(gòu)。</p><p> “文本片”這個(gè)概念叫做實(shí)體。一個(gè)實(shí)體可以小到一個(gè)字符,大到可以大到一本書的所有自負(fù)。</p><p> 每個(gè)實(shí)體都有名字。在文檔中,可以通過(guò)插入實(shí)體應(yīng)用來(lái)引用實(shí)體。處理器將用實(shí)體替換相應(yīng)的實(shí)體引用,這叫做文本替換。元素是描述文檔的邏輯結(jié)構(gòu),而實(shí)體是描述組成文檔的那些字節(jié)塊的位置,我們把它
23、稱作文檔的物理結(jié)構(gòu)。</p><p> (5)DTD(文件類型定義)。</p><p> DTD是由元素類型,屬性,符號(hào)和實(shí)體等一系列定義組成的一個(gè)集合。他明確規(guī)定在文檔中哪些是合法的,以及在哪些地方是合法的。一個(gè)文檔可以在他的文檔類型中說(shuō)明它符合哪種特定的DTD。(文檔類型通常所寫成,因?yàn)槭鬃帜缚s寫將和文檔類型定義類型相同)。</p><p> DTD文檔包
24、含:元素的定義規(guī)則,元素間關(guān)系的定義規(guī)則,元素可使用的屬性,可使用的實(shí)體或符號(hào)規(guī)則。DTD文件也是一個(gè)ASCII的文本文件,后綴名為.dtd。</p><p> 一些文檔并沒(méi)有相應(yīng)的文檔類型說(shuō)明,但這并不是說(shuō)它們就不符合相應(yīng)的文檔類型,而是說(shuō)它們沒(méi)有聲明符合某種定義的文檔類型定義</p><p> (6)Shape completely but legality(形式完備而合法)<
25、;/p><p> 在XML中,“在正確的地方使用正確的單詞”叫做合法。它同文檔類型密切相關(guān),所謂一個(gè)文檔和法是指在文檔類型說(shuō)明中他聲稱符合某種DTD,并且事實(shí)上也符合該DTD。那些沒(méi)有文檔類型說(shuō)明的文檔并不是真正的非法,他們沒(méi)有違反他們的DTD,但也不能因?yàn)闆](méi)有辦法確定它們違反DTD而說(shuō)明他們是違法的。</p><p> 在創(chuàng)建一個(gè)形式完備而不合法的文檔之前,應(yīng)該仔細(xì)考慮清楚。如果該文擋類
26、型只有唯一的一個(gè)文檔并且文檔很小,那麼文檔形式完備也許就夠了。但如果它是信息系統(tǒng)(即是很小)的一部分或是一個(gè)大文擋,那就應(yīng)該為他寫一個(gè)DTD,并且應(yīng)經(jīng)常查看文檔是否合法。[1]</p><p> 第三節(jié) XML語(yǔ)法基礎(chǔ)</p><p> 基本構(gòu)成單元叫實(shí)體(entity),包含解析的或未解析的數(shù)據(jù).解析的數(shù)據(jù)由字符構(gòu)成,可以看成是標(biāo)記,由XML處理函數(shù)處理,而未解析的字符數(shù)據(jù)被當(dāng)成原始
27、文本不被處理,例如<name>Delfan</name>,<name>和</name>就是標(biāo)記,而Delfan是原始文本。標(biāo)記用來(lái)描述文件的存儲(chǔ)結(jié)構(gòu)(實(shí)體)和邏輯結(jié)構(gòu)(元素)。XML語(yǔ)法實(shí)際描述了用來(lái)定義XML文件的結(jié)構(gòu)和布局的構(gòu)造,也包含了約束關(guān)系,而XML需要XML處理函數(shù)來(lái)處理,所以必須遵守嚴(yán)格的語(yǔ)法。</p><p><b> 一個(gè)簡(jiǎn)單的例子:&
28、lt;/b></p><p> < ?xml version="1.0" encoding="GB2312" ?></p><p><b> <我的電話本></b></p><p><b> <記錄></b></p>&l
29、t;p> <姓名>Delfan</姓名></p><p> <電子郵件>programer@21cn.com</電子郵件></p><p><b> </記錄></b></p><p><b> <記錄></b></p>&
30、lt;p> <姓名>某某</姓名></p><p> <電子郵件>a@b.c</電子郵件></p><p><b> </記錄></b></p><p><b> </我的電話本></b></p><p> 一個(gè)
31、XML文件只能有一個(gè)根,而且,XML是基于UNCODE編碼的,標(biāo)記都可以是漢字.還有,IE本身就是個(gè)XML的解析器,雖然不很完善。可以將以上代碼寫到一個(gè)文本文件中,例如文件名為test.xml,雙擊,IE就可以把這個(gè)XML文檔解析成一棵樹并按層次顯示出來(lái)。[8]</p><p> 第四節(jié) XML編輯器</p><p> 現(xiàn)今的XML編輯器有多種多樣,例如XML Explorer(XML
32、 Edition) 2.6.7,</p><p> XML Spy 5.0, XML Blueprint 2.2 , Bonodi XML Edition 2.0, XML DB Query簡(jiǎn)體中文版,Easy XML, XML Generate 1.0等等。</p><p> Bonodi XML Editor 2.0 </p><p> 一個(gè)適用于Mic
33、rosoft Windows 98/Me/NT4/2000/XP的多語(yǔ)言XML編輯器。你可以用不同的語(yǔ)言編輯XML文檔,比如說(shuō)英語(yǔ)、日語(yǔ)、漢語(yǔ)、韓語(yǔ)、西班牙語(yǔ)、法語(yǔ)、德語(yǔ)、俄語(yǔ)、希臘語(yǔ)、泰語(yǔ)、希伯萊語(yǔ)、阿拉伯語(yǔ)以及其它任何Windows所支持的語(yǔ)言</p><p><b> Easy XML</b></p><p> XML編輯/檢查工具 – Easy XML,支
34、持 QXML 查詢語(yǔ)言的結(jié)點(diǎn)選擇,文件可以以樹狀結(jié)構(gòu)顯示,XSLT 功能可以將 XML 轉(zhuǎn)譯成 HTML。</p><p> XML Spy 5.0</p><p> XML編輯器,提供三種XML文檔視圖:結(jié)構(gòu)顯示和編輯,原碼視圖和支持CSS,XSL的預(yù)覽。</p><p> XML Generate 1.0</p><p> XML
35、的結(jié)構(gòu)與樹控件結(jié)構(gòu)非常相似,本軟件能夠通過(guò)樹控件的操作來(lái)產(chǎn)生XML文件,產(chǎn)生的文件可以用來(lái)給其他程序使用。樹控件操作可以添加,刪除,修改,拖放,XML的讀取及存儲(chǔ)。</p><p> XML Blueprint 2.2</p><p> 是一款專為Windows開發(fā)者而設(shè)計(jì)的XML編輯器,高效易用。其主要功能包括:淺顯的文本編輯功能;能編輯任何DTD文件;XML圖層整理;即時(shí)XML色彩
36、;XML目錄設(shè)定;無(wú)限制的undo/redo功能。 </p><p> XML Explorer (XML Editor) 2.6.7</p><p> XML Explorer是一個(gè)XML和schema編輯器、XML數(shù)據(jù)分析工具。它簡(jiǎn)單好用,可以展現(xiàn)多個(gè)窗口。你可從樹形圖、列表、表格、文字模式和跳出式編輯區(qū)等方式操作任何XML數(shù)據(jù)。它c(diǎn)opy and paste的功能讓使用者復(fù)制任何
37、XML 文字到系統(tǒng)剪貼簿上,然后貼到任何XML Explorer窗口,它支持雙向Xpath,所以只要點(diǎn)任何XML節(jié)點(diǎn)或?qū)傩?,一個(gè)標(biāo)準(zhǔn)的Xpath就出來(lái)了。它兩欄的文字展現(xiàn)方式方便比較和編輯。它的schema完全支持樹形圖、列表、集合觀看模式、文字模式。有了它,你還能輕易把微軟Excel、Access和任何ODBC數(shù)據(jù)轉(zhuǎn)成XML格式。新版本增加了XML數(shù)據(jù)的圖表與統(tǒng)計(jì)分析功能。</p><p> 本軟件的目的是要
38、做一個(gè)編輯XML文擋的編輯器。由于XML文擋是樹形結(jié)構(gòu)的,所以在本軟件中XML文擋就用TreeView控件顯式顯示出來(lái),TreeView也是樹形結(jié)構(gòu)的,但TreeView控件允許有多個(gè)根節(jié)點(diǎn),需要對(duì)TreeView作一些限制,另外TreeView控件只是將XML文檔的樹形結(jié)構(gòu)顯示出來(lái),但XML文檔中各個(gè)節(jié)點(diǎn)的屬性值和文本值不能在TreeView中顯示出來(lái),所以,要給TreeView中的每個(gè)節(jié)點(diǎn)賦一個(gè)指針,指針?biāo)傅牡刂分写鎯?chǔ)著XML文檔
39、中對(duì)應(yīng)節(jié)點(diǎn)的文本值和屬性值。</p><p> 這是實(shí)現(xiàn)XML編輯器的難點(diǎn),通過(guò)addxmlnode和addtreenode函數(shù)可以完成打開文件,保存文件的功能。以下是XML編輯器的界面:</p><p> 圖1.2 XML編輯器</p><p> 該軟件通過(guò)編輯按鈕或工具欄里的箭頭可以添加,刪除,插入,編輯結(jié)點(diǎn);通過(guò)更改按鈕可以輸入選定結(jié)點(diǎn)的文本值,屬性值,
40、屬性名稱;通過(guò)更改完成按鈕可以保存更改;通過(guò)文件按鈕可以打開,保存,新建,另存,退出功能。還可以通過(guò)工具欄的最后一個(gè)按鈕,察看把XML文件代碼。</p><p> 第二章 Microsoft .Net中的C#</p><p> 第一節(jié) .NET平臺(tái)</p><p><b> 1 .NET的簡(jiǎn)介</b></p><p&g
41、t; 要介紹C#。就要先介紹一下C#所運(yùn)行的平臺(tái).NET。</p><p> 我們正處于一個(gè)嶄新的計(jì)算時(shí)代,一個(gè)互聯(lián)網(wǎng)時(shí)代。Internet應(yīng)用開發(fā)新技術(shù)層出不窮,其中微軟的.NET是近來(lái)最熱門的技術(shù)之一,因此也受到越來(lái)越多軟件開發(fā)者和用戶的關(guān)注。但. NET到底是什么?大家對(duì).NET平臺(tái)的看法和觀點(diǎn)也不盡相同。有的說(shuō).NET是微軟的下一代Visual Studio開發(fā)環(huán)境;有的說(shuō)它是一個(gè)新的程序語(yǔ)言(C#)
42、;還有些人說(shuō)它是以XML和SOAP為基礎(chǔ)的信息交換與消息傳遞的機(jī)制。其實(shí),這些說(shuō)法都是整個(gè).NET的一部分。.NET的發(fā)布是近十年來(lái)微軟開發(fā)平臺(tái)的一個(gè)戰(zhàn)略轉(zhuǎn)變。. </p><p> Mixrosoft.NET是把Internet轉(zhuǎn)換成一個(gè)分布式計(jì)算平臺(tái)的技術(shù)。.NET蘊(yùn)含的基本理念就是將注意力從單獨(dú)的Web站點(diǎn)和與Internet相聯(lián)的各種設(shè)備,轉(zhuǎn)移到與各種計(jì)算機(jī),設(shè)備,和服務(wù)協(xié)同工作的構(gòu)架之上,從而提供涉及
43、面更廣,功能更全面的解決方案。.Net 的設(shè)計(jì)理念及在于在合作解決方案構(gòu)架內(nèi),繼承和協(xié)調(diào)Internet上的任意資源組。</p><p> .NET平臺(tái)為創(chuàng)建分布式Web應(yīng)用,提供了所有的技術(shù)和工具。它在應(yīng)用的各個(gè)層次上提供了一個(gè)語(yǔ)言中立的統(tǒng)一編程模型,同時(shí)對(duì)已有技術(shù)進(jìn)行了無(wú)縫集成。.NET平臺(tái)集成了所有在微軟平臺(tái)出現(xiàn)的表示技術(shù)。構(gòu)件技術(shù)和數(shù)據(jù)技術(shù)。整個(gè).NET平臺(tái)將使Internet應(yīng)用的開發(fā)如同桌面應(yīng)用程序
44、一樣簡(jiǎn)單。</p><p> .NET提供了新型的基于Web服務(wù)的應(yīng)用開發(fā)模式。公司提供的產(chǎn)品和服務(wù)方式將可以令用戶和供應(yīng)商將這些產(chǎn)品和服務(wù)無(wú)縫的嵌入在其自身的業(yè)務(wù)進(jìn)程和日?;顒?dòng)的電子構(gòu)架中。.NET平臺(tái)支持標(biāo)準(zhǔn)的Internet協(xié)議,包括HTTP,XML,SOAP(簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議),同時(shí)對(duì)Web服務(wù)的大力支持將使它與非.Net平臺(tái)交互變得簡(jiǎn)單。[9]</p><p> 2 .NET
45、的技術(shù)基礎(chǔ)</p><p> 隨著三層/多層企業(yè)信息系統(tǒng)結(jié)構(gòu)的深度發(fā)展和下一代分布式計(jì)算模型Web</p><p> 服務(wù)的出現(xiàn),企業(yè)應(yīng)用中關(guān)于平臺(tái)、框架、語(yǔ)言的競(jìng)爭(zhēng)也愈演愈烈。2000年6月微軟公司發(fā)布了.NET開發(fā)平臺(tái)。.NET開發(fā)平臺(tái)在開發(fā)者用以創(chuàng)造應(yīng)用程序的工具和技術(shù)上做了根本的改變。</p><p> .NET開發(fā)平臺(tái)包括以下內(nèi)容:</p>
46、;<p> (1).NET framework(架構(gòu)),包括:Common Language Runtime(CLR)(通用語(yǔ)言運(yùn)行環(huán)境),這是用于運(yùn)行和加載應(yīng)用程序的軟件組織;新的類庫(kù),分級(jí)組織了開發(fā)者可以在他們的應(yīng)用程序中用來(lái)顯示圖形用戶界面、訪問(wèn)數(shù)據(jù)庫(kù)和文件以及在Web上通信的代碼集。</p><p> (2).NET開發(fā)工具,包括:VisualStudio.NET Integrated
47、Development Environment (IDE)(Visual Studio.NET集成開發(fā)環(huán)境),用來(lái)開發(fā)和測(cè)試應(yīng)用程序;.NET編程語(yǔ)言(例如VB.NET和新的C#),用來(lái)創(chuàng)建運(yùn)行在CLR下并使用類庫(kù)的應(yīng)用程序。(3)ASP.NET,一個(gè)取代以前的Active Server Pages (ASP)的特殊類庫(kù),用來(lái)創(chuàng)建動(dòng)態(tài)的Web內(nèi)容和Web服務(wù)器應(yīng)用程序,這些都將采用諸如HTML、XML和SOAP(簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議)等In
48、ternet協(xié)議和數(shù)據(jù)格式。</p><p> 圖2.1 .NET開發(fā)框架的主要組成部分</p><p> 從上圖我們可以簡(jiǎn)要的了解.NET開發(fā)框架的主要組成部分:首先是整個(gè)開發(fā)框架的基礎(chǔ),即通用語(yǔ)言運(yùn)行環(huán)境以及它所提供的一組基礎(chǔ)類庫(kù);在開發(fā)技術(shù)方面,.NET提供了全新的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)ADO.NET,以及網(wǎng)絡(luò)應(yīng)用開發(fā)技術(shù)ASP.NET和Windows編程技術(shù)Winforms;在開發(fā)語(yǔ)言
49、方面,.NET提供了Visual Basic、Visual C++、C#和Java script等多種語(yǔ)言支持;而Visual studio.net則是全面支持.NET的開發(fā)工具,.NET平臺(tái)在底層的執(zhí)行引擎也引用了Java宿主的虛擬機(jī)概念,但.NET的通用語(yǔ)言運(yùn)行環(huán)境CLR(common language runtime)比Java虛擬機(jī)(JVM)又多了新的概念。CLR在借鑒了JVM的自動(dòng)垃圾收集、異常處理等機(jī)制的同時(shí),又為.NET平
50、臺(tái)添加了多語(yǔ)言支持、組件自描述等新的特性。和Java源代碼翻譯成字節(jié)代碼(ByteCode)類似,.NET將所有Visual Studio。NET中性語(yǔ)言翻譯成一種稱為Intermediary Language(IL)的通用語(yǔ)言而實(shí)現(xiàn)了.NET平臺(tái)的跨語(yǔ)言承諾。執(zhí)行時(shí),中間語(yǔ)言被</p><p> 這樣我們就了解了微軟開發(fā).NET的目的、含義、特點(diǎn)、以及技術(shù)基礎(chǔ)。</p><p> 第
51、二節(jié) XML Web Service</p><p> 何謂.NET?它是Microsoft面向XML Web服務(wù)的平臺(tái)。但準(zhǔn)確地說(shuō),什么是XML Web服務(wù)呢? 它是未來(lái)的計(jì)算。Microsoft .NET 擴(kuò)展了通過(guò)任何設(shè)備隨時(shí)隨地操作數(shù)據(jù)和進(jìn)行通訊的能力。. NET 使用分布式計(jì)算模型并基于開放標(biāo)準(zhǔn)(如 XML)將 PC 與其他智能設(shè)備連接在一起。. NET 就是 Microsoft 的 XML Web
52、服務(wù)平臺(tái)。不論操作系統(tǒng)或編程語(yǔ)言有何差別,XML Web 服務(wù)能使應(yīng)用程序在 Internet 上傳輸和共享數(shù)據(jù)。[10]</p><p> 前面講道.Net是面向XML Web服務(wù)的平臺(tái),那XML Web服務(wù)又具體是什么呢?</p><p> 1 XML Web Service的定義</p><p> XML Web Service是基于XML數(shù)據(jù)交換標(biāo)準(zhǔn)的
53、Web服務(wù),是通過(guò)標(biāo)準(zhǔn)的Web協(xié)議(HTTP)可編程訪問(wèn)的Web組件,或者說(shuō)提供函數(shù)調(diào)用的Web站點(diǎn)。它的核心觀念是將軟件作為服務(wù)(Soft ware As A Service)即可以將軟件作為Web服務(wù)并在Internet上進(jìn)行發(fā)布,真正的使企業(yè)只面向核心的商務(wù)邏輯,企業(yè)可以使用標(biāo)準(zhǔn)的Web協(xié)議(XML,HTTP,SOPA)與遠(yuǎn)程應(yīng)用通信。軟件向服務(wù)轉(zhuǎn)化是目前的業(yè)界重點(diǎn),基于Internet的Web服務(wù)是實(shí)現(xiàn)這一轉(zhuǎn)變的最佳選擇。<
54、;/p><p> 以XML Web Service方式提供現(xiàn)有應(yīng)用程序,可以構(gòu)建新的、更強(qiáng)大的應(yīng)用程序,并利用XML Web Service作為構(gòu)造塊。例如,用戶可以開發(fā)一個(gè)采購(gòu)應(yīng)用程序,以自動(dòng)獲取來(lái)自不同供應(yīng)商的價(jià)格信息,從而使用戶可以選擇供應(yīng)商,提交訂單,然后跟蹤貨物的運(yùn)輸,直至收到貨物。而供應(yīng)商的應(yīng)用程序除了在Web上提供服務(wù)外,還可以使用XML Web Service檢查客戶的信用、收取貨款,并與貨運(yùn)公司辦
55、理貨運(yùn)手續(xù)。</p><p> 2 XML Web Service的優(yōu)點(diǎn)</p><p><b> 其主要優(yōu)點(diǎn)有:</b></p><p> (1)采用W3C標(biāo)準(zhǔn),真正的與平臺(tái)無(wú)關(guān)。允許在不同平臺(tái)上、以不同語(yǔ)言編寫的各種程序以基于標(biāo)準(zhǔn)的方式相互通信。這雖然與CORBA和DCE有著相同的目標(biāo),但是SOPA比以前的方法要簡(jiǎn)單得多。</p
56、><p> (2)使用標(biāo)準(zhǔn)的協(xié)議—XML,HTTP和TCP/IP。許多公司都已經(jīng)建立了Web基礎(chǔ)結(jié)構(gòu),同時(shí)它們的員工在維護(hù)方面也都具備相應(yīng)的知識(shí)和經(jīng)驗(yàn)。因此,引入XML Web Service與引入以前的技術(shù)相比,其成本要低得多。</p><p> (3)現(xiàn)有的遠(yuǎn)程訪問(wèn)協(xié)議—DCOM,CORBA,RMI不能很好用于互聯(lián)網(wǎng)環(huán)境。</p><p> (4)不受現(xiàn)有的代
57、理和防火墻的限制。</p><p> (5)可以利用HTTP驗(yàn)證模式,支持安全套接層(SSL)[4]</p><p> 3 XML Web Services的基礎(chǔ)結(jié)構(gòu)</p><p> 若要在 Web 的多樣性世界里取得成功,在涉及到操作系統(tǒng)、對(duì)象模型和編程語(yǔ)言的選擇時(shí),XML Web services 不能有任何傾向性。同樣,若要使 XML Web serv
58、ices 像其他基于 Web 的技術(shù)一樣被廣泛采用,則它們必須是: </p><p> 松耦合的:如果對(duì)兩個(gè)系統(tǒng)的唯一要求是要理解前面提到的自我描述的基于文本的消息,那么這兩個(gè)系統(tǒng)就被認(rèn)為是松耦合的。另一方面,緊耦合系統(tǒng)要求大量自定義系統(tǒng)開銷來(lái)進(jìn)行通信,并要求系統(tǒng)之間有更多的了解。 </p><p> 常見的通信:大概不會(huì)有人會(huì)在現(xiàn)在或不遠(yuǎn)的將來(lái)生成一個(gè)無(wú)法連接到 Internet 的
59、操作系統(tǒng),因此,需要提供常見的通信信道。同樣,能夠?qū)缀跛邢到y(tǒng)或設(shè)備連接到 Internet 的能力將確保這樣的系統(tǒng)和設(shè)備能夠?yàn)檫B接到 Internet 的所有其他系統(tǒng)或設(shè)備所使用。 </p><p> 通用數(shù)據(jù)格式:通過(guò)用現(xiàn)有的開放式標(biāo)準(zhǔn)而不是專用的封閉通信方法,任何支持同樣的開放式標(biāo)準(zhǔn)的系統(tǒng)都能夠理解 XML Web services。在采用自我描述的基于文本的消息時(shí),XML Web services 及
60、其客戶端無(wú)須知道每個(gè)基礎(chǔ)系統(tǒng)的構(gòu)成即可共享該消息,這使得自治系統(tǒng)和完全不同的系統(tǒng)之間能夠進(jìn)行通信。XML Web services 使用 XML 實(shí)現(xiàn)此功能。 </p><p> XML Web services 采用一種基礎(chǔ)結(jié)構(gòu),該基礎(chǔ)結(jié)構(gòu)提供下列內(nèi)容:定位 XML Web services 的發(fā)現(xiàn)機(jī)制、定義如何使用這些服務(wù)的服務(wù)說(shuō)明以及通信時(shí)使用的標(biāo)準(zhǔn)連網(wǎng)形式。下圖顯示了此基礎(chǔ)結(jié)構(gòu)的一個(gè)示例。</p&
61、gt;<p> 圖2.2 XML基礎(chǔ)結(jié)構(gòu)</p><p> UDDI(Universal Description Discovery Integration)—通用發(fā)現(xiàn)、說(shuō)明和集成(UDDI)是Web服務(wù)的黃頁(yè)。UDDI允許你查找提供的Web服務(wù)的公司。</p><p> WSDL(XML Web service Description Language)—描述Web
62、service的語(yǔ)言規(guī)范,相當(dāng)于訪問(wèn)Web Service的接口。WSDL(Web Service Description Language)表示W(wǎng)eb服務(wù)說(shuō)明語(yǔ)言。WSDL文件是一個(gè)XML文檔,用于說(shuō)明一組SOAP消息以及如何交換這些消息。換句話說(shuō),WSDL對(duì)于SOAP的作用就像IDL對(duì)于CORBSA或COM的作用。由于WSDL是XML文檔,因此很容易進(jìn)行閱讀和編輯;但大多數(shù)情況下,它由軟件生成和使用。</p><
63、p> SOAP(Simple Object Access Protocal)—簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議,用XML實(shí)現(xiàn)Web Service的標(biāo)準(zhǔn)協(xié)議,是XML Web Service的通信協(xié)議。[6]</p><p> 第三節(jié) .NET 框架概述</p><p> 以上是對(duì).Net在宏觀方面的解釋,下面就說(shuō)一說(shuō).Net在微觀方面既具體在計(jì)算機(jī)上是如何實(shí)現(xiàn)的,這一部分也就是Microso
64、ft構(gòu)建的面向開發(fā)人員的 Visual Studio .NET。Visual Studio .NET 提升了下列高產(chǎn)的編程語(yǔ)言:Microsoft Visual Basic®,它包含了新的面向?qū)ο蟮木幊坦δ?;Microsoft Visual C++®,它提升了 Windows® 開發(fā)并可用于創(chuàng)建 .NET 應(yīng)用程序;以及 C#,它給 C 和 C++ 開發(fā)人員帶來(lái)了 RAD。</p><p
65、> 現(xiàn)將.Net框架簡(jiǎn)述如下: </p><p> .NET 框架是一種新的計(jì)算平臺(tái),它簡(jiǎn)化了在高度分布式 Internet 環(huán)境中的應(yīng)用程序開發(fā)。. NET 框架旨在實(shí)現(xiàn)下列目標(biāo): </p><p> 提供一個(gè)一致的面向?qū)ο蟮木幊汰h(huán)境,而無(wú)論對(duì)象代碼是在本地存儲(chǔ)和執(zhí)行,還是在本地執(zhí)行但在 Internet 上分布,或者是在遠(yuǎn)程執(zhí)行的。 </p><p>
66、; 提供一個(gè)將軟件部署和版本控制沖突最小化的代碼執(zhí)行環(huán)境。 </p><p> 提供一個(gè)保證代碼(包括由未知的或不完全受信任的第三方創(chuàng)建的代碼)安全執(zhí)行的代碼執(zhí)行環(huán)境。 </p><p> 提供一個(gè)可消除腳本環(huán)境或解釋環(huán)境的性能問(wèn)題的代碼執(zhí)行環(huán)境。 </p><p> 使開發(fā)人員的經(jīng)驗(yàn)在面對(duì)類型大不相同的應(yīng)用程序(如基于 Windows 的應(yīng)用程序和基于 W
67、eb 的應(yīng)用程序)時(shí)保持一致。 </p><p> 按照工業(yè)標(biāo)準(zhǔn)生成所有通訊,以確?;?.NET 框架的代碼可與任何其他代碼集成。 </p><p> .NET 框架具有兩個(gè)主要組件:公共語(yǔ)言運(yùn)行庫(kù)和 .NET 框架類庫(kù)。公共語(yǔ)言運(yùn)行庫(kù)是 .NET 框架的基礎(chǔ)。您可以將運(yùn)行庫(kù)看作一個(gè)在執(zhí)行時(shí)管理代碼的代理,它提供核心服務(wù)(如內(nèi)存管理、線程管理和遠(yuǎn)程處理),而且還強(qiáng)制實(shí)施嚴(yán)格的類型安全
68、以及可確保安全性和可靠性的其他形式的代碼準(zhǔn)確性。事實(shí)上,代碼管理的概念是運(yùn)行庫(kù)的基本原則。以運(yùn)行庫(kù)為目標(biāo)的代碼稱為托管代碼,而不以運(yùn)行庫(kù)為目標(biāo)的代碼稱為非托管代碼。. NET 框架的另一個(gè)主要組件是類庫(kù),它是一個(gè)綜合性的面向?qū)ο蟮目芍赜妙愋图?,您可以使用它開發(fā)包含從傳統(tǒng)的命令行或圖形用戶界面 (GUI) 應(yīng)用程序到基于 ASP.NET 所提供的最新創(chuàng)新的應(yīng)用程序(如 Web 窗體和 XML Web services)在內(nèi)的應(yīng)用程序。[
69、11]</p><p> .NET 框架可由非托管組件承載,這些組件將公共語(yǔ)言運(yùn)行庫(kù)加載到它們的進(jìn)程中并啟動(dòng)托管代碼的執(zhí)行,從而創(chuàng)建一個(gè)可以同時(shí)利用托管和非托管功能的軟件環(huán)境。. NET 框架不但提供若干個(gè)運(yùn)行庫(kù)宿主,而且還支持第三方運(yùn)行庫(kù)宿主的開發(fā)。</p><p> Internet Explorer 是承載運(yùn)行庫(kù)(以 MIME 類型擴(kuò)展的形式)的非托管應(yīng)用程序的一個(gè)示例。使用 I
70、nternet Explorer 承載運(yùn)行庫(kù)使您能夠在 HTML 文檔中嵌入托管組件或 Windows 窗體控件。以這種方式承載運(yùn)行庫(kù)使得托管移動(dòng)代碼(類似于 Microsoft® ActiveX® 控件)成為可能,但是它具有只有托管代碼才能提供的重大改進(jìn)(如不完全受信任的執(zhí)行和安全的獨(dú)立文件存儲(chǔ))。[7]</p><p> 下面的章節(jié)將更加詳細(xì)地描述 .NET 框架的主要組件和功能。<
71、;/p><p> 圖2.3顯示公共語(yǔ)言運(yùn)行庫(kù)和類庫(kù)與應(yīng)用程序之間以及與整個(gè)系統(tǒng)之間的關(guān)系。該插圖還顯托管代碼如何在更大的結(jié)構(gòu)內(nèi)運(yùn)行。</p><p> 圖2.3 .NET 框架環(huán)境 </p><p> 1 公共語(yǔ)言運(yùn)行庫(kù)的功能</p><p> 公共語(yǔ)言運(yùn)行庫(kù)管理內(nèi)存、線程執(zhí)行、代碼執(zhí)行、代碼安全驗(yàn)證、編譯以及其他系統(tǒng)服務(wù)。這些功能是在公
72、共語(yǔ)言運(yùn)行庫(kù)上運(yùn)行的托管代碼所固有的。</p><p> 至于安全性,取決于包括托管組件的來(lái)源(如 Internet、企業(yè)網(wǎng)絡(luò)或本地計(jì)算機(jī))在內(nèi)的一些因素,托管組件被賦予不同程度的信任。這意味著即使用在同一活動(dòng)應(yīng)用程序中,托管組件既可能能夠執(zhí)行文件訪問(wèn)操作、注冊(cè)表訪問(wèn)操作或其他須小心使用的功能,也可能不能夠執(zhí)行這些功能。</p><p> 運(yùn)行庫(kù)強(qiáng)制實(shí)施代碼訪問(wèn)安全。例如,用戶可以相信
73、嵌入在 Web 頁(yè)中的可執(zhí)行文件能夠在屏幕上播放動(dòng)畫或唱歌,但不能訪問(wèn)他們的個(gè)人數(shù)據(jù)、文件系統(tǒng)或網(wǎng)絡(luò)。這樣,運(yùn)行庫(kù)的安全性功能就使通過(guò) Internet 部署的合法軟件能夠具有特別豐富的功能。</p><p> 運(yùn)行庫(kù)還通過(guò)實(shí)現(xiàn)稱為通用類型系統(tǒng) (CTS) 的嚴(yán)格的類型驗(yàn)證和代碼驗(yàn)證基礎(chǔ)結(jié)構(gòu)來(lái)加強(qiáng)代碼可靠性。CTS 確保所有托管代碼都是可以自我描述的。各種 Microsoft 和第三方語(yǔ)言編譯器生成符合 CTS
74、 的托管代碼。這意味著托管代碼可在嚴(yán)格實(shí)施類型保真和類型安全的同時(shí)使用其他托管類型和實(shí)例。</p><p> 此外,運(yùn)行庫(kù)的托管環(huán)境還消除了許多常見的軟件問(wèn)題。例如,運(yùn)行庫(kù)自動(dòng)處理對(duì)象布局并管理對(duì)對(duì)象的引用,在不再使用它們時(shí)將它們釋放。這種自動(dòng)內(nèi)存管理解決了兩個(gè)最常見的應(yīng)用程序錯(cuò)誤:內(nèi)存泄漏和無(wú)效內(nèi)存引用。</p><p> 運(yùn)行庫(kù)還提高了開發(fā)人員的工作效率。例如,程序員可以用他們選擇
75、的開發(fā)語(yǔ)言編寫應(yīng)用程序,卻仍能充分利用其他開發(fā)人員用其他語(yǔ)言編寫的運(yùn)行庫(kù)、類庫(kù)和組件。任何選擇以運(yùn)行庫(kù)為目標(biāo)的編譯器供應(yīng)商都可以這樣做。以 .NET 框架為目標(biāo)的語(yǔ)言編譯器使得用該語(yǔ)言編寫的現(xiàn)有代碼可以使用 .NET 框架的功能,這大大減輕了現(xiàn)有應(yīng)用程序的遷移過(guò)程的工作負(fù)擔(dān)。</p><p> 盡管運(yùn)行庫(kù)是為未來(lái)的軟件設(shè)計(jì)的,但是它也支持現(xiàn)在和以前的軟件。托管和非托管代碼之間的互操作性使開發(fā)人員能夠繼續(xù)使用所需
76、的 COM 組件和DLL。</p><p> 運(yùn)行庫(kù)旨在增強(qiáng)性能。盡管公共語(yǔ)言運(yùn)行庫(kù)提供許多標(biāo)準(zhǔn)運(yùn)行庫(kù)服務(wù),但是它從不解釋托管代碼。一種稱為實(shí)時(shí) (JIT) 編譯的功能使所有托管代碼能夠以它在其上執(zhí)行的系統(tǒng)的本機(jī)語(yǔ)言運(yùn)行。同時(shí),內(nèi)存管理器排除了出現(xiàn)零碎內(nèi)存的可能性,并增大了內(nèi)存引用區(qū)域以進(jìn)一步提高性能。</p><p> 最后,運(yùn)行庫(kù)可由高性能的服務(wù)器端應(yīng)用程序(如 Microsoft
77、® SQL Server? 和 Internet 信息服務(wù) (IIS))承載。此基礎(chǔ)結(jié)構(gòu)使您在享受支持運(yùn)行庫(kù)宿主的行業(yè)最佳企業(yè)服務(wù)器的優(yōu)越性能的同時(shí),能夠使用托管代碼編寫業(yè)務(wù)邏輯。[15]</p><p> 2 .NET 框架類庫(kù)</p><p> .NET 框架類庫(kù)是一個(gè)與公共語(yǔ)言運(yùn)行庫(kù)緊密集成的可重用的類型集合。該類庫(kù)是面向?qū)ο蟮?,并提供您自己的托管代碼可從中導(dǎo)出功能的類
78、型。這不但使 .NET 框架類型易于使用,而且還減少了學(xué)習(xí) .NET 框架的新功能所需要的時(shí)間。此外,第三方組件可與 .NET 框架中的類無(wú)縫集成。</p><p> 例如,.NET 框架集合類實(shí)現(xiàn)一組可用于開發(fā)您自己的集合類的接口。您的集合類將與 .NET 框架中的類無(wú)縫地混合。</p><p> 正如您對(duì)面向?qū)ο蟮念悗?kù)所希望的那樣,.NET 框架類型使您能夠完成一系列常見編程任務(wù)(
79、包括諸如字符串管理、數(shù)據(jù)收集、數(shù)據(jù)庫(kù)連接以及文件訪問(wèn)等任務(wù))。除這些常見任務(wù)之外,類庫(kù)還包括支持多種專用開發(fā)方案的類型。例如,可使用 .NET 框架開發(fā)下列類型的應(yīng)用程序和服務(wù): </p><p><b> 控制臺(tái)應(yīng)用程序。 </b></p><p> 腳本應(yīng)用程序或寄宿的應(yīng)用程序。 </p><p> Windows GUI 應(yīng)用程序(
80、Windows 窗體)。 </p><p> ASP.NET 應(yīng)用程序。 </p><p> XML Web services。 </p><p> Windows 服務(wù)。 </p><p> 例如,Windows 窗體類是一組綜合性的可重用的類型,它們大大簡(jiǎn)化了 Windows GUI 的開發(fā)。如果要編寫 ASP.NET Web 窗
81、體應(yīng)用程序,可使用 Web 窗體類。[12]</p><p> 3 客戶端應(yīng)用程序開發(fā)</p><p> 客戶端應(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)用程序通常使用窗口、菜單、
82、按鈕和其他 GUI 元素,并且它們可能訪問(wèn)本地資源(如文件系統(tǒng))和外圍設(shè)備(如打印機(jī))。</p><p> 另一種客戶端應(yīng)用程序是作為 Web 頁(yè)通過(guò) Internet 部署的傳統(tǒng) ActiveX 控件(現(xiàn)在被托管 Windows 窗體控件所替代)。此應(yīng)用程序非常類似于其他客戶端應(yīng)用程序:它在本機(jī)執(zhí)行,可以訪問(wèn)本地資源,并包含圖形元素。</p><p> 過(guò)去,開發(fā)人員將 C/C++
83、與 Microsoft 基礎(chǔ)類 (MFC) 或應(yīng)用程序快速開發(fā) (RAD) 環(huán)境(如 Microsoft® Visual Basic®)一起使用來(lái)創(chuàng)建這樣的應(yīng)用程序。.NET 框架將這些現(xiàn)有產(chǎn)品的特點(diǎn)合并到了單個(gè)且一致的開發(fā)環(huán)境中,該環(huán)境大大簡(jiǎn)化了客戶端應(yīng)用程序的開發(fā)。</p><p> 包含在 .NET 框架中的Windows 窗體類旨在用于 GUI 開發(fā)。您可以輕松創(chuàng)建具有適應(yīng)多變的商業(yè)
84、需求所需的靈活性的命令窗口、按鈕、菜單、工具欄和其他屏幕元素。</p><p> 例如,.NET 框架提供簡(jiǎn)單的屬性以調(diào)整與窗體相關(guān)聯(lián)的可視屬性。某些情況下,基礎(chǔ)操作系統(tǒng)不支持直接更改這些屬性,而在這些情況下,.NET 框架將自動(dòng)重新創(chuàng)建窗體。這是 .NET 框架集成開發(fā)人員接口從而使編碼更簡(jiǎn)單更一致的許多方法之一。</p><p> 和 ActiveX 控件不同,Windows 窗體
85、控件具有對(duì)用戶計(jì)算機(jī)的不完全受信任的訪問(wèn)權(quán)限。這意味著二進(jìn)制代碼或在本機(jī)執(zhí)行的代碼可訪問(wèn)用戶系統(tǒng)上的某些資源(如 GUI 元素和受限制的文件訪問(wèn))而不能訪問(wèn)或危害其他資源。由于具有代碼訪問(wèn)安全性,許多曾經(jīng)需要安裝在用戶系統(tǒng)上的應(yīng)用程序現(xiàn)在可以通過(guò) Web 安全地部署。您的應(yīng)用程序可以在像 Web 頁(yè)那樣部署時(shí)實(shí)現(xiàn)本地應(yīng)用程序的功能。[13]</p><p> 4 服務(wù)器應(yīng)用程序開發(fā)</p><
86、;p> 在托管領(lǐng)域中,服務(wù)器端應(yīng)用程序是通過(guò)運(yùn)行庫(kù)宿主實(shí)現(xiàn)的。非托管應(yīng)用程序承載公共語(yǔ)言運(yùn)行庫(kù),后者使您的自定義托管代碼可以控制服務(wù)器的行為。此模型在獲得主服務(wù)器的性能和可伸縮性的同時(shí)提供給您公共語(yǔ)言運(yùn)行庫(kù)和類庫(kù)的所有功能。</p><p> 圖2.4顯示在不同服務(wù)器環(huán)境中運(yùn)行托管代碼的基本網(wǎng)絡(luò)架構(gòu)。在應(yīng)用程序邏輯通過(guò)托管代碼執(zhí)行時(shí),服務(wù)器(如 IIS 和 SQL Server)可執(zhí)行標(biāo)準(zhǔn)操作。<
87、/p><p> 圖 2.4 服務(wù)器端托管代碼</p><p> ASP.NET 是使開發(fā)人員能夠使用 .NET 框架開發(fā)基于 Web 的應(yīng)用程序的宿主環(huán)境。但是,ASP.NET 不止是一個(gè)運(yùn)行庫(kù)宿主;它是使用托管代碼開發(fā) Web 站點(diǎn)和通過(guò) Internet 分布的對(duì)象的完整結(jié)構(gòu)。Web 窗體和 XML Web services 都將 IIS 和 ASP.NET 用作應(yīng)用程序的發(fā)布機(jī)制,并
88、且兩者在 .NET 框架中都具有支持類集合。</p><p> XML Web services 作為基于 Web 的技術(shù)的重要發(fā)展,是類似于常見 Web 站點(diǎn)的分布式服務(wù)器端應(yīng)用程序組件。但是,與基于 Web 的應(yīng)用程序不同,XML Web services 組件不具有 UI 并且不以瀏覽器(如 Internet Explorer 和Netscape Navigator)為目標(biāo)。相反,XML Web serv
89、ices 包含旨在供其他應(yīng)用程序(如傳統(tǒng)的客戶端應(yīng)用程序、基于 Web 的應(yīng)用程序或者甚至是其他 XML Web services)使用的可重用的軟件組件。因此,XML Web services 技術(shù)正迅速地將應(yīng)用程序開發(fā)和部署推向高度分布式 Internet 環(huán)境。</p><p> 如果您使用過(guò) ASP 技術(shù)的早期版本,您馬上就會(huì)注意到 ASP.NET 和 Web 窗體提供的改進(jìn)。例如,您可以用支持 .NE
90、T 框架的任何語(yǔ)言開發(fā) Web 窗體頁(yè)。此外,您的代碼不再需要與 HTTP 文本共享同一個(gè)文件(盡管如果您愿意,代碼還可以繼續(xù)這樣做)。Web 窗體頁(yè)用本機(jī)語(yǔ)言執(zhí)行,這是因?yàn)榕c所有其他托管應(yīng)用程序一樣,它們充分利用運(yùn)行庫(kù)。與此相對(duì)照,非托管 ASP 頁(yè)始終被寫成腳本并解釋。ASP.NET 頁(yè)比非托管 ASP 頁(yè)更快、更實(shí)用并且更易于開發(fā),這是因?yàn)樗鼈兿袼型泄軕?yīng)用程序一樣與運(yùn)行庫(kù)進(jìn)行交互。</p><p> .
91、NET 框架還提供類和工具的集合來(lái)幫助開發(fā)和使用 XML Web services 應(yīng)用程序。XML Web services 是基于 SOAP(一種遠(yuǎn)程過(guò)程調(diào)用協(xié)議)、XML(一種可擴(kuò)展的數(shù)據(jù)格式)和 WSDL(Web 服務(wù)描述語(yǔ)言)這些標(biāo)準(zhǔn)生成的?;谶@些標(biāo)準(zhǔn)生成 .NET 框架的目的是為了提高與非 Microsoft 解決方案的互操作性。</p><p> 例如,.NET 框架 SDK 所包含的Web 服
92、務(wù)描述語(yǔ)言工具可以查詢?cè)?Web 上發(fā)布的 XML Web services,分析它的 WSDL 描述,并產(chǎn)生 C# 或 Visual Basic 源代碼,您的應(yīng)用程序可以使用這些代碼而成為 XML Web services 的客戶端。這些源代碼可以創(chuàng)建從類庫(kù)中的類派生的類,這些類使用 SOAP 和 XML 分析處理所有基礎(chǔ)通訊。雖然您可以使用類庫(kù)來(lái)直接使用 XML Web services,Web 服務(wù)描述語(yǔ)言工具和包含在 SDK 中
93、的其他工具可以使您更加方便地用 .NET 框架進(jìn)行開發(fā)。</p><p> 如果您開發(fā)和發(fā)布自己的 XML Web services,.NET 框架為您提供了一組符合所有基礎(chǔ)通訊標(biāo)準(zhǔn)(如 SOAP、WSDL 和 XML)的類。使用這些類使您能夠?qū)⒆⒁饬性诜?wù)的邏輯上,而無(wú)需關(guān)注分布式軟件開發(fā)所需要的通訊基礎(chǔ)結(jié)構(gòu)。</p><p> 最后,與托管環(huán)境中的 Web 窗體頁(yè)相似,您的 X
94、ML Web services 將使用 IIS 的可伸縮通訊以本機(jī)語(yǔ)言的速度運(yùn)行。[14]</p><p><b> 第四節(jié) C#概述</b></p><p> Microsoft.NET是一個(gè)完善的平臺(tái)! 它提供了一套公共的運(yùn)行庫(kù)!并制定了一套公共語(yǔ)言規(guī)范!所有符合該規(guī)范的語(yǔ)言都可以無(wú)縫使用這套運(yùn)行庫(kù)! 這也就是說(shuō)在Microsoft.NET平臺(tái)下使用符合Mic
95、rosoft.NET規(guī)范的都可以開發(fā).NET 應(yīng)用程序。微軟Micarosoft.NET認(rèn)證要求從C#(C Sharp)和Visual Basic.NET兩種語(yǔ)言中任一種語(yǔ)言進(jìn)行Microsoft.NET平臺(tái)應(yīng)用程序開發(fā)。由于C# 是微軟公司針對(duì)Microsoft.NET平臺(tái)而開發(fā)一種新型編程語(yǔ)言。它從C/C++ 演變而來(lái),是一種簡(jiǎn)單.現(xiàn)代.類型安全和完全面向?qū)ο蟮恼Z(yǔ)言。微軟公司力薦開發(fā)者使用C#開發(fā)Microsoft.NET應(yīng)用程序,
96、下面我們就看看C#語(yǔ)言的有關(guān)知識(shí)。[1]</p><p><b> 1 C#簡(jiǎn)介</b></p><p> C#(讀作“C sharp”)是一種簡(jiǎn)單、現(xiàn)代、面向?qū)ο笄翌愋桶踩木幊陶Z(yǔ)言。C和C++程序員能很快熟悉它。C#同時(shí)具備“應(yīng)用程序快速開發(fā)”(RAD)語(yǔ)言的高效率和 C++ 固有的強(qiáng)大能力。</p><p> Visual C# .
97、NET是Microsoft的C#開發(fā)工具。它包括交互式開發(fā)環(huán)境、可視化設(shè)計(jì)器(用于生成 Windows 和 Web 應(yīng)用程序)、編譯器和調(diào)試器。Visual C#.NET 是Visual Studio .NET的產(chǎn)品套件的組成部分,該產(chǎn)品套件還包括 Visual Basic.NET、Visual C++.NET和JScript腳本語(yǔ)言。所有這些語(yǔ)言都支持對(duì) Microsoft .NET Framework的訪問(wèn),該框架包括一個(gè)公共執(zhí)行引
98、擎和一個(gè)豐富的類庫(kù)。.NET Framework定義了一個(gè)“公共語(yǔ)言規(guī)范”(CLS),這是一種通用規(guī)范,它確保遵循該規(guī)范的語(yǔ)言與類庫(kù)之間實(shí)現(xiàn)無(wú)縫的互操作性。對(duì)C#開發(fā)人員而言,這意味著即C#是一種新語(yǔ)言,但仍可恰如其他成熟工具(如 Visual Basic.NET 和Visual C.NET)一樣,使用相同的、功能豐富的類庫(kù)。C# 本身不包含類庫(kù)。[5]</p><p><b> 2 C#的主要特點(diǎn)&
99、lt;/b></p><p><b> (1)簡(jiǎn)單性</b></p><p> C#首先是一個(gè)簡(jiǎn)單的語(yǔ)言。它加入了許多新的特征,但同時(shí)也為了提供簡(jiǎn)單性,也舍棄了一些語(yǔ)言的特性。C++的編程是很復(fù)雜的。舉個(gè)簡(jiǎn)單的例子,對(duì)于“—〉”和“::”以及“.”操作符,分別用于引用,名字空間和成員等操作。C#意識(shí)到了C++編程中這個(gè)煩人的地方。C#去掉了別的操作符,所有的
100、操作符都用“.”表示。程序員只需理解名字嵌套的概念就可以了。C#程序中使用一種受管代碼,所有對(duì)象的分配釋放都是由公共語(yǔ)言運(yùn)行時(shí)替你完成的,不安全操作,諸如直接內(nèi)存存取是不允許的。這樣就消除了懸掛指針,內(nèi)存泄漏,循環(huán)引用等問(wèn)題。值得一提的是,C#還可繼續(xù)使用指針,可以通過(guò)unsafe代碼。這也體現(xiàn)了C#的靈活性。Unsafe代碼恰如其分的表示了它本身的含義。大多數(shù)情況下不建議使用unsafe代碼,但在一些需要高性能程序或本地資源訪問(wèn)時(shí)可以
101、使用。執(zhí)行unsafe代碼需要一個(gè)很高的安全許可,畢竟它是不安全的。C和C#編程中的另一個(gè)煩人的地方就是選擇使用的數(shù)據(jù)類型。C#中,一個(gè)UNICODE 的字符不再是 wchar_t,它就代表一個(gè)字符。64位的整形是long型,而不是__int64,字符就是字符,不再需要對(duì)cha</p><p> C和C++編程中還有一個(gè)令人困擾的地方,就是整形可以當(dāng)作布爾值使用,而且程序員經(jīng)常把==錯(cuò)寫成=。C#對(duì)兩者進(jìn)行了
102、區(qū)分。C#提供了一個(gè)單獨(dú)的bool類型來(lái)表示bool值,可以為true也可以為false,但是不可以轉(zhuǎn)換為其他類型。同樣,整形和對(duì)象引用也不可以當(dāng)作布爾值使用,只能和0或null比較。這意味著if判別式中的結(jié)果只能是bool類型。如果是其他類型的話,編譯器將會(huì)做出錯(cuò)誤報(bào)告。</p><p> 對(duì)C++另一個(gè)改進(jìn)就是switch語(yǔ)句了。C++程序中如果switch語(yǔ)句中的case語(yǔ)句沒(méi)有break結(jié)尾的話,將繼續(xù)
103、執(zhí)行直到遇到break或跳出程序塊。C#和VB類似,在每一個(gè)case語(yǔ)句中隱含加入了break語(yǔ)句,但如果確實(shí)像往下繼續(xù)執(zhí)行的話,可以使用goto語(yǔ)句。</p><p> 簡(jiǎn)單性的另一個(gè)體現(xiàn)是一步到位的編碼。C#程序中所有元素的聲明和實(shí)現(xiàn)合為一體在同一個(gè)源文件中,不再需要額外的頭文件或IDL文件中對(duì)他們進(jìn)行聲明;性質(zhì)的get/set方法被合并;程序的文檔信息也嵌在程序中;程序員只要維護(hù)一個(gè)文件就夠了。如果項(xiàng)目太
104、大且程序員想把它分成幾個(gè)小一些的源文件。那編譯時(shí)候仍可把它當(dāng)作整個(gè)項(xiàng)目來(lái)看待。程序員不用關(guān)心聲明在哪里和某個(gè)類在哪里實(shí)現(xiàn)的問(wèn)題。</p><p> (2)類型系統(tǒng)的統(tǒng)一性</p><p> C#統(tǒng)一了類型統(tǒng)一。C#中所有類型,不論是基本類型,還是普通的class類,都可作為對(duì)象看待。這種機(jī)制在其他語(yǔ)言中也曾經(jīng)有過(guò)。但C#提供的脫匣和裝匣的機(jī)制降低了執(zhí)行的難度。不論使用的是類class,
105、結(jié)構(gòu)struct,數(shù)組array,或是簡(jiǎn)單類型,都可以把他們當(dāng)作對(duì)象。這個(gè)類型統(tǒng)一的系統(tǒng)意味著所有類型—接口,結(jié)構(gòu),委派,枚舉,和數(shù)組,都有相同的基本功能,例如轉(zhuǎn)化成字符串,序列化,在集合類型中存儲(chǔ) 。</p><p> 對(duì)象包含在名字空間中,可以編程訪問(wèn)。這樣就不必手動(dòng)編寫很多include語(yǔ)句來(lái)包含頭文件,只需使用using 語(yǔ)句包含相應(yīng)的名字就可以使用其中的類了。使用名字空間也可以省去類的前綴。</
106、p><p> 那如何編寫自己的類呢?只要把自己的類包含進(jìn)名字空間即可。例如編寫了一個(gè)類MyClass,想在另一個(gè)應(yīng)用中使用,那可以聲明一個(gè)空間MyNamespaces,并把MyClass包含進(jìn)該名字空間,同時(shí)聲明MyClass為公有的Public的。然后編譯成DLL,并把DLL放入應(yīng)用程序所在的目錄下,最后在使用MyClass的應(yīng)用中用using MyNamespace包含進(jìn)自定義的名字空間就可以了。如果覺得類的引
107、用字符串太長(zhǎng)(例如NS1.NS2.MyClass),那麼可以在C#中使用別名來(lái)替代它。例如使用using A=NS1.NS2.MyClass就可以在程序中使用A來(lái)代表NS1.NS2.MyClass了,是不是有點(diǎn)像C++中的宏。</p><p><b> (3)現(xiàn)代性</b></p><p> 從編程語(yǔ)言出現(xiàn)的第一天起,程序員的需求就不斷在增加。雖然不斷有新的語(yǔ)言,
108、新的技術(shù)增加,但是仍舊或多或少的滿足不了程序員的需要。功能強(qiáng)大的C和C++同樣有不盡人意的地方。C#提供了C和C++程序員一直夢(mèng)想的幾個(gè)特征,垃圾回收就是一個(gè)例子。程序員不再負(fù)責(zé)整個(gè)內(nèi)存的管理。.NET平臺(tái)運(yùn)行環(huán)境提供了一個(gè)垃圾回收器負(fù)責(zé)C#程序的內(nèi)存管理,不被引用的對(duì)象都將被自動(dòng)釋放。然而,垃圾回收時(shí)要付出代價(jià)的。風(fēng)險(xiǎn)操作如指針(unsafe代碼)錯(cuò)誤將更難發(fā)現(xiàn),對(duì)程序員的潛在威脅更大。對(duì)于這種情況C#引入了類型安全性來(lái)增加程序的穩(wěn)定
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于XML的任務(wù)流編輯器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于XML的醫(yī)學(xué)編輯器系統(tǒng)的研究與實(shí)現(xiàn).pdf
- 基于預(yù)定格式的XML文檔編輯器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- c_文本編輯器課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)--文本編輯器
- XUL編輯器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于c#的網(wǎng)絡(luò)嗅探器設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)】
- 游戲地圖編輯器的設(shè)計(jì)與實(shí)現(xiàn)---畢業(yè)論文
- 游戲地圖編輯器的設(shè)計(jì)與實(shí)現(xiàn)---畢業(yè)論文
- c++課程設(shè)計(jì)--簡(jiǎn)單的行編輯器
- 多文本編輯器設(shè)計(jì)與實(shí)現(xiàn)論文
- c++面向?qū)ο蠛?jiǎn)易圖形編輯器
- ICC Profile編輯器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 任意波形編輯器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 化學(xué)腳本編輯器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- XML Schema編輯器系統(tǒng)的開發(fā)與應(yīng)用.pdf
- c_編寫的文本編輯器課程設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)-用c#語(yǔ)言設(shè)計(jì)電子郵件系統(tǒng)
- c++課程設(shè)計(jì)--簡(jiǎn)單文本編輯器的設(shè)計(jì)
- 計(jì)算機(jī)畢業(yè)設(shè)計(jì)論文---本文本編輯器的開發(fā)
評(píng)論
0/150
提交評(píng)論