已閱讀5頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
面向?qū)ο蟮乃枷?1,面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念 類和對(duì)象 屬性、方法與事件 封裝 繼承 多態(tài)性,類和對(duì)象,在C#中,class為類的關(guān)鍵字。 把屬于類的對(duì)象稱為類的實(shí)例,可以把類看成是對(duì)象的模板,把對(duì)象看成是類的實(shí)例。,1、類的聲明 【格式】: 類修飾符 class 類名:基類類名 成員定義列表; 【功能】:定義一個(gè)由“類名”指定的類。,3,1)支持的類修飾符,4,2)如果缺省類修飾符,默認(rèn)為private。 3)“基類類名”指定派生該類的基類,如果該類沒(méi)有從任何類繼承,則不需要該選項(xiàng)。 4)“成員定義列表”類成員有兩部分組成:一個(gè)是新聲明的類成員;另一個(gè)則是直接從它的基類繼承而來(lái)的成員。 類成員聲明主要包括:常數(shù)、字段、方法、屬性、事件、索引器、運(yùn)算符、構(gòu)造函數(shù)、析構(gòu)函數(shù)等。 類成員聲明中的訪問(wèn)修飾符:public、private、protected、internal中。默認(rèn)訪問(wèn)修飾符為private。,5,字段:字段是與類相關(guān)的變量,相當(dāng)于C+中的變量。 常量:用來(lái)定義與類相關(guān)的常量值。 事件:是類的成員,它可以讓對(duì)象通知調(diào)用者某些特定的行為發(fā)生時(shí)間。 方法:完成類中各種計(jì)算或功能的操作,類似函數(shù)。 屬性:定義類的特征,并對(duì)他們提供讀、寫(xiě)操作。,類成員的組成:,6,索引器:允許編程人員在訪問(wèn)數(shù)組時(shí),通過(guò)索引器訪問(wèn)類的多個(gè)實(shí)例。又稱下標(biāo)指示器。 運(yùn)算符:定義類的實(shí)例能使用的運(yùn)算符。 構(gòu)造函數(shù):在類被實(shí)例化時(shí)首先執(zhí)行的函數(shù),主要完成對(duì)象初始化操作。 析構(gòu)函數(shù):在對(duì)象被銷毀之前最后執(zhí)行的函數(shù),主要是完成對(duì)象結(jié)束時(shí)的收尾操作。,7,例:成員常量的聲明 關(guān)鍵字const用于聲明常量,后跟數(shù)據(jù)類型的聲明。類的常量可以加上new、public、protected、internal或private修飾。 Class A public const double A=1.0; public const double X=1.0,Y=2.0,Z=3.0; ,8,2、類的靜態(tài)成員和實(shí)例成員 靜態(tài)成員:有static,屬于類所有,只能通過(guò)類名來(lái)訪問(wèn)。 實(shí)例成員:沒(méi)有static,屬于類的實(shí)例所有,又稱實(shí)例成員,只能通過(guò)類的實(shí)例對(duì)象來(lái)訪問(wèn)。,9,using System; class Example1 static public int a;/靜態(tài)成員 public int b; /實(shí)例成員 void Meth1() /實(shí)例方法 a = 10; /實(shí)例方法中可以訪問(wèn)本類的靜態(tài)成員 b = 20; /實(shí)例方法中可以訪問(wèn)本類的實(shí)例成員 static void Meth2() a = 30; /靜態(tài)方法能夠訪問(wèn)本類的靜態(tài)成員 /b=40; /靜態(tài)方法不能訪問(wèn)本類的實(shí)例成員 ,10,【格式】: 類名 實(shí)例名=new 類名(參數(shù)); 【功能】:生成一個(gè)由“類名”指定的類的名為“實(shí)例名”的實(shí)例,如果有參數(shù)則將參數(shù)傳遞給構(gòu)造函數(shù)。 【說(shuō)明】: 1)、new關(guān)鍵字實(shí)際上是調(diào)用構(gòu)造函數(shù)來(lái)完成實(shí)例的初始化工作。,3、對(duì)象的聲明,對(duì)象相當(dāng)于現(xiàn)實(shí)世界中的實(shí)體 在指定一個(gè)類后,往往把屬于這個(gè)類的對(duì)象稱為類的實(shí)例,可以把類看成是對(duì)象的模板,把對(duì)象看成是類的實(shí)例。 比如:人和張三;int和10,11,2)、創(chuàng)建實(shí)例也可以分為兩步:先定義實(shí)例變量,然后用new關(guān)鍵字創(chuàng)建實(shí)例。 類名 實(shí)例名; /定義類的實(shí)例變量 實(shí)例名=new 類名(參數(shù));/創(chuàng)建類的實(shí)例。 如:Student Stu1=new Student(); 等價(jià)于:Student Stu1; Stu1=new Student();,類的構(gòu)造函數(shù)和析構(gòu)函數(shù),12,C#中有兩個(gè)特殊的函數(shù):構(gòu)造函數(shù)、析構(gòu)函數(shù)。 構(gòu)造函數(shù):是在創(chuàng)建類的實(shí)例(也就是對(duì)象)時(shí)首先執(zhí)行的函數(shù)。 析構(gòu)函數(shù):是當(dāng)實(shí)例(對(duì)象)從內(nèi)存中銷毀前最后執(zhí)行的函數(shù)。 這兩個(gè)函數(shù)的執(zhí)行是無(wú)條件的,系統(tǒng)會(huì)自動(dòng)在創(chuàng)建對(duì)象時(shí)調(diào)用構(gòu)造函數(shù),在銷毀對(duì)象時(shí)調(diào)用析構(gòu)函數(shù),而不需要程序員通過(guò)代碼調(diào)試。,13,構(gòu)造函數(shù) 作用:為對(duì)象分配存儲(chǔ)空間,完成初始化操作(給類的成員變量賦值等)。 構(gòu)造函數(shù)有如下規(guī)則: 1)構(gòu)造函數(shù)的函數(shù)名和類的名稱一樣。 2)當(dāng)某個(gè)類沒(méi)有構(gòu)造函數(shù)時(shí),系統(tǒng)將自動(dòng)為其創(chuàng)建默認(rèn)構(gòu)造函數(shù)。 example1() ;,3)構(gòu)造函數(shù)的訪問(wèn)修飾符總是public。如果是private,則表示這個(gè)類不能被實(shí)例化,這通常用于只含有靜態(tài)成員的類中。 4)構(gòu)造函數(shù)不用聲明返回類型。 5)構(gòu)造函數(shù)可以帶參數(shù)也可以不帶參數(shù)。,析構(gòu)函數(shù),析構(gòu)函數(shù)用于析構(gòu)類的實(shí)例。 不能在結(jié)構(gòu)中定義析構(gòu)函數(shù)。只能對(duì)類使用析構(gòu)函數(shù)。 一個(gè)類只能有一個(gè)析構(gòu)函數(shù)。 無(wú)法繼承或重載析構(gòu)函數(shù)。 無(wú)法調(diào)用析構(gòu)函數(shù)。它們是被自動(dòng)調(diào)用的。 析構(gòu)函數(shù)既沒(méi)有修飾符,也沒(méi)有參數(shù)。,聲明方法,15,訪問(wèn)修飾符(可選),默認(rèn)情況下為 private,訪問(wèn)修飾符 返回類型 (參數(shù)列表) / 方法主體 ,如果不需要返回任何值,方法需定義為void 數(shù)據(jù)類型,方法頭不是一條語(yǔ)句,其后不能跟分號(hào)“;”,“形式參數(shù)說(shuō)明列表”是一個(gè)由逗號(hào)分隔開(kāi)的列表,16,方法的調(diào)用: 有三種格式: 【格式1】: 方法名(實(shí)際參數(shù)類表) 【格式2】: 對(duì)象名.方法名(實(shí)際參數(shù)類表) 【格式3】: 類名.方法名(實(shí)際參數(shù)類表) 格式三只能調(diào)用非本類的另一個(gè)類的靜態(tài)方法。,17,【說(shuō)明】: 1)調(diào)用方法時(shí),如果方法有形式參數(shù),在調(diào)用時(shí)應(yīng)在“()”中使用實(shí)際參數(shù)。 2)沒(méi)有返回值的方法作為一條語(yǔ)句; 有返回值的方法方法的調(diào)用相當(dāng)于一個(gè)同類型的數(shù)據(jù),可以作為表達(dá)式或表達(dá)式的一部分參與運(yùn)算。,18,靜態(tài)方法和非靜態(tài)方法: 定義靜態(tài)時(shí)用static修飾 不能用virtual、abstract或override修飾符。 非靜態(tài)方法可以訪問(wèn)類中包括靜態(tài)成員在內(nèi)的所有成員,而靜態(tài)方法只能訪問(wèn)類中的靜態(tài)成員。,19,方法重載與覆蓋(同類重載,繼承覆蓋) 1)重載 重載是面向?qū)ο蟮囊粋€(gè)重要特征,通過(guò)重載可以使多個(gè)具有相同功能但是參數(shù)不同的方法共享同一個(gè)方法名。 方法重載的實(shí)現(xiàn): 在一個(gè)類中兩次或多次定義同名的方法(包括從基類繼承而來(lái)的方法),但每個(gè)方法的參數(shù)類型或個(gè)數(shù)不同; 用戶調(diào)用方法時(shí),系統(tǒng)能夠自動(dòng)識(shí)別應(yīng)調(diào)用的方法。,20,2)覆蓋(new或者virtual+override) 在一個(gè)有繼承關(guān)系的類層次結(jié)構(gòu)中,類中的方法由兩部分組成,一個(gè)是類體中聲明的方法,另一個(gè)則是直接從它的基類繼承而來(lái)的方法。 但派生類很少會(huì)一成不變的繼承基類中所有的方法,如果需要對(duì)基類的方法作出修改,就要在派生類中對(duì)基類方法進(jìn)行覆蓋。(編譯時(shí)實(shí)現(xiàn)多態(tài)) 有兩種覆蓋方式: 一種是用關(guān)鍵字new修飾派生類中與基類同名的方法,這樣基類中的同名方法會(huì)被隱藏; 另一種更為靈活和有效的途徑是首先將基類的方法用關(guān)鍵字virtual修飾為虛擬方法,再由派生類用關(guān)鍵字override修飾同名的方法,表明是對(duì)基類的虛擬方法重載。(運(yùn)行時(shí)多態(tài),動(dòng)態(tài)綁定),21,虛方法使用注意事項(xiàng): 1)不能將虛方法聲明為靜態(tài)的,因?yàn)槎鄳B(tài)性是針對(duì)對(duì)象的,不是針對(duì)類的。 2)不能將虛方法聲明為私有的,因?yàn)樗接蟹椒ú荒鼙慌缮惛采w。 3)覆蓋方法必須與它相關(guān)的虛方法匹配,也就是說(shuō),它們的方法簽名(方法名稱、參數(shù)個(gè)數(shù)、參數(shù)類型)、返回類型以及訪問(wèn)屬性都應(yīng)該完全一致。,運(yùn)算符重載:,22,系統(tǒng)對(duì)大部分運(yùn)算符都給出了常規(guī)定義 但可以根據(jù)需要給這些運(yùn)算符賦予一個(gè)新的含義,這就是運(yùn)算符的重載。,23,【格式】: 返回類型值 operator 運(yùn)算符(運(yùn)算對(duì)象列表) 重載的實(shí)現(xiàn)部分; 【說(shuō)明】: 1)、返回類型可以是任意合法的C#類型修飾符,或自定義類型,在方法實(shí)現(xiàn)部分通過(guò)return語(yǔ)句返回該數(shù)據(jù)類型的數(shù)據(jù)。 2)、在C#中,可以重載的運(yùn)算符主要有:+,-,!,+,-,true,false,*,/,%,&,|,=,!=,=。 3)、不能重載的運(yùn)算符有:=,&,|,?:,new,typeof,sizeof,is。,24,屬性 屬性是對(duì)現(xiàn)實(shí)世界中實(shí)體特征的抽象,它提供了一種對(duì)類或?qū)ο筇卣鬟M(jìn)行訪問(wèn)的機(jī)制。 如:一個(gè)窗口的標(biāo)題、一個(gè)控件的尺寸。 與域相比,屬性具有良好的封裝性。屬性不允許直接操作類的數(shù)據(jù)內(nèi)容,而是通過(guò)訪問(wèn)器進(jìn)行訪問(wèn)(使用get和set對(duì)屬性的值進(jìn)行讀寫(xiě))。,25,【格式】: 屬性修飾符 類型說(shuō)明符 屬性名 訪問(wèn)聲明 【說(shuō)明】: 1)屬性修飾符有new, public, protected, internal, private, static, virtual, override和abstract 9種。 2)訪問(wèn)聲明用來(lái)聲明屬性訪問(wèn)器。 set給屬性賦值 get獲取屬性值 如果只有g(shù)et訪問(wèn)器,表示屬性只讀;如果只有set訪問(wèn)器,表示只寫(xiě)屬性;兩個(gè)都有,表示讀寫(xiě)屬性。 3)get訪問(wèn)函數(shù)是一個(gè)不帶參數(shù)的方法,它用于向外部返回屬性成員的值。通常訪問(wèn)函數(shù)的語(yǔ)句或語(yǔ)句塊主要由return或throw語(yǔ)句返回某個(gè)變量成員的值。,26,set訪問(wèn)函數(shù) Set訪問(wèn)函數(shù)是一個(gè)帶有簡(jiǎn)單值類型參數(shù)的方法,用于處理類外部的寫(xiě)入值。 set函數(shù)帶有一個(gè)特殊的關(guān)鍵字value,在set函數(shù)中通過(guò)value將外部的輸入傳遞進(jìn)來(lái),然后賦值給類中的某個(gè)變量成員。,C#封裝:,封裝的概念:可以把程序按某種規(guī)則分成很多“塊“,塊與塊之間可能會(huì)有聯(lián)系,每個(gè)塊都有一個(gè)可變部分和一個(gè)穩(wěn)定的部分。我們需要把可變的部分和穩(wěn)定的部分分離出來(lái),將穩(wěn)定的部分暴露給其他塊,而將可變的部分隱藏起來(lái),以便于隨時(shí)可以讓它修改。這項(xiàng)工作就是封裝。 例如:在用類實(shí)現(xiàn)某個(gè)邏輯的時(shí)候,類就是以上所說(shuō)的塊,實(shí)現(xiàn)功能的具體代碼就是可變的部分,而public的方法或者屬性則是穩(wěn)定的部分,封裝的意義,封裝的意義在于保護(hù)或者防止代碼(數(shù)據(jù))被我們無(wú)意中破壞。在面向?qū)ο蟪绦蛟O(shè)計(jì)中數(shù)據(jù) 被看作是一個(gè)中心的原素并且和使用它的函數(shù)結(jié)合的很密切,從而保護(hù)它不被其它的函數(shù)意外的修改。 封裝提供了一個(gè)有效的途徑來(lái)保護(hù)數(shù)據(jù)不被意外的破壞。相比我們將數(shù)據(jù)(用域來(lái)實(shí)現(xiàn))在程 序中定義為公用的(public)我們將它們定義為私有的(private)在很多方面會(huì)更好。,C# 繼承,繼承是面向?qū)ο蟪绦蛟O(shè)計(jì)中最重要的概念之一。繼承允許我們根據(jù)一個(gè)類來(lái)定義另一個(gè)類來(lái)定義一個(gè)類,這使得創(chuàng)建和維護(hù)應(yīng)用程序變得更容易。同時(shí)也有利于重用代碼和節(jié)省開(kāi)發(fā)時(shí)間。 當(dāng)創(chuàng)建一個(gè)類時(shí),程序員不需要完全重新編寫(xiě)新的數(shù)據(jù)成員和成員函數(shù),只需要設(shè)計(jì)一個(gè)新的類,繼承了已有的類的成員即可。這個(gè)已有的類被稱為的基類,這個(gè)新的類被稱為派生類。,例如: public class A public A() public class B : A public B() ,C#多態(tài),同一操作作用于不同的對(duì)象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果,這就是多態(tài)性。 C#多態(tài)性分為兩種,一種是編譯時(shí)的多態(tài)性,一種是運(yùn)行時(shí)的多態(tài)性。 編譯時(shí)的多態(tài)性:編譯時(shí)的多態(tài)性是通過(guò)重載來(lái)實(shí)現(xiàn)的。對(duì)于非虛的成員來(lái)說(shuō),系統(tǒng)在編譯時(shí),根據(jù)傳遞的參數(shù)、返回的類型等信息決定實(shí)現(xiàn)何種操作。 運(yùn)行時(shí)的多態(tài)性:運(yùn)行時(shí)的多態(tài)性就是指直到系統(tǒng)運(yùn)行時(shí),才根據(jù)實(shí)際情況決定實(shí)現(xiàn)何種操作。C#中運(yùn)行時(shí)的多態(tài)性是通過(guò)覆寫(xiě)虛成員實(shí)現(xiàn)。,C#多態(tài)性之重載和覆寫(xiě)的區(qū)別:,重載 public int Calculate(int x, int y) public double Calculate(double x, double y) 特點(diǎn)(兩必須一可以) 方法名必須相同 參數(shù)列表必須不相同 返回值類型可以不相同,覆寫(xiě) 子類中為滿足自己的需要來(lái)重復(fù)定義某個(gè)方法的不同實(shí)現(xiàn)。通過(guò)使用override關(guān)鍵字來(lái)實(shí)現(xiàn)覆寫(xiě)。只有虛方法和抽象方法才能被覆寫(xiě)。 要求(三相同) (1)相同的方法名稱 (2)相同的參數(shù)列表 (3)相同的返回值類型,C#多態(tài)性之虛方法和抽象方法:,虛方法: 聲明使用virtual關(guān)鍵字。 調(diào)用虛方法,運(yùn)行時(shí)將確定調(diào)用對(duì)象是什么類的實(shí)例,并調(diào)用適當(dāng)?shù)母矊?xiě)的方法。 虛方法可以有實(shí)現(xiàn)體。 抽象方法: 必須被派生類覆寫(xiě)的方法。 可以看成是沒(méi)有實(shí)現(xiàn)體的虛方法。 如果類中包含抽象方法,那么類就必須定義為抽象類,不論是否還包含其他一般方法。,抽象類和接口,抽象類 (1) 抽象方法只作聲明,而不包含實(shí)現(xiàn),可以看成是沒(méi)有實(shí)現(xiàn)體的虛方法 (2) 抽象類不能被實(shí)例化 (3) 抽象類可以但不是必須有抽象屬性和抽象方法,但是一旦有了抽象方法,就一定要把這個(gè)類聲明為抽象類 (4) 具體派生類必須覆蓋基類的抽象方法 (5) 抽象派生類可以覆蓋基類的抽象方法,也可以不覆蓋。如果不覆蓋,則其具體派生類必須覆蓋它們。,接 口 (1) 接口不能被實(shí)例化 (2) 接口只能包含方法聲明 (3) 接口的成員包括方法、屬性、索引器、事件 (4) 接口中不能包含常量、字段(域)、構(gòu)造函數(shù)、析構(gòu)函數(shù)、靜態(tài)成員。 (5) 接口中的所有成員默認(rèn)為public,因此接口中不能有private修飾符 (6) 派生類必須實(shí)現(xiàn)接口的所有成員 (7) 一個(gè)類可以直接實(shí)現(xiàn)多個(gè)接口,接口之間用逗號(hào)隔開(kāi) (8) 一個(gè)接口可以有多個(gè)父接口,實(shí)現(xiàn)該接口的類必須實(shí)現(xiàn)所有父接口中的所有成員,抽象類和接口的異同點(diǎn),相同點(diǎn): (1) 都可以被繼承 (2) 都不能被實(shí)例化 (3) 都可以包含方法聲明 (4) 派生類必須實(shí)現(xiàn)未實(shí)現(xiàn)的方法 區(qū) 別: (1) 抽象基類可以定義字段、屬性、方法實(shí)現(xiàn)。接口只能定義屬性、索引器、事件、和方法聲明,不能包含字段。 (2) 抽象類是一個(gè)不完整的類,需要進(jìn)一步細(xì)化,而接口是一個(gè)行為規(guī)范。微軟的自定義接口總是后帶able字段,證明其是表述一類“我能做。” (3) 接口可以被多重實(shí)現(xiàn),抽象類只能被單一繼承 (4) 抽象類更多的是定義在一系列緊密相關(guān)的類間,而接口大多數(shù)是關(guān)系疏松但都實(shí)現(xiàn)某一功能的類中 (5) 抽象類是從一系列相關(guān)對(duì)象中抽象出來(lái)的概念, 因此反映的是事物的內(nèi)部共性;接口是為了滿足外部調(diào)用而定義的一個(gè)功能約定, 因此反映的是事物的外部特性 (6) 接口基本上不具備繼承的任何具體特點(diǎn),它僅僅承諾了能夠調(diào)用的方法 (7) 接口可以用于支持回調(diào),而繼承并不具備這個(gè)特點(diǎn) (8) 抽象類實(shí)現(xiàn)的具體方法默認(rèn)為虛的,但實(shí)現(xiàn)接口的類中的接口方法卻默認(rèn)為非虛的,當(dāng)然您也可以聲明為虛的 (9) 如果抽象類實(shí)現(xiàn)接口,則可以把接口中方法映射到抽象類中作為抽象方法而不必實(shí)現(xiàn),而在抽象類的子類中實(shí)現(xiàn)接口中方法,C/S 和 B/S 架構(gòu),C/S架構(gòu) C/S架構(gòu)是一種比較早的軟件架構(gòu),主要應(yīng)用于局域網(wǎng)內(nèi)。在這之前經(jīng)歷了集中計(jì)算模式,隨著計(jì)算機(jī)網(wǎng)絡(luò)的進(jìn)步與發(fā)展,尤其是可視化工具的應(yīng)用,出現(xiàn)過(guò)兩層C/S和三層C/S架構(gòu),不過(guò)一直很流行也比較經(jīng)典的是我們所要研究的兩層C/S架構(gòu)。 C/S架構(gòu)軟件(即客戶機(jī)/服務(wù)器模式)分為客戶機(jī)和服務(wù)器兩層:第一層是在客戶機(jī)系統(tǒng)上結(jié)合了表示與業(yè)務(wù)邏輯,第二層是通過(guò)網(wǎng)絡(luò)結(jié)合了數(shù)據(jù)庫(kù)服務(wù)器。簡(jiǎn)單的說(shuō)就是第一層是用戶表示層,第二層是數(shù)據(jù)庫(kù)層。 客戶端和服務(wù)器直接相連,這兩個(gè)組成部分都承擔(dān)著重要的角色,第一層的客戶機(jī)并不是只有輸入輸出,運(yùn)算等能力,它可以處理一些計(jì)算,數(shù)據(jù)存儲(chǔ)等方面的業(yè)務(wù)邏輯事務(wù);第二層的服務(wù)器主要承擔(dān)事務(wù)邏輯的處理,本來(lái)事務(wù)很重,但是由于客戶機(jī)可以分擔(dān)一些邏輯事務(wù),所以減輕了服務(wù)器的負(fù)擔(dān),使得網(wǎng)絡(luò)流量增多。 想要使用C/S架構(gòu)的軟件需要下載一個(gè)客戶端,安裝后就可以使用。,C/S架構(gòu)的優(yōu)點(diǎn) C/S架構(gòu)既然能在計(jì)算機(jī)歷史的長(zhǎng)河中長(zhǎng)盛不衰就必然有其閃光之處。下面將從各個(gè)角度分析C/S架構(gòu)的優(yōu)點(diǎn)。 1)客戶端和服務(wù)器直接相連 a)點(diǎn)對(duì)點(diǎn)的模式使得更安全。 b)可以直接操作本地文本,減少獲取文本的時(shí)間和精力。 c)由于直接相連,減少了通信流量,這對(duì)于客戶來(lái)說(shuō)可以節(jié)約一大筆費(fèi)用。 d)直接相連,中間沒(méi)有什么阻隔或岔路,所以響應(yīng)速度快。當(dāng)通信量少的時(shí)候沒(méi)什么感覺(jué),但是如果通信量龐大,就不會(huì)出現(xiàn)擁堵的現(xiàn)象。 2)客戶端可以處理一些邏輯事務(wù) a)充分利用兩者的硬件設(shè)施,避免資源的浪費(fèi)。 b)為服務(wù)器分擔(dān)一些邏輯事務(wù),可以進(jìn)行數(shù)據(jù)處理和數(shù)據(jù)存儲(chǔ)??梢蕴幚韽?fù)雜的事務(wù)流程。 c)客戶端有一套完整應(yīng)用程序,在出錯(cuò)提示、在線幫助等方面都有強(qiáng)大的功能,并且可以在子程序間自由切換。 3) 客戶端操作界面 a)可以提高客戶的視覺(jué)體驗(yàn),滿足客戶需求。 b)客戶端操作界面可以隨意排列,充分滿足客戶的需要,展現(xiàn)特點(diǎn)與個(gè)性。,C/S架構(gòu)的缺點(diǎn) 經(jīng)過(guò)長(zhǎng)期的時(shí)間檢驗(yàn),人們也發(fā)現(xiàn)了C/S存在的不足,下面將前人的觀點(diǎn)整理總結(jié)一下。 1)客戶端 a)只能處理一些功能單一的多系統(tǒng)。 b)C/S架構(gòu)適用于局域網(wǎng),對(duì)網(wǎng)速的要求比較高。 c)由于需要安裝客戶端,安裝部署困難,所以不易擴(kuò)展。 d)若客戶端使用的系統(tǒng)不同,就要針對(duì)這些系統(tǒng)分別編寫(xiě)程序。 e)客戶端界面缺乏通用性,且當(dāng)業(yè)務(wù)更改時(shí)就需要更改界面,重新編寫(xiě)。 f)客戶端需要專門的客戶端程序,比較麻煩,針對(duì)點(diǎn)多面廣且不具備網(wǎng)絡(luò)條件的用戶群體,不能夠?qū)崿F(xiàn)快速部署安裝和配置。 2)服務(wù)器 a)用戶數(shù)增多會(huì)出現(xiàn)通信擁堵,服務(wù)器響應(yīng)速度慢等情況。 b)當(dāng)服務(wù)器難當(dāng)大任時(shí),只能將其廢棄,使用更強(qiáng)大的服務(wù)器。 c)當(dāng)客戶端用戶增多時(shí),服務(wù)器難以承擔(dān)重負(fù),是名副其實(shí)的“胖”客戶端。 d)用戶是通過(guò)ODBC連接到數(shù)據(jù)庫(kù)的,且每個(gè)連接到數(shù)據(jù)庫(kù)的用戶都會(huì)保持一個(gè)ODBC連接,會(huì)一直占用中央服務(wù)器的資源,對(duì)服務(wù)器的要求很高。 3)用戶 a)沒(méi)有安裝客戶端的外部用戶不能訪問(wèn)。 b)只有安裝了客戶端才能訪問(wèn)服務(wù)器,所以用戶不能隨時(shí)隨地的訪問(wèn)。 c)用戶是通過(guò)ODBC連接到數(shù)據(jù)庫(kù)的,所以用戶數(shù)受限,不易擴(kuò)張。 d)由于針對(duì)小范圍的客戶,所以不能實(shí)現(xiàn)真正大范圍的信息共享,信息傳達(dá)和發(fā)布。 4)開(kāi)發(fā)成本 a)需要聘用高素質(zhì)的人員,對(duì)其培訓(xùn),費(fèi)用高。 b)初次開(kāi)發(fā)就需要配備好客戶端,服務(wù)器,需要有專業(yè)水準(zhǔn)的技術(shù)人員,所以成本高。 5)后期成本 a)系統(tǒng)升級(jí)維護(hù)麻煩,需要更改大量程序,投入大量精力和金錢。 b)業(yè)務(wù)擴(kuò)展或變更時(shí),需要更改程序,客戶端的界面也需要重新更改。 c)初次投入成本后不能一勞永逸,后期需要很多成本,比如服務(wù)器的更換,客戶端的更變等。,B/S架構(gòu) 隨著Internet和WWW的流行,以往的主機(jī)/終端和C/S都無(wú)法滿足當(dāng)前的全球網(wǎng)絡(luò)開(kāi)放、互連、信息隨處可見(jiàn)和信息共享的新要求,于是就出現(xiàn)了B/S型模式,即瀏覽器/服務(wù)器結(jié)構(gòu)。它是C/S架構(gòu)的一種改進(jìn),可以說(shuō)屬于三層C/S架構(gòu)。主要是利用了不斷成熟的WWW瀏覽器技術(shù),用通用瀏覽器就實(shí)現(xiàn)了原來(lái)需要復(fù)雜專用軟件才能實(shí)現(xiàn)的強(qiáng)大功能,并節(jié)約了開(kāi)發(fā)成本,是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。 第一層是瀏覽器,即客戶端,只有簡(jiǎn)單的輸入輸出功能,處理極少部分的事務(wù)邏輯。由于客戶不需要安裝客戶端,只要有瀏覽器就能上網(wǎng)瀏覽,所以它面向的是大范圍的用戶,所以界面設(shè)計(jì)得比較簡(jiǎn)單,通用。 第二層是WEB服務(wù)器,扮演著信息傳送的角色。當(dāng)用戶想要訪問(wèn)數(shù)據(jù)庫(kù)時(shí),就會(huì)首先向WEB服務(wù)器發(fā)送請(qǐng)求,WEB服務(wù)器統(tǒng)一請(qǐng)求后會(huì)向數(shù)據(jù)庫(kù)服務(wù)器發(fā)送訪問(wèn)數(shù)據(jù)庫(kù)的請(qǐng)求,這個(gè)請(qǐng)求是以SQL語(yǔ)句實(shí)現(xiàn)的。 第三層是數(shù)據(jù)庫(kù)服務(wù)器,他扮演著重要的角色,因?yàn)樗娣胖罅康臄?shù)據(jù)。當(dāng)數(shù)據(jù)庫(kù)服務(wù)器收到了WEB服務(wù)器的請(qǐng)求后,會(huì)對(duì)SQL語(yǔ)句進(jìn)行處理,并將返回的結(jié)果發(fā)送給WEB服務(wù)器,接下來(lái),WEB服務(wù)器將收到的數(shù)據(jù)結(jié)果轉(zhuǎn)換為HTML文本形式發(fā)送給瀏覽器,也就是我們打開(kāi)瀏覽器看到的界面。,B/S架構(gòu)和C/S架構(gòu)不同,瀏覽器不是直接和數(shù)據(jù)庫(kù)服務(wù)器相連,所以是多對(duì)多的結(jié)構(gòu)。因此在此結(jié)構(gòu)下,很適合在廣域網(wǎng)里實(shí)現(xiàn)巨大的互聯(lián)網(wǎng),甚至是全球網(wǎng)。有著很強(qiáng)大的信息共享性。 在B/S出現(xiàn)的早期,瀏覽器只能顯示靜態(tài)頁(yè)面,得不到良好的交互,不能進(jìn)行大量的邏輯處理,當(dāng)時(shí)瀏覽器主要用來(lái)實(shí)現(xiàn)信息的發(fā)布,是一種單向的應(yīng)用。后來(lái)出現(xiàn)了動(dòng)態(tài)網(wǎng)頁(yè),這里的動(dòng)態(tài)有三個(gè)方面,一是交互,二是動(dòng)畫(huà),三是數(shù)據(jù)。這樣,瀏覽器的交互性能得到極大提高。頁(yè)面也越來(lái)越豐富多彩。瀏覽器也能處理部分邏輯事務(wù),所以瀏覽器成為了客戶端,但由于處理的內(nèi)容較少,所以叫“瘦”客戶端。,B/S架構(gòu)的優(yōu)點(diǎn) B/S架構(gòu)是應(yīng)WEB技術(shù)的飛速發(fā)展而從傳統(tǒng)的C/S架構(gòu)發(fā)展而來(lái),并且一舉成為當(dāng)今主要的網(wǎng)絡(luò)架構(gòu)。目前主要的網(wǎng)站,尤其是商務(wù)網(wǎng)站都是基于B/S架構(gòu)建立的。那么我們就來(lái)細(xì)數(shù)一下B/S架構(gòu)的優(yōu)點(diǎn),它到底為什么受到大家的青睞。 1)瀏覽器 a)能面對(duì)廣大的用戶實(shí)現(xiàn)信息傳播共享。 b)瀏覽器只處理一些簡(jiǎn)單的邏輯事務(wù),負(fù)擔(dān)小。 c)頁(yè)面的更新能實(shí)現(xiàn)同步,所有用戶都能看到。 d)界面設(shè)計(jì)開(kāi)發(fā)簡(jiǎn)單,對(duì)程序員的要求較低,不需要大量的培訓(xùn)。 e)業(yè)務(wù)擴(kuò)展方便,只需要增加幾個(gè)業(yè)務(wù)擴(kuò)展的頁(yè)面即可,不需要大量的編程。 f)界面不需要太多的編寫(xiě),比較通用,更改界面也比較簡(jiǎn)單,所以幾乎不需要維護(hù)。 g)由于Web的平臺(tái)無(wú)關(guān)性,可以從一臺(tái)服務(wù)器、幾個(gè)用戶的工作組級(jí)擴(kuò)展成為擁有成上萬(wàn)用戶的大型系統(tǒng)。 2)服務(wù)器 a)數(shù)據(jù)都集中存放在數(shù)據(jù)庫(kù)服務(wù)器,所以不存在數(shù)據(jù)不一致現(xiàn)象。 b)
溫馨提示
- 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ù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度綠色環(huán)保型社區(qū)門衛(wèi)管理服務(wù)協(xié)議4篇
- 風(fēng)機(jī)安裝施工方案
- 強(qiáng)夯土方施工方案
- 速度課程設(shè)計(jì)講解
- 2025年度新能源項(xiàng)目公司成立合作協(xié)議書(shū)規(guī)范文本4篇
- 2025年銷售人員保密與反不正當(dāng)競(jìng)爭(zhēng)協(xié)議維護(hù)企業(yè)合法權(quán)益2篇
- 2025年度個(gè)人向公司借款用于房屋維修貸款合同范本3篇
- 2025年度智能房屋租賃管理服務(wù)承包合同書(shū)4篇
- 2025年教育機(jī)構(gòu)廚師團(tuán)隊(duì)聘用及餐飲服務(wù)質(zhì)量標(biāo)準(zhǔn)合同2篇
- 二零二五版民房建筑施工安全生產(chǎn)責(zé)任合同4篇
- 家庭年度盤點(diǎn)模板
- 2024年公需科目培訓(xùn)考試題及答案
- 2024年江蘇鑫財(cái)國(guó)有資產(chǎn)運(yùn)營(yíng)有限公司招聘筆試沖刺題(帶答案解析)
- 2024年遼寧石化職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)含答案
- 廣西桂林市2023-2024學(xué)年高二上學(xué)期期末考試物理試卷
- 財(cái)務(wù)指標(biāo)與財(cái)務(wù)管理
- 部編版二年級(jí)下冊(cè)道德與法治第三單元《綠色小衛(wèi)士》全部教案
- 保安春節(jié)安全生產(chǎn)培訓(xùn)
- 初一語(yǔ)文上冊(cè)基礎(chǔ)知識(shí)訓(xùn)練及答案(5篇)
- 血液透析水處理系統(tǒng)演示
- GB/T 27030-2006合格評(píng)定第三方符合性標(biāo)志的通用要求
評(píng)論
0/150
提交評(píng)論