?? hnxxcxg多層架構(gòu)設(shè)計.txt
字號:
許多人在開發(fā)分布式應(yīng)用系統(tǒng)時會把許多的程序代碼和功能都編寫在應(yīng)用程序服務(wù)器之中。因此許多應(yīng)用
程序服務(wù)器的接口中便包含了數(shù)十,數(shù)百,甚至數(shù)千個方法和屬性讓客戶端應(yīng)用程序使用。比較好一點的
程序員地知道在應(yīng)用程序服務(wù)器中定義不同的接口,然后把方法和屬性歸類在適當?shù)慕涌谥凶尶蛻舳藨?yīng)
用程序使用。但是不管是使用單一接口或是多個接口,這種方法都造成了一個肥大的應(yīng)用程序服務(wù)器,而
且這些方法和屬性不是無法重復(fù)使用,就是必須付出巨大的代價才能夠重復(fù)使用。事實上這種設(shè)計方法是
不正確的,在應(yīng)用程序服務(wù)器應(yīng)該使用許多不同的企業(yè)對象來共同完成工作,而不是使用一個巨大的對象
做完所有的事情。
分布式應(yīng)用系統(tǒng)中客戶端應(yīng)用程序不應(yīng)該像傳統(tǒng)的二層結(jié)構(gòu)應(yīng)用程序一樣把所有的工作都編寫在客戶端的
應(yīng)用程序之中,而是應(yīng)該調(diào)用中介企業(yè)對象提供的服務(wù)來完成它需要進行的工作。
應(yīng)用程序服務(wù)器則需要負責許多的工作,從后端數(shù)據(jù)庫中根據(jù)客戶端的需要來存取數(shù)據(jù),執(zhí)行企業(yè)法則,
以及提供客戶端需要的服務(wù)。
由于應(yīng)用程序服務(wù)器需要進行這么多的工作,所以程序員在設(shè)計應(yīng)用程序服務(wù)器時也絕不是把所有的程序
代碼寫在一起,而是應(yīng)該經(jīng)過分析和設(shè)計的階段把這些工作分配在不同功能的對象之中,并且讓這些對象
互相的合作來完成客戶端的需求。這些對象包括了專門負責存取數(shù)據(jù)的數(shù)據(jù)對象,代表實際世界中事物的
對象,例如客戶,訂單等的實體對象,負責執(zhí)行企業(yè)功能的企業(yè)法則對象,提供特別計算或是服務(wù)的功能
對象,能及為了讓系統(tǒng)平順動作的控制對象或是協(xié)調(diào)對象等。在分布式計算環(huán)境中這些不同功能的對象都
統(tǒng)稱為企業(yè)對象。
可以重復(fù)使用的企業(yè)對象正是面向?qū)ο蟮暮锰帲彩浅绦騿T在開發(fā)分布式應(yīng)用系統(tǒng)時應(yīng)用使用分析/設(shè)計/
實現(xiàn)的軟件工程方法。
功能對象
程序員可以把以往所謂的公用程序和函數(shù)歸化為數(shù)個功能對象,讓其它的程序代碼或是企業(yè)對象調(diào)用,而
不需要讓程序員使用COPY AND PASTE的方式讓這些程序代碼重復(fù)的出現(xiàn)在程序代碼中。使用功能對象不但
可以在這些功能改變時只需要修改功能對象即可,也可以減少其它應(yīng)用程序或是企業(yè)對象的程序代碼大小
數(shù)據(jù)對象
負責存取數(shù)據(jù)的工作,最靠近數(shù)據(jù)庫的企業(yè)對象,遠程數(shù)據(jù)模塊便屬于數(shù)據(jù)對象的范疇。實體對象都是靠
數(shù)據(jù)對象取得它們的屬性,是最常在一起工作的企業(yè)對象。
無狀態(tài)對象
若中介軟件不使用無狀態(tài)對象,那么每一個客戶端應(yīng)用程序都可能需要使用數(shù)個企業(yè)對象,而且這些企業(yè)
對象在客戶端應(yīng)用程序沒有結(jié)束執(zhí)行時都無法釋放。那么中介軟件在服務(wù)了一定數(shù)量的客戶端應(yīng)用程序之
后就再也無法服務(wù)其它的客戶端應(yīng)用程序。無狀態(tài)對象的屬性在使用之后能夠立刻的釋放給其它的用戶使
用,所以在分布式應(yīng)用系統(tǒng)中客戶端應(yīng)用程序使用的企業(yè)對象都是無狀態(tài)對象,那么中介軟件或是應(yīng)用程
序服務(wù)器就可以同時服務(wù)的客戶端應(yīng)用程序數(shù)目便可以大幅的增加,進而增加分布式應(yīng)用系統(tǒng)的延展性。
雖然企業(yè)對象的觀念很簡單,但是如何開發(fā)良好的企業(yè)對象卻不是那么簡單,這需要經(jīng)理以及對于使用的
軟件技術(shù)有深入的了解。如何設(shè)計適當?shù)钠髽I(yè)對象是非常重要的,如何有效率的讓企業(yè)對象和客戶端應(yīng)用
程序通訊更是一門需要實務(wù)經(jīng)驗的學問。因為不管理論怎么說,程序員最終是需要把分布式應(yīng)用系統(tǒng)實現(xiàn)
出來的,光有口頭上的理論而沒有實際的實現(xiàn)技術(shù)對于程序員來說是沒有用的。
許多程序員幾乎把所有程序代碼都編寫在遠程數(shù)據(jù)模塊之中。這會讓遠程數(shù)據(jù)模塊成為一個large
grained企業(yè)對象,這種結(jié)構(gòu)不但不易維護,其執(zhí)行效率和延展性都有問題。
就執(zhí)行效率來說,許多程序員在應(yīng)用程序服務(wù)器(遠程數(shù)據(jù)模塊)之中定義了許多輸出的方法和屬性,然
后讓客戶端應(yīng)用程序大量的使用這些方法和屬性。但是請各位記得當我們在分布式應(yīng)用系統(tǒng)中調(diào)用遠程的
方法時,這比起一般的程序和函數(shù)的調(diào)用來說是非常緩慢的,而且這種結(jié)構(gòu)讓編寫客戶端程序的程序員了
解了太多中介企業(yè)對象的結(jié)構(gòu),進而降低了企業(yè)對象和應(yīng)用程序服務(wù)器的透明性。在是后維護企業(yè)對象和
應(yīng)用程序服務(wù)器都會造成負擔。
客戶端應(yīng)用程序只需要和應(yīng)用程序服務(wù)器之中特定的協(xié)調(diào)對象通訊,并且要求協(xié)調(diào)對象或是控制對象來完
成客戶端應(yīng)用程序需要進行的工作即可,客戶端應(yīng)用程序不需要知道協(xié)調(diào)對象會使用那些企業(yè)對象來共同
完成工作。這樣不但有比較好的執(zhí)行效率,更增加了應(yīng)用程序服務(wù)器的透明性。
上面的討論的并不是絕對正確的,程序員還是需要根據(jù)應(yīng)用系統(tǒng)的需求來設(shè)計系統(tǒng)結(jié)構(gòu)。但是一般來說上
面的討論的觀念和結(jié)構(gòu)是程序員在設(shè)計分布式應(yīng)用系統(tǒng)時應(yīng)該有的觀念和使用的設(shè)計方式。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -