




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第一部分 C#1)談?wù)勀銓?duì)面向?qū)ο蟮恼J(rèn)識(shí)?答案:面向?qū)ο笫且环N編程思想,也是一種設(shè)計(jì)理念。在軟件編程中,面向?qū)ο笥袔讉€(gè)基本的概 念,他們是:類、對(duì)象、繼承、封裝和多態(tài)。而正是這些元素構(gòu)成了面向?qū)ο笤O(shè)計(jì)開發(fā)的基本 邏輯。而實(shí)際上,理解面向?qū)ο笠粋€(gè)重要的方法就是以實(shí)際的生活來類比對(duì)象世界,對(duì)象世界 的邏輯和我們生活得邏輯形成對(duì)比的時(shí)候,這種體驗(yàn)將會(huì)更有親切感。面向?qū)ο蟮娜筇卣魇牵悍庋b、繼承、多態(tài);封裝隱藏了類內(nèi)部的具體實(shí)現(xiàn)細(xì)節(jié),對(duì)外則提供統(tǒng)一訪問接口,來操作內(nèi)部數(shù)據(jù)成員。這 樣實(shí)現(xiàn)的好處是實(shí)現(xiàn)了 UI 分離,程序員不需要知道類內(nèi)部的具體實(shí)現(xiàn),只需按照接口協(xié)議進(jìn)行 控制即可。同樣對(duì)類內(nèi)部來說,封裝
2、保證了類內(nèi)部成員的安全性和可靠性。繼承,就是面向?qū)ο笾蓄惻c類之間的一種關(guān)系。繼承的類稱為子類、派生類,而被繼承類 稱為父類、基類或超類。通過繼承,使得子類具有父類的屬性和方法,同時(shí)子類也可以通過加 入新的屬性和方法或者修改父類的屬性和方法建立新的類層次。多態(tài)分為基類繼承式多態(tài)和接口實(shí)現(xiàn)式多態(tài)。基類繼承多態(tài)的關(guān)鍵是繼承體系的設(shè)計(jì)與實(shí) 現(xiàn),而接口實(shí)現(xiàn)式多態(tài)通過實(shí)現(xiàn)接口的方法約定形成繼承體系,具有更高的靈活性。2)你如何理解事件與委托的概念?答案:事件:事件是對(duì)象發(fā)送的消息,以發(fā)信號(hào)通知操作的發(fā)生。操作可能是由用戶交(例如鼠 標(biāo)單擊)互引起的,也可能是由某些其他的程序邏輯觸發(fā)的。引發(fā)事件的對(duì)象叫做事
3、件發(fā)送方。 捕獲事件并對(duì)其作出響應(yīng)的對(duì)象叫做事件接收方。在C#中,事件與委托一起使用來實(shí)現(xiàn)事件 處理。在實(shí)現(xiàn)事件時(shí),需要3個(gè)相互聯(lián)系的元素:提供事件數(shù)據(jù)的類(消息)、事件委托和引發(fā)事件的類。委托:委托是一種引用方法的類型。一旦為委托分配了方法,委托將與該方法具有完全相 同的行為。委托方法的使用可以像其他任何方法一樣,具有參數(shù)和返回值。委托可以理解成類 型安全的函數(shù)指針。3)類和結(jié)構(gòu)的異同?答案:class (類)是面向?qū)ο缶幊痰幕靖拍睿且环N自定義數(shù)據(jù)結(jié)構(gòu)類型,通常包含字段、屬 性、方法、構(gòu)造函數(shù)、索引器、操作符等。所有的類都最終繼承自 System.Object 類。struct (結(jié)構(gòu))
4、是一種值類型,用于將一組相關(guān)的信息變量組織為一個(gè)單一的變量實(shí)體。所有的結(jié)構(gòu)都繼承自 System.ValueType 類,因此是一種值類型。相同點(diǎn):聲明語法類似;不同點(diǎn):1、class是引用類型,繼承自System.Object類;struct是值類型,繼承自System.ValueType類,因此不具多態(tài)性。2、從職能觀點(diǎn)來看,class表現(xiàn)為行為;而struct常用于存儲(chǔ)數(shù)據(jù);3、class 支持繼承,可以繼承自類和接口;而 struct 沒有繼承性, struct 不能從 class繼承,也不能作為 class的基類,但struct支持接口繼承;4、class可以聲明無參構(gòu)造函數(shù),可以聲
5、明析構(gòu)函數(shù);而struct職能聲明帶參數(shù)構(gòu)造函數(shù),且不能聲明析構(gòu)函數(shù)。因此, struct 沒有自定義的默認(rèn)無參構(gòu)造函數(shù),默認(rèn)無參構(gòu)造器只是簡(jiǎn)單地把所有初始化為它們的 0 等價(jià)值。5、實(shí)例化時(shí),class要使用new關(guān)鍵字;而struct可以不使用new關(guān)鍵字,如果不以new來實(shí)例化struct,則其所有的字段將處于未分配狀態(tài),直到所有字段完成初始化,否則引用未賦值的字段會(huì)導(dǎo)致編譯錯(cuò)誤;6、class可以為抽象類(abstract),可以聲明抽象函數(shù);而 struct不能為抽象類,也 不能聲明抽象函數(shù);7、class可以聲明 protected 成員、virtual 成員、sealed成員和
6、override 成員; 而 struct 不可以,但是 struct 可以重載 System.Object 的 3 個(gè)虛方法, Equals()、 ToString() 和 GetHashTable();8、class 的對(duì)象復(fù)制為淺拷貝和深拷貝,必須經(jīng)過特別的方法來完成復(fù)制;而struct創(chuàng)建的對(duì)象復(fù)制簡(jiǎn)單,直接以等號(hào)連接即可;9、class實(shí)例由垃圾回收機(jī)制來保證內(nèi)存的回收處理;而struct變量使用完成后立即自動(dòng)解除內(nèi)存分配;10、作為參數(shù)傳遞時(shí),class變量和struct變量有所不同;11、實(shí)現(xiàn)一個(gè)主要用于存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu)時(shí),應(yīng)該考慮 struct;12、Struct 變量占有堆棧的
7、空間,因此只適用于數(shù)據(jù)量相對(duì)小的場(chǎng)合;13、結(jié)構(gòu)數(shù)組具有更高的效率;14、提供某些和非托管代碼通信的兼容性。4) 抽象類和接口的異同?答案:接口是包含一組虛方法的抽象類型,其中每一種方法都有其名稱、參數(shù)和返回值。接口方 法不能包含任何實(shí)現(xiàn), CLR( 公共語言運(yùn)行時(shí) )允許接口可以包含事件、屬性、索引器、 靜態(tài)方法、靜態(tài)字段、靜態(tài)構(gòu)造函數(shù)以及常量。抽象類提供多個(gè)派生類共享基類的公共定義,它既可以提供抽象方法,也可以提供非抽象 方法。抽象類不能實(shí)例化, 必須通過繼承由派生類實(shí)現(xiàn)其抽象方法, 因此對(duì)抽象類不能使用 new 關(guān)鍵字,也不能被密封。如果派生類沒有實(shí)現(xiàn)所有的抽象方法,則該派生類也必須聲明
8、為抽象 類。另外,實(shí)現(xiàn)抽象方法由 override 方法來完成。相同點(diǎn):1 、都不能被直接實(shí)例化,都可以通過繼承實(shí)現(xiàn)其抽象方法;2、都是面向抽象變成的技術(shù)基礎(chǔ),實(shí)現(xiàn)了諸多的設(shè)計(jì)模式;不同點(diǎn):1 、接口支持多繼承;抽象類不能實(shí)現(xiàn)多繼承。嚴(yán)格意義上說,接口繼承類應(yīng)該稱為類實(shí)現(xiàn) 接口;2、接口職能定義抽象規(guī)則;抽象類既可以定義規(guī)則,還可能提供已實(shí)現(xiàn)的成員;3、接口是一組行為規(guī)范;抽象類是一個(gè)不完全的類,著重族的概念;4、接口可以用于支持回調(diào);因?yàn)槔^承不支持,所以抽象類在實(shí)現(xiàn)回調(diào)時(shí)有局限性。5、接口只包含方法、屬性、索引器、事件的簽名,但不能定義字段和包含實(shí)現(xiàn)的方法;抽 象類可以定義字段、屬性、包含有
9、實(shí)現(xiàn)的方法;6、 接口可以作用于值類型和引用類型;抽象類只能作用于引用類型。例如,struct 就可以 繼承接口,而不能繼承類。5) 裝箱于拆箱的基本概念?答案: 宏觀解釋,從類型轉(zhuǎn)換角度來說,裝箱與拆箱是值類型與引用類型之間的橋梁,實(shí)現(xiàn)二者 之間的自由轉(zhuǎn)換,將類型系統(tǒng)統(tǒng)一化處理。具體來講:裝箱與拆箱,就是值類型與引用類型的轉(zhuǎn)換,裝箱就是值類型數(shù)據(jù)轉(zhuǎn)換為無類型的引用對(duì)象,使得我們可以將值類型視為對(duì)象來處理,通常這種轉(zhuǎn)換主要指轉(zhuǎn)換為System.Object類型或者該值類型實(shí)現(xiàn)的任何借口引用類型;而拆箱就是引用類型轉(zhuǎn)換為值類型,通常伴隨著從堆中 復(fù)制對(duì)象實(shí)例的操作。 微觀解釋,從內(nèi)存執(zhí)行角度來說
10、,值類型的內(nèi)存分配于線程的堆棧上,而引用類型的內(nèi)存 分配于托管堆。所以從值類型向引用類型的轉(zhuǎn)換,勢(shì)必牽涉到數(shù)據(jù)的拷貝與指針引用等操作。 具體來講: 裝箱操作,在托管堆中對(duì)棧中的值類型進(jìn)行對(duì)象封裝化處理,也就是生成一份值類型的對(duì) 象引用副本,大致的過稱謂:在托管堆中分配新創(chuàng)建對(duì)象的內(nèi)存,并將值類型的字段拷貝到內(nèi) 存中,然后返回新對(duì)戲那個(gè)的地址,這樣就完成了將值類型轉(zhuǎn)變?yōu)橐妙愋偷倪^程;而拆箱操 作,就是獲取已封裝對(duì)象中來自值類型部分字段的地址。所以裝箱和拆箱并非對(duì)稱的互逆操作, 拆箱在執(zhí)行上并不包含字段的拷貝過程。6)值類型與引用類型的區(qū)別?答案:值類型(Value Type),值類型實(shí)例通常分
11、配在線程的堆棧(Stack)上,并且不包含任何指向?qū)嵗龜?shù)據(jù)的指針,因?yàn)樽兞勘旧砭桶似鋵?shí)例數(shù)據(jù)。其在 MSDN 的定義為:值類型直接包 含他們的數(shù)據(jù),值類型的實(shí)例要么在堆棧上,要么內(nèi)聯(lián)在結(jié)構(gòu)中。值類型主要包括簡(jiǎn)單類型、 結(jié)構(gòu)體類型和枚舉類型等。通常聲明為以下類型:int 、char、float 、long、bool、double、struct、enum、short、byte、decimal、sbyte、unit、ulong、ushort 等時(shí),該變量即為值類型。引用類型(Reference Type),引用類型實(shí)例分配在托管堆( managed heap上,變量保存了 實(shí)力數(shù)據(jù)的內(nèi)存引用。其
12、在 MSDN 中的定義為:引用類型存儲(chǔ)對(duì)值的內(nèi)存地址的引用,位于堆 上。引用類型可以是自描述類型、指針類型或接口類型。而自描述類型進(jìn)一步細(xì)分為數(shù)組和類 類型。類類型可以是用戶定義的類、 裝箱的值類型和委托。 通常聲明為以下類型: class、 interface、 delegate、 object、 string 以及其他的自定義引用類型時(shí),該變量即為引用類型。7)進(jìn)程與線程的區(qū)別?答案: 進(jìn)程就是計(jì)算機(jī)中正在執(zhí)行的程序 (即處于活動(dòng)狀態(tài)的程序 ),每一個(gè)進(jìn)程都有自己獨(dú)立的一 塊內(nèi)存空間和一組系統(tǒng)資源。線程和進(jìn)程有很多相似的特征,線程可以被看作是進(jìn)程的進(jìn)一步細(xì)分,也就是把進(jìn)程完成 的任務(wù)劃分成
13、一個(gè)個(gè)更小的子任務(wù),每一個(gè)子任務(wù)就是一個(gè)線程,然后用細(xì)分的這些線程分別 去執(zhí)行。線程是基于進(jìn)程的一個(gè)級(jí)別運(yùn)行單位,線程同樣包括一個(gè)內(nèi)存入口地址、一個(gè)出口地 址以及能夠執(zhí)行的代碼序列。但是線程和進(jìn)程的根本區(qū)別在于線程不能夠單獨(dú)執(zhí)行,它必須運(yùn) 行在處于活動(dòng)狀態(tài)的進(jìn)程中。8)方法覆寫(重寫)與方法重載的異同?答案: 覆寫,又稱重寫,就是在子類中重復(fù)定義父類方法,提供不同實(shí)現(xiàn),存在于有繼承關(guān)系的 父子關(guān)系中。當(dāng)子類重寫父類的虛函數(shù)后,父類對(duì)象就可以根據(jù)賦予它的不同子類指針動(dòng)態(tài)調(diào) 用子類的方法。重載, 就是在同一個(gè)類中存在多個(gè)同名的方法, 而這些方法的參數(shù)列表和返回值類型不同。 值得注意的是,重載的概念
14、并非面向?qū)ο缶幊痰姆懂?,從編譯器角度理解,不同的參數(shù)列表、 不同的返回值類型,就意味著不同的方法名。也就是說,方法的地址,在編譯器就已經(jīng)確定, 這是一種靜態(tài)綁定。9)談?wù)凜#中訪問修飾符有哪些,有何的異同?答案:共有五個(gè),public、 protected、 internal、 protected internal、 privatepublic :訪問成員沒有限制,屬于最高級(jí)別訪問權(quán)限;protected:包含類或者從包含類派生的類可以訪問; internal :程序集類型,在相同的命名空間內(nèi)可以訪問;protected internal :訪問僅限于從包含類派生的當(dāng)前程序集或類型。也就是同一
15、個(gè)程序集的對(duì)象,或者該類及其子類可以訪問;private :私有類型,只有當(dāng)前類自身可以訪問;10)C#中using的作用和不同用法有哪些?答案:( 1 )引入命名空間;映入命名空間的用法規(guī)則為:using Namespace;(2)為命名空間創(chuàng)建別名;為命名空間創(chuàng)建別名的用法規(guī)則為:using alias = namespace | type;(3)強(qiáng)制資源清理;實(shí)例化對(duì)象時(shí)用 using 修飾對(duì)象,在代碼執(zhí)行到 using 塊結(jié)束時(shí),自動(dòng)釋放由 using 修 飾的對(duì)象資源;11)堆與棧的異同?答案:堆和棧的區(qū)別可以用如下的比喻來看出:使用棧就象我們?nèi)ワ堭^里吃飯,只管點(diǎn)菜(發(fā)出 申請(qǐng))、付
16、錢、和吃(使用) ,吃飽了就走,不必理會(huì)切菜、洗菜等準(zhǔn)備工作和洗碗、刷鍋等掃 尾工作,他的好處是快捷,但是自由度小。使用堆就象是自己動(dòng)手做喜歡吃的菜肴,比較麻煩, 但是比較符合自己的口味,而且自由度大。堆和棧的區(qū)別主要分:操作系統(tǒng)方面的堆和棧,如上所述。還有就是數(shù)據(jù)結(jié)構(gòu)方面的堆和 棧,這些都是不同的概念。這里的堆實(shí)際上指的就是(滿足堆性質(zhì)的)優(yōu)先隊(duì)列的一種數(shù)據(jù)結(jié) 構(gòu),第 1 個(gè)元素有最高的優(yōu)先權(quán);棧實(shí)際上就是滿足先進(jìn)后出的性質(zhì)的數(shù)學(xué)或數(shù)據(jù)結(jié)構(gòu)。雖然堆棧,堆棧的說法是連起來叫,但是他們還是有很大區(qū)別的,連著叫只是由于歷史的原因。12)屬性與索引器的概念?答案:屬性: 通過名稱標(biāo)識(shí)。 通過簡(jiǎn)單名稱
17、或成員訪問來訪問。 可以為靜態(tài)成員或?qū)嵗蓡T。 屬性 的get訪問器沒有參數(shù)。屬性的 set訪問器包含隱式的value參數(shù)。索引器:通過簽名標(biāo)識(shí)。通過元素訪問來訪問。必須為實(shí)例成員。索引器的get 訪問器具有與索引器相同的形參表。除了value參數(shù)外,索引器的set訪問器還與索引器相同的形參表。13)序列化與反射的概念以及他們各自的作用?答案:反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、 模塊和類型的對(duì)象。您可以使用反射動(dòng)態(tài)地創(chuàng)建類型的實(shí)例,將類型綁定到現(xiàn)有對(duì)象,或從現(xiàn) 有對(duì)象中獲取類型。然后,可以調(diào)用類型的方法或訪問其字段和屬性。序列化:序列化是將對(duì)象轉(zhuǎn)換為
18、容易傳輸?shù)母袷降倪^程。例如,可以序列化一個(gè)對(duì)象,然 后使用 HTTP 通過 Internet 在客戶端和服務(wù)器之間傳輸該對(duì)象。在另一端,反序列化將從該流 重新構(gòu)造對(duì)象。14)談?wù)剬?duì)托管代碼與非托管代碼的理解?答案:以運(yùn)行庫為目標(biāo)的代碼稱為托管代碼,而不以運(yùn)行庫為目標(biāo)的代碼稱為非托管代碼。 在運(yùn)行庫的控制下執(zhí)行的代碼稱作托管代碼。相反,在運(yùn)行庫之外運(yùn)行的代碼稱作非托管 代碼。 COM 組件、 ActiveX 接口和 Win32 API 函數(shù)都是非托管代碼的示例。15).NET 中的垃圾收集機(jī)制是什么?答案: GC(Garbage Collection )垃圾回收器16) 談?wù)勀銓?duì)訪問關(guān)鍵字的認(rèn)識(shí)
19、?( this 、base)答案:base 關(guān)鍵字 常用于在派生類中實(shí)現(xiàn)對(duì)基類公有或者受保護(hù)成員的訪問,但是只局限于構(gòu)造函數(shù)、實(shí)例 方法和實(shí)例屬性訪問器中, MSDN 小結(jié)其具體功能包括:調(diào)用基類上已被其他方法重寫的方法; 制定創(chuàng)建派生類實(shí)例時(shí)應(yīng)調(diào)用的基類構(gòu)造函數(shù)。this 關(guān)鍵字常用于引用類的當(dāng)前實(shí)例,也包括繼承而來的方法,通常可以隱藏this, MSDN 小結(jié)其具體功能主要包括:限定被相似的名稱隱藏的成員; 將對(duì)象作為參數(shù)傳遞到其他方法; 聲明索引器。17) 常用的集合對(duì)象有哪些?各有什么特點(diǎn)?答案:Array 、 ArrayList 、HashTable、 List<T> 、
20、Dictionary<K,V> 。Array 是抽象類,不能直接實(shí)例化;ArrayList 的長(zhǎng)度是可變的;HashTable可以動(dòng)態(tài)維護(hù)長(zhǎng)度,而且可以通過關(guān)鍵字進(jìn)行搜索;List<T> 是類型安全的集合對(duì)象;Dictionary<K,V> 也是類型安全的集合對(duì)象;18) 談?wù)?const 與 readonly 的區(qū)別?答案:const默認(rèn)是靜態(tài)的,只能由類型來訪問,不能和static同時(shí)使用,否則出現(xiàn)編譯錯(cuò)誤;readonly 默認(rèn)是非靜態(tài),由實(shí)例對(duì)象來訪問,可以顯式使用static定義為靜態(tài)成員。const只能應(yīng)用在值類型和 string類型上,其他引用
21、類型常量只能定義為null,否則以new為const引用類型常量賦值,編譯器會(huì)引發(fā)只能用null對(duì)引用類型(字符串除外)的常量進(jìn)行初始化 ”錯(cuò)誤提示,原因是構(gòu)造函數(shù)初始化是在運(yùn)行時(shí),而非編譯時(shí);readonly 只讀字段,可以使任意類型,但是對(duì)于引用類型字段來說,readonly不能限制使該對(duì)象實(shí)例成員的讀寫控制。const 必須在字段聲明時(shí)初始化;而 readonly 可以在聲明時(shí),或者函數(shù)中進(jìn)行初始化,不同 的構(gòu)造函數(shù)可以為 readonly 常量實(shí)現(xiàn)不同的初始值。const可以定義字段和局部變量;而readonly則只能定義字段。const 定義時(shí)必須初始化;而 readonly 定義時(shí)
22、可以不進(jìn)行初始化,但是微軟強(qiáng)烈建議在定義 時(shí)進(jìn)行初始化操作,否則 CLR 將根據(jù)其類型賦予默認(rèn)值。數(shù)據(jù)和結(jié)構(gòu)體不能聲明為 const 變量, string 類型可以被聲明為常量,其源于 string 類型的 字符串恒定特性,使得 string 的值具有只讀特性。從應(yīng)用角度來看,對(duì)于恒定不變且單獨(dú)使用的量來說, 應(yīng)該考慮聲明為const變量,例如圓 周率、性能比、折扣率、百分比等;而對(duì)于可能隨實(shí)際運(yùn)行發(fā)生變化的量, 應(yīng)該考慮聲明為 readonly 常量,例如日期或時(shí)間,數(shù)據(jù)庫中的主鍵 ID 等。19) String 與 StringBuilder 的區(qū)別?答案:String 對(duì)象是不可變的 ,
23、它有固定長(zhǎng)度 ,每次使用它的時(shí)候 ,我們都要從內(nèi)存中重新分配空間 給他,如果我們重復(fù)修改它 ,那么內(nèi)存開銷是比較大的。比女口 string x=; “"x = a + b; + c最后x的值為“abc其實(shí)這個(gè)x已經(jīng)不是原來的那個(gè) x,內(nèi)存已經(jīng)為它重新分配了空間。如果我們要修改字符串而不創(chuàng)建新的對(duì)象,則可以使用StringBuilder。例如,當(dāng)在一個(gè)循環(huán)中將許多字符串連接在一起時(shí),使用StringBuilder類可以提升性能。雖然StringBuilder對(duì)象是動(dòng)態(tài)對(duì)象,允許擴(kuò)充它所封裝的字符串中字符的數(shù)量,但是您可以為它可容納的最大字符數(shù)指定一個(gè)值。此值稱為該對(duì)象的容量,不應(yīng)將它與
24、當(dāng)前 StringBuilder對(duì)象容納的字符串長(zhǎng)度混淆在一起。例如,可以創(chuàng)建StringBuilder類的帶有字符串“ Hello (長(zhǎng)度為5)的一個(gè)新實(shí)例,同時(shí)可以指定該對(duì)象的最大容量為25。當(dāng)修改StringBuilder時(shí),在達(dá)到容量之前,它不會(huì)為其自己重新分配空間。當(dāng)達(dá)到容量時(shí),將自動(dòng)分配新的空間且容量翻倍??梢允褂弥剌d 的構(gòu)造函數(shù)之一來指定 StringBuilder類的容量。下面的示例指定可以將 MyStringBuilder 對(duì)象擴(kuò)充到最大 25個(gè)空白。比如:StringBuilder MyStringBuilder = new StringBuilder("Hell
25、o World!", 25);我們也可以通過 Capacity屬性來設(shè)置對(duì)象的最大長(zhǎng)度。比如:MyStringBuilder.Capacity = 25;20)C#如何讀取XML文件?答案:使用XMLDocument對(duì)象的Load方法。如下:XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load(Server.MapPath(XMLFile.xml);第二部分:ADO.NET1)ADO.NET的主要對(duì)象有哪些,談?wù)勀銓?duì)他們的認(rèn)識(shí)。答案:(1)Command用于對(duì)數(shù)據(jù)庫操作的命令對(duì)象(2)Connection表示與數(shù)據(jù)庫連接對(duì)象;(3)Da
26、taAdapter用于充當(dāng)數(shù)據(jù)庫和 ADO.NET數(shù)據(jù)庫模型中斷開式連接的適配器;(4)DataSet斷開式操作時(shí)的內(nèi)存數(shù)據(jù)集合,中可以存儲(chǔ)多張表等;(5)DataReader對(duì)象只能實(shí)現(xiàn)對(duì)數(shù)據(jù)的讀取,不能完成其他的操作;2)DataSet與DataReader的區(qū)別。(斷開模式與非斷開模式的區(qū)別)答案:(1)DateSet是數(shù)據(jù)在內(nèi)存中的緩存,是保存數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),斷開模式;(2)DataReader不承擔(dān)保存數(shù)據(jù)的責(zé)任,需要自己手動(dòng)關(guān)閉連接數(shù)據(jù)庫,它只負(fù)責(zé)從數(shù)據(jù) 源讀取數(shù)據(jù)到本地而已,是只讀向前的,它不是數(shù)據(jù)結(jié)構(gòu)3).NET Framework 2.0 中,包含了幾種數(shù)據(jù)訪問的提供者,分別
27、有哪些。答案:(1)SqlClient: sql server 數(shù)據(jù)庫提供者;(2)OleDb : Access數(shù)據(jù)庫提供者;(3)Odbc通過Odbc驅(qū)動(dòng)與數(shù)據(jù)庫進(jìn)行操作;(4)OracleClient: Orcale 數(shù)據(jù)庫提供者;4) Command對(duì)象的常用方法有哪些,他們之間的區(qū)別有什么?( ExecuteNonQuery、ExecuteReader)答案:(1)ExecuteNonQuery(),ExecuteReader(),ExecuteScalar();(2) ExecuteNonQuery()此方法用來執(zhí)行增加(insert),刪除(delete),修改 (update)數(shù)
28、據(jù)用, 返回被sql語句影響的行數(shù)。在存儲(chǔ)過程中遇到set nocount on時(shí)返回默認(rèn)值,修改表中有 觸發(fā)器時(shí),返回結(jié)果和實(shí)際結(jié)果不同。(3) ExecuteReader()此方法用來讀取表中數(shù)據(jù), 僅向前,速度比較快(相對(duì)于dataAdapter)。(4)ExecuteScalar()此方法用來讀取select語句中返回的第一行第一列的值,返回值是object類型,注意思數(shù)據(jù)類型轉(zhuǎn)換。5)數(shù)據(jù)源組件的主要作用?( SqlDataSource 的作用)答案:SqlDataSource組件是一種數(shù)據(jù)源控件,它可以連接到任何ADO.NET支持的數(shù)據(jù)源(如SQL Server、Oracle 等)
29、,從中檢索數(shù)據(jù),并使得其他控件(如GridView 等控件)可以綁定到數(shù)據(jù)源。使用SqlDataSource組件訪問數(shù)據(jù),只需要提供用于連接到數(shù)據(jù)庫的連接字符串,并定義訪 問數(shù)據(jù)的SQL語句或存儲(chǔ)過程。在運(yùn)行時(shí),SqlDataSource組件會(huì)自動(dòng)打開與數(shù)據(jù)庫的連接,執(zhí)行 SQL 語句或存儲(chǔ)過程,完成數(shù)據(jù)訪問后自動(dòng)關(guān)閉連接。6).Net 中常用數(shù)據(jù)庫的鏈接字符串的寫法? (SQL SERVER 、Oracle 等)答案:( 1) SQL SERVER 連接字符串:“ server=.;uid=sa;pwd=sql;database=Northwind 或者 ”“Data Source=.;In
30、itial Catalog=Northwind;User ID=sa;Password=sql”(2)Orcale:連接字符串: Data Source=TORCL;User ld=myUsername;Password=myPassword;(3)Access連接字符串:GrocerToGo.mdb ”)7)對(duì)數(shù)據(jù)庫連接池的認(rèn)識(shí)?答案:連接池是一種在打開數(shù)據(jù)存儲(chǔ)區(qū)的連接時(shí)提高應(yīng)用程序性能的機(jī)制;在調(diào)用SqlConnection對(duì)象的 Close 方法時(shí), Sql Client.Net 數(shù)據(jù)提供者程序并不實(shí)際關(guān)閉內(nèi)部連接;相反,數(shù)據(jù)提供者 將該內(nèi)部連接存儲(chǔ)到一個(gè)池中。 甚至在 SqlConne
31、ction 對(duì)象被處理后, 該內(nèi)部鏈接也不留在池中; 如果再次使用同樣的連接時(shí),只要調(diào)用 SqlConnection 對(duì)象的 Open 方法,就會(huì)再一次使用同一 連接;8)使用 ADO.NET 技術(shù)如何優(yōu)化系統(tǒng)性能?答案:一、數(shù)據(jù)庫連接打開和關(guān)閉在需要連接時(shí)打開,當(dāng)訪問完數(shù)據(jù)庫要立刻關(guān)閉連接。二、數(shù)據(jù)庫查詢1、直接生成 SQL 語句。 Sql Server 每次都要對(duì)其進(jìn)行編譯,在性能方面不會(huì)有很大的提高。另 外也不夠安全,容易被攻擊。2、使用帶參數(shù)的 SQL 命令。 這種方式 Sql Server 只對(duì)其編譯一次, 對(duì)于不同的參數(shù)可以重復(fù)使 用編譯后的命令,提高了性能。3、使用 Sql Se
32、rver 存儲(chǔ)過程。編譯一次,具有獨(dú)立性,便于修改和維護(hù)。一次能完成用語句發(fā) 送多次的功能,減少了網(wǎng)絡(luò)的流量。 并不一定存儲(chǔ)過程一定比語句效率要高,如果商業(yè)邏輯很復(fù)雜 的話,有時(shí)候用語句比存儲(chǔ)過程效率要高。第三部分: ASP.NET1)談?wù)勀銓?duì) MVC 模型的認(rèn)識(shí)?答案:MVC(Model View Controller) 是一種較為廣泛的結(jié)構(gòu)設(shè)計(jì)方式 ,MVC 設(shè)計(jì)將一般的應(yīng)用程序 根據(jù)功能不同 ,劃分為三個(gè)主要的部分 ,它們分別是模型 ,視圖 ,控制器。所謂模型 ,就是在 MVC 中需要被顯示的數(shù)據(jù) ,在通常情況下 ,該模型需要從數(shù)據(jù)庫中讀取數(shù)據(jù) 保存模型的狀態(tài)等 ,提供數(shù)據(jù)的訪問方法及數(shù)
33、據(jù)維護(hù)。所謂視圖 ,就是用來顯示模型中數(shù)據(jù)的用戶界面,簡(jiǎn)單的說就是 HTML 頁面。所謂控制器 ,就是用來處理用戶輸入或者交互命令,以便改變模型狀態(tài) ,選擇適當(dāng)?shù)?視圖來顯示對(duì)應(yīng)的模型數(shù)據(jù)。2)頁面?zhèn)髦捣绞接心男??答案:?1)使用 QueryString 變量 : QueryString 是一種非常簡(jiǎn)單也是使用比較多的一種傳值方式,但是 它將傳遞的值顯示在瀏覽器的地址欄中,如果是傳遞一個(gè)或多個(gè)安全性要求不高或是結(jié)構(gòu)簡(jiǎn)單的數(shù)值時(shí)可以使用這個(gè)方法 :連接進(jìn)行跳轉(zhuǎn)<a href= ' target.aspx?param1=hello¶m2=hi '>服務(wù)
34、器端跳轉(zhuǎn) :Response.Redirect( "target.aspx?param1=hello¶m2=hi ")接收頁面: string str = Request.QueryString"param1"string str1 = Request.QueryString"param2;(2)使用 Cookie 對(duì)象 (Cookie 是存放在客戶端的小量信息 ),它由網(wǎng)絡(luò)服務(wù)器發(fā)送出來 ,存儲(chǔ)在網(wǎng) 絡(luò)瀏覽器上 ,當(dāng)用戶下次訪問站點(diǎn)時(shí) ,可以根據(jù)檢測(cè)該瀏覽器獲得這些信息設(shè)置 Cookie:Response.CookiesCoo
35、kies 的名稱 .Value= 變量名 ;/寫入 CookieString 變量名 = Request.CookiesCookie 的名稱.Value /讀取 Cookie(3)使用Session變量(session是存放在服務(wù)器端的)Session對(duì)象存儲(chǔ)在服務(wù)器端,針對(duì)一個(gè)連接服務(wù)器會(huì)自動(dòng)分配一個(gè)ID來標(biāo)識(shí)每一個(gè)不同的用戶,當(dāng)用戶訪問 weby 應(yīng)用程序的時(shí)候, Session 可以提供變量可以在該用戶訪問的 web 應(yīng)用的所有頁面中共享設(shè)置 Session:Session “Sessi名稱”=值;獲取 Session:變量 =Session“ Sess名稱”;( 4)使用 Applic
36、ation 對(duì)象變量Application 對(duì)象的作用范圍是整個(gè)應(yīng)用程序, 用來在所有用戶間共享信息。 此種方法不 常使用,因?yàn)?Application 在一個(gè)應(yīng)用程序域范圍共享,所有用戶可以改變及設(shè)置其值,故 只應(yīng)用計(jì)數(shù)器等需要全局變量的地方。設(shè)置 Application :Application “ Applicat名稱”=值;獲取 Application :變量 =Application “ Applica名稱 ” ;( 5) PostBackUrl 屬性使用 PostBackUrl 屬性的控件只有 Button,LinkButton,ImageButton 三種,才能實(shí)現(xiàn)跨頁 面?zhèn)鬟f。
37、(6)使用 Server.Transfer方法:服務(wù)器只向另一頁傳遞上下文即可。 其優(yōu)點(diǎn)是您可以共享頁之間的頁上下文信息。 其 缺點(diǎn)是用戶的瀏覽器不知道在進(jìn)行傳輸,因此不更新瀏覽器的歷史記錄。如果用戶刷新此 頁,則可能會(huì)產(chǎn)生意外的結(jié)果。特征:將控件傳輸?shù)皆谠错撐恢贸尸F(xiàn)的新頁中。僅重定向到與源頁位于相同的Web應(yīng)用程序中的目標(biāo)頁。使您能夠從源頁讀取值和公共屬性。不會(huì)用目標(biāo)頁的相關(guān)信息來更 新瀏覽器信息。在瀏覽器中按 “刷新”或“后退 ”按鈕可能導(dǎo)致意外行為。用法:用于條件導(dǎo)航,在需要控制何時(shí)導(dǎo)航和需要訪問源頁的上下文時(shí)使用。該選 項(xiàng)最適合在對(duì)用戶隱藏 URL 的情況下使用。3) ASP.NET
38、頁面的生命周期?(頁面加載和觸發(fā)事件的順序)答案:常規(guī)頁生命周期階段( 1)頁面請(qǐng)求 :頁請(qǐng)求發(fā)生在頁生命周期開始之前。用戶請(qǐng)求頁時(shí),ASP.NET 將確定是否需要分析和編譯頁(從而開始頁的生命周期) ,或者是否可以在不運(yùn)行頁的情況下發(fā)送頁的緩存 版本以進(jìn)行響應(yīng)。(2)開始:在開始階段,將設(shè)置頁屬性,如Request和Response在此階段,頁還將確定請(qǐng)求是回發(fā)請(qǐng)求還是新請(qǐng)求,并設(shè)置 IsPostBack 屬性。此外,在開始階段期間,還將設(shè)置頁 的 UICulture 屬性。( 3)頁初始化 :頁初始化期間,可以使用頁中的控件,并將設(shè)置每個(gè)控件的UniqueID 屬性。此外,任何主題都將應(yīng)用
39、于頁。如果當(dāng)前請(qǐng)求是回發(fā)請(qǐng)求,則回發(fā)數(shù)據(jù)尚未加載,并且控 件屬性值尚未還原為視圖狀態(tài)中的值。( 4)加載 :加載期間,如果當(dāng)前請(qǐng)求是回發(fā)請(qǐng)求,則將使用從視圖狀態(tài)和控件狀態(tài)恢復(fù)的 信息加載控件屬性。( 5 )驗(yàn)證 :在驗(yàn)證期間,將調(diào)用所有驗(yàn)證程序控件的 Validate 方法,此方法將設(shè)置各個(gè) 驗(yàn)證程序控件和頁的 IsValid 屬性。( 6) 回發(fā)事件處理 :如果請(qǐng)求是回發(fā)請(qǐng)求,則將調(diào)用所有事件處理程序。( 7)呈現(xiàn) :在呈現(xiàn)之前,會(huì)針對(duì)該頁和所有控件保存視圖狀態(tài)。在呈現(xiàn)階段中,頁會(huì)針對(duì) 每個(gè)控件調(diào)用 Render 方法,它會(huì)提供一個(gè)文本編寫器,用于將控件的輸出寫入頁的Response屬性的
40、OutputStream 中( 8)卸載 :完全呈現(xiàn)頁并已將頁發(fā)送至客戶端、準(zhǔn)備丟棄該頁后,將調(diào)用卸載。此時(shí),將 卸載頁屬性(如 Response和Request)并執(zhí)行清理。3) ViewState 的概念與作用是什么,談?wù)勀銓?duì)它的認(rèn)識(shí)?答案:ViewState 也稱為視圖狀態(tài), ASP.NET 使用 ViewState 這種機(jī)制來跟蹤服務(wù)器控件狀態(tài)值, 否則這些值將不作為 WEB 窗體的一部分而回傳。 即頁面中的控件被編程或用戶填值等方式改變 了狀態(tài)后,當(dāng)頁面發(fā)生回傳,這些狀態(tài)仍然可以保持。因此,除了可以減少煩瑣的工作和代碼 外, ViewState 還可以減少數(shù)據(jù)庫的讀取頻率。在*.as
41、px頁面中,如果 form 元素的“runat屬性值為 “ server(這是 VS 2005/VS 2008創(chuàng)建 ASP.NET頁面時(shí)的默認(rèn)設(shè)置),該頁面所生成的HTML頁面即具備了 ViewState的功能。ViewState 具體表現(xiàn)為form元素中被添加一個(gè)隱藏的“ id屬性為“_VIEWSTATE的隱藏字段,這個(gè)字段中存放了所有控件在 ViewState 中的狀態(tài)值。這個(gè)隱藏字段中的數(shù)據(jù)是 64 位編碼的字符串,包含 了一個(gè)集合,該集合中保存了當(dāng)前頁面上所有服務(wù)器控件的名稱/值對(duì),編程者可以編程通過ViewState 訪問這些值。注意: ViewState 不負(fù)責(zé)存儲(chǔ) TextBox
42、 、Checkbox、CheckBoxList 、RadioButtonList 等這些實(shí) 現(xiàn)了 IPostBackDataHandler 接口的控件所更改的狀態(tài)值。在頁面周期中的初始化過程(即Page_lnit()事件后)中,在 LoadViewState的事件中Page類從“id屬性為“_VIEWSTATE的字段 中為諸如啟用了 ViewState 的控件裝載值。緊接著, LoadPostBackData 事件被觸發(fā), Page 類從 HTTP提交的頭部信息中裝載實(shí)現(xiàn)了IPostBackDataHandler接口的控件(如 TextBox)狀態(tài)值。當(dāng)TextBox控件的“ TextMode
43、屬性為"Password"時(shí),無法保存狀態(tài)值(安全需要)。如果頁面僅用于回傳,則頁面內(nèi)自定義的其他數(shù)據(jù)也可以存儲(chǔ)于“id屬性為“_VIEWSTATE的隱藏字段中。編程者只需直接訪問 ViewState屬性即可,該屬性返回了 System.Web.Ul.StateBag類對(duì)象的訪問,可利用該對(duì)象的索引器以名稱/值對(duì)的方式存取自定義數(shù)據(jù)。ViewState 用于保存頁面中所有控件的回傳時(shí)的狀態(tài)數(shù)據(jù), 使 WebForm 程序類似于 WinForm 程序一樣工作。 ViewState 可以在控件級(jí)別,頁面級(jí)別,程序級(jí)別及全局配置中設(shè)置 ViewState 是否禁用, ViewSt
44、ate 默認(rèn)是啟用的。在解答中還提及了禁用 ViewState 多種方法,不同方法對(duì)應(yīng)著不同的禁用范圍。除了以上例 子中直接在服務(wù)器控件標(biāo)簽中設(shè)置“ EnableViewState屬性為“false,還可以在Page指令中設(shè)置這個(gè)屬性以達(dá)到頁面級(jí)禁用ViewState的目的。禁用整個(gè)WEB應(yīng)用程序 ViewState,修改Web.config中相應(yīng)元素的屬性即可,最后,禁用服務(wù)器全局的ViewState,修改.Net Framework安裝目錄下的 machine.config即可。當(dāng)禁用了 ViewState以后,控件還可以通過control state (控件狀態(tài))保存狀態(tài)數(shù)據(jù),該屬性一般
45、用于自定義控件。說明: ViewState 只在頁面內(nèi)有效,不能跨頁面使用。4) ASP.NET 頁面間的跳轉(zhuǎn)方式有哪些,有何異同?答案:(1) <a>標(biāo)簽:這是最常見的一種轉(zhuǎn)向方法 ;( 2) HyperLink 控件:A 服務(wù)器端控件屬性 NavigateUrl 指定要跳轉(zhuǎn)到的 Url 地址 NavigateUrl 是可以在服務(wù)器端使用代碼修改,這個(gè)區(qū)別于 <a> 由于 HyperLink 本身沒有事件所以要在服務(wù)器端其它事件中設(shè)置 NavigateUrl(3)Response.Redirect()方法:過程:發(fā)送一個(gè) Http 響應(yīng)到客戶端,通知客戶端跳轉(zhuǎn)到一個(gè)新
46、的頁面,然 后客戶端再發(fā)送跳轉(zhuǎn)請(qǐng)求到服務(wù)器端。頁面跳轉(zhuǎn)之后內(nèi)部控件保存的所有信息丟失,當(dāng) A 跳轉(zhuǎn)到 B, B 頁面將不 能訪問 A 頁面提交的數(shù)據(jù)信息。使用這個(gè)方法使用這個(gè)方法跳轉(zhuǎn)后瀏覽器地址欄的 Url 信息改變可以使用 Session Cookies Application 等對(duì)象進(jìn)行頁面間的數(shù)據(jù)傳遞 重定向操作發(fā)生在客戶端, 總共涉及到兩次與 Web 服務(wù)器的通信: 一次是對(duì)原 始頁面的請(qǐng)求,另一次是重定向新頁面的請(qǐng)求(4) Server.Transfer()方法:實(shí)現(xiàn)頁面跳轉(zhuǎn)的同時(shí)將頁面的控制權(quán)進(jìn)行移交,頁面跳轉(zhuǎn)過程中RequestSession等保存的信息不變,跳轉(zhuǎn)之后可以使用上一
47、個(gè)頁面提交的數(shù)據(jù),跳轉(zhuǎn)之 后瀏覽器地址欄的 Url 不變, 這種方法的重定向請(qǐng)求是在服務(wù)器端的進(jìn)行的, 瀏 覽器不知道頁面已經(jīng)發(fā)生了一次跳轉(zhuǎn)(5) Server.Execute()方法:該方法允許當(dāng)前頁面執(zhí)行同一個(gè)Web服務(wù)器上的另一個(gè)頁面,頁面執(zhí)行完畢之后重新回到原始頁面發(fā)出Server.Execute()的位置。這種方式類似針對(duì)頁面的一次函數(shù)調(diào)用 被請(qǐng)求的頁面可以使用原始頁面的表單數(shù)據(jù)和查詢字符串集合, 被調(diào)用頁面的Page指令的EnableViewStateMac屬性設(shè)置為False( 6)JavaScript :string str = "<script languag
48、e=javascript>history.go(-2);</script>"Response.Write("<script>document.location.href='ProjectAddList.aspx'</script>")話題相關(guān) :(1) 為了確保 HTML輸出的合法性 最好使用Response.Redirect方法;因?yàn)镾erver.Execute或者Server.Transfer方法返回給客戶端的頁面包含多個(gè)<Html><body>標(biāo)記,不是合法的 HTML 頁面,
49、在非 IE 瀏覽器中可能會(huì)發(fā)生錯(cuò)誤。(2) 由于Server.Transfer在服務(wù)器端執(zhí)行重定向,所以避免了不必要的網(wǎng)絡(luò)通信,從而獲得了 更好的性能和瀏覽效果( 3)當(dāng)需要把用戶跳轉(zhuǎn)到另一臺(tái)服務(wù)器上的頁面的時(shí)候,使用 Redirect(4) 當(dāng)需要把用戶跳轉(zhuǎn)到非 aspx頁面時(shí)候,如html,使用Redirect(5) 需要把查詢字符串作為 url 部分傳給服務(wù)器的時(shí)候,使用Redirect,因?yàn)槠渌麅煞N方法不 能做到2次postback,把數(shù)據(jù)帶回服務(wù)器(6) 需要aspx頁面間的轉(zhuǎn)換(不涉及登錄),使用Transfer(7) 當(dāng)需要把a(bǔ)spx頁面的輸出結(jié)果插入到另一個(gè)aspx頁面的時(shí)候使
50、用 Executeo( 8)當(dāng)需要用戶來決定什么時(shí)候跳轉(zhuǎn)頁面,就使用超鏈接。(9)要用程序來控制轉(zhuǎn)換的目標(biāo),但轉(zhuǎn)換的時(shí)機(jī)由用戶決定,使用Web服務(wù)器的HyperLink控件,動(dòng)態(tài)設(shè)置其 NavigateUrl 屬性。5) 談?wù)勀銓?duì) C/S 與 B/S 的認(rèn)識(shí),它們各有何優(yōu)缺點(diǎn)?答案:C/S:即客戶機(jī)/服務(wù)器網(wǎng),Client/Server。在客戶機(jī)/服務(wù)器網(wǎng)絡(luò)中,服務(wù)器是網(wǎng)絡(luò)的核心,而客 戶機(jī)是網(wǎng)絡(luò)的基礎(chǔ),客戶機(jī)依靠服務(wù)器獲得所需要的網(wǎng)絡(luò)資源,而服務(wù)器為客戶機(jī)提供網(wǎng)絡(luò)必 須的資源。它是軟件系統(tǒng)體系結(jié)構(gòu),通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理分配到Client 端和 Server 端來實(shí)
51、現(xiàn),降低了系統(tǒng)的通訊開銷。 目前大多數(shù)應(yīng)用軟件系統(tǒng)都是 Client/Server 形式的兩層結(jié)構(gòu),由于現(xiàn)在的軟件應(yīng)用系統(tǒng)正在向分布式的Web應(yīng)用發(fā)展,Web和Client/Server應(yīng)用都可以進(jìn)行同樣的業(yè)務(wù)處理,應(yīng)用不同的模塊共享邏輯組件;因此,內(nèi)部的和外部的用戶 都可以訪問新的和現(xiàn)有的應(yīng)用系統(tǒng),通過現(xiàn)有應(yīng)用系統(tǒng)中的邏輯可以擴(kuò)展出新的應(yīng)用系統(tǒng)。一、C/S架構(gòu)軟件的優(yōu)勢(shì)與劣勢(shì)(1) 應(yīng)用服務(wù)器運(yùn)行數(shù)據(jù)負(fù)荷較輕。最簡(jiǎn)單的C/S 體系結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用由兩部分組成, 即客戶應(yīng)用程序和數(shù)據(jù)庫服務(wù)器程序。二者可分別稱為前臺(tái)程序與后臺(tái)程序。運(yùn)行數(shù)據(jù)庫服務(wù) 器程序的機(jī)器,也稱為應(yīng)用服務(wù)器。一旦服務(wù)器程序被
52、啟動(dòng),就隨時(shí)等待響應(yīng)客戶程序發(fā)來的 請(qǐng)求;客戶應(yīng)用程序運(yùn)行在用戶自己的電腦上,對(duì)應(yīng)于數(shù)據(jù)庫服務(wù)器,可稱為客戶電腦,當(dāng)需 要對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行任何操作時(shí),客戶程序就自動(dòng)地尋找服務(wù)器程序,并向其發(fā)出請(qǐng)求, 服務(wù)器程序根據(jù)預(yù)定的規(guī)則作出應(yīng)答,送回結(jié)果,應(yīng)用服務(wù)器運(yùn)行數(shù)據(jù)負(fù)荷較輕。(2) 數(shù)據(jù)的儲(chǔ)存管理功能較為透明。在數(shù)據(jù)庫應(yīng)用中,數(shù)據(jù)的儲(chǔ)存管理功能,是由服務(wù)器 程序和客戶應(yīng)用程序分別獨(dú)立進(jìn)行的,前臺(tái)應(yīng)用可以違反的規(guī)則,并且通常把那些不同的(不 管是已知還是未知的)運(yùn)行數(shù)據(jù),在服務(wù)器程序中不集中實(shí)現(xiàn),例如訪問者的權(quán)限,編號(hào)可以 重復(fù)、必須有客戶才能建立定單這樣的規(guī)則。所有這些,對(duì)于工作在前臺(tái)程序上的
53、最終用戶, 是“透明 ”的,他們無須過問(通常也無法干涉)背后的過程,就可以完成自己的一切工作。在客 戶服務(wù)器架構(gòu)的應(yīng)用中,前臺(tái)程序不是非常 “瘦小 ”,麻煩的事情都交給了服務(wù)器和網(wǎng)絡(luò)。在 C/S 體系的下,數(shù)據(jù)庫不能真正成為公共、專業(yè)化的倉庫,它受到獨(dú)立的專門管理。( 3) C/S 架構(gòu)的劣勢(shì)是高昂的維護(hù)成本且投資大。首先,采用 C/S 架構(gòu),要選擇適當(dāng)?shù)臄?shù)據(jù) 庫平臺(tái)來實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的真正 “統(tǒng)一”,使分布于兩地的數(shù)據(jù)同步完全交由數(shù)據(jù)庫系統(tǒng)去管理, 但邏輯上兩地的操作者要直接訪問同一個(gè)數(shù)據(jù)庫才能有效實(shí)現(xiàn),有這樣一些問題,如果需要建 立“實(shí)時(shí) ”的數(shù)據(jù)同步, 就必須在兩地間建立實(shí)時(shí)的通訊連接,
54、 保持兩地的數(shù)據(jù)庫服務(wù)器在線運(yùn)行, 網(wǎng)絡(luò)管理工作人員既要對(duì)服務(wù)器維護(hù)管理,又要對(duì)客戶端維護(hù)和管理,這需要高昂的投資和復(fù) 雜的技術(shù)支持,維護(hù)成本很高,維護(hù)任務(wù)量大。( 4)其次,傳統(tǒng)的 C/S 結(jié)構(gòu)的軟件需要針對(duì)不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件,由于 產(chǎn)品的更新?lián)Q代十分快, 代價(jià)高和低效率已經(jīng)不適應(yīng)工作需要。 在 JAVA 這樣的跨平臺(tái)語言出現(xiàn) 之后,B/S架構(gòu)更是猛烈沖擊C/S,并對(duì)其形成威脅和挑戰(zhàn)。B/S:B/S 結(jié)構(gòu)( Browser/Server 結(jié)構(gòu))結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。 它是隨著 Internet 技術(shù)的興起, 對(duì) C/S 結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工
55、作界面是通過WWW 瀏覽器來實(shí)現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端(Server)實(shí)現(xiàn),形成所謂三層 3-tier 結(jié)構(gòu)。這樣就大大簡(jiǎn)化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級(jí)的成 本和工作量,降低了用戶的總體成本(TCO)。以目前的技術(shù)看,局域網(wǎng)建立B/S結(jié)構(gòu)的網(wǎng)絡(luò)應(yīng)用,并通過 Internet/Intranet 模式下數(shù)據(jù)庫應(yīng)用,相對(duì)易于把握、成本也是較低的。它是一次性 到位的開發(fā),能實(shí)現(xiàn)不同的人員,從不同的地點(diǎn),以不同的接入方式(比如LAN, WAN,Internet/Intranet 等)訪問和操作共同的數(shù)據(jù)庫;它能有效地保護(hù)數(shù)據(jù)平臺(tái)和管理訪問權(quán)限
56、,服務(wù) 器數(shù)據(jù)庫也很安全。 B/S 架構(gòu)管理軟件更是方便、快捷、高效。B/S 架構(gòu)軟件的優(yōu)勢(shì)與劣勢(shì)( 1)維護(hù)和升級(jí)方式簡(jiǎn)單。目前,軟件系統(tǒng)的改進(jìn)和升級(jí)越來越頻繁,B/S 架構(gòu)的產(chǎn)品明顯體現(xiàn)著更為方便的特性。對(duì)一個(gè)稍微大一點(diǎn)單位來說,系統(tǒng)管理人員如果需要在幾百甚至上千 部電腦之間來回奔跑,效率和工作量是可想而知的,但 B/S 架構(gòu)的軟件只需要管理服務(wù)器就行 了,所有的客戶端只是瀏覽器,根本不需要做任何的維護(hù)。無論用戶的規(guī)模有多大,有多少分 支機(jī)構(gòu)都不會(huì)增加任何維護(hù)升級(jí)的工作量,所有的操作只需要針對(duì)服務(wù)器進(jìn)行;如果是異地, 只需要把服務(wù)器連接專網(wǎng)即可,實(shí)現(xiàn)遠(yuǎn)程維護(hù)、升級(jí)和共享。所以客戶機(jī)越來越“
57、瘦”,而服務(wù)器越來越 “胖”是將來信息化發(fā)展的主流方向。 今后, 軟件升級(jí)和維護(hù)會(huì)越來越容易, 而使用起來會(huì) 越來越簡(jiǎn)單,這對(duì)用戶人力、物力、時(shí)間、費(fèi)用的節(jié)省是顯而易見的,驚人的。因此,維護(hù)和 升級(jí)革命的方式是 “瘦”客戶機(jī), “胖”服務(wù)器。( 2)成本降低,選擇更多。大家都知道windows 在桌面電腦上幾乎一統(tǒng)天下,瀏覽器成為了標(biāo)準(zhǔn)配置,但在服務(wù)器操作系統(tǒng)上 windows 并不是處于絕對(duì)的統(tǒng)治地位。 現(xiàn)在的趨勢(shì)是凡使用 B/S 架構(gòu)的應(yīng)用管理軟件,只需安裝在 Linux 服務(wù)器上即可,而且安全性高。所以服務(wù)器操作系 統(tǒng)的選擇是很多的,不管選用那種操作系統(tǒng)都可以讓大部分人使用windows 作為桌面操作系統(tǒng)電腦不受影響,這就使的最流行免費(fèi)的 Linux 操作系統(tǒng)快速發(fā)展起來, Linux 除了操作系統(tǒng)是免 費(fèi)的以外,連數(shù)據(jù)庫也是免費(fèi)的,這種選擇非常盛行。(3)應(yīng)用服務(wù)器運(yùn)行數(shù)據(jù)負(fù)荷較重。由于B/S架構(gòu)管理軟件只安裝在服務(wù)器端(Server)上,網(wǎng)絡(luò)管理人員只需要管理服務(wù)器就行了,用戶界面主要事務(wù)邏輯在服務(wù)器(Server)端完全通過WWW瀏覽器實(shí)現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實(shí)現(xiàn),所有的客戶端只有瀏覽器,網(wǎng)絡(luò)管理人員只需要做硬件維護(hù)。但是,應(yīng)用服務(wù)器運(yùn)行數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 品牌形象與營(yíng)銷策略匹配度評(píng)估表
- 醫(yī)藥冷鏈運(yùn)輸國際
- 能源企業(yè)社會(huì)責(zé)任報(bào)告編制指南
- 季度項(xiàng)目進(jìn)展及成果匯報(bào)會(huì)議紀(jì)實(shí)
- 血液腫瘤練習(xí)試題及答案
- 保育師初級(jí)復(fù)習(xí)試題有答案
- 物流配送中心庫存管理優(yōu)化方案
- 新品市場(chǎng)推廣策略與操作手冊(cè)
- 股份制辦公環(huán)境改善方案
- 病理學(xué)與病理生理學(xué)作業(yè)指導(dǎo)書
- 工程勘察設(shè)計(jì)收費(fèi)標(biāo)準(zhǔn)使用手冊(cè)
- 高速鐵路設(shè)計(jì)規(guī)范(最新版)
- 25種全球最流行的管理工具
- 道德與法治-五年級(jí)(下冊(cè))-《建立良好的公共秩序》教學(xué)課件
- 小學(xué)班主任工作經(jīng)驗(yàn)交流ppt
- 初中英語教學(xué)設(shè)計(jì)Its-time-to-watch-a-cartoon
- 2022年安徽高校教師崗前培訓(xùn)結(jié)業(yè)統(tǒng)考試題及參考答案
- 城市社區(qū)建設(shè)概論資料
- 數(shù)學(xué)-九宮數(shù)獨(dú)100題(附答案)
- 蘇教版四年級(jí)下冊(cè)科學(xué)全冊(cè)知識(shí)點(diǎn)總結(jié)
- 第三方單位考核管理辦法
評(píng)論
0/150
提交評(píng)論