原文地址:http://www.c-sharpcorner.com/Code/2005/March/DesignTechniques.asp
作者:Saradha Gnanavel
應用程序的設計和結構是很重要的,就像其技術(shù)細節的實(shí)現一樣。在開(kāi)發(fā)任何項目之前,我們需要處理一些問(wèn)題,比如,用什么技術(shù),用什么數據庫,應用程序的物理架構等等。這篇文章將提供一些在使用.NET開(kāi)發(fā)中遇到的設計問(wèn)題的意見(jiàn)。 以下是做企業(yè)級開(kāi)發(fā)會(huì )遇到的問(wèn)題: 選擇什么語(yǔ)言? 使用什么數據庫? 設計和維護用戶(hù)界面 物理構架 選擇什么語(yǔ)言? 可以看到很多關(guān)于埋怨.NET的語(yǔ)言。選擇的語(yǔ)言需要讓我們完成應用程序要求的任務(wù)。 考慮到GUI應用和標準業(yè)務(wù)應用,我們可以選擇一個(gè)支持良好用戶(hù)界面的集成開(kāi)發(fā)環(huán)境,比如Visul Basic或Visul C#。 同樣,如果考慮一個(gè)游戲或需要和硬件大量交流的應用系統。在這種情況下我們顯然要選擇Visual C++而不是Visul Basic或Visul C#。 使用什么數據庫? 這由以下因素決定: ◆數據庫引擎能力,可能客戶(hù)端也在一起 ◆數據量 ◆與其它數據庫或服務(wù)器的聯(lián)系是否容易 ◆被存儲的數據的屬性 設計和維護用戶(hù)界面 一些應用系統比如電子商務(wù),再現購物,社團的網(wǎng)站和企業(yè)及應用是為了遠程可上網(wǎng)的用戶(hù),無(wú)疑的需要網(wǎng)頁(yè)接口或者用戶(hù)界面接口。但是也有其它的應用系統,用戶(hù)可以自己選擇適合的用戶(hù)接口。 讓我們看看幫助我們選擇用戶(hù)接口的基本要素。 應用系統在以下情況,需要Web用戶(hù)接口: ◆ 遠程用戶(hù),且用戶(hù)能訪(fǎng)問(wèn)Internet ◆ 是B2B(Business to Business)應用 當有了Web服務(wù)器后,可以在不同平臺和不同資源間建立良好的無(wú)縫鏈接,以實(shí)現應用程序的交流。 ◆ 是B2C(Business to Consumer)應用 Web應用比桌面應用程序更加容易訪(fǎng)問(wèn),因為桌面程序只能在局域網(wǎng)中實(shí)施鏈接并分布到網(wǎng)絡(luò )上的各個(gè)節點(diǎn)上,而且每一個(gè)PC都要安裝客戶(hù)端程序。 ◆ 需要輸入的數據量和在畫(huà)面上需要輸入的東西相當少 如果有很多的數據需要用戶(hù)輸入,這就需要一個(gè)很大的用戶(hù)控件集,而在桌面程序中更易使用窗體和對話(huà)框,這是Win Forms程序要比Web Forms的好。 ◆ 需要有限的用戶(hù)接口 ◆ 需要在畫(huà)面上顯示的數據很少 因為數據和畫(huà)面樣式需要從Web服務(wù)器中不斷的發(fā)送,以滿(mǎn)足客戶(hù)端的請求,所以會(huì )使速度變慢。在桌面程序中,界面只向服務(wù)器提交一次,而后數據馬上就取得回來(lái)了。 ◆ 每個(gè)用戶(hù)有自己的數據 在這種情況下,通過(guò)維護sessions和cookies是很容易做到的。 ◆ 用戶(hù)喜歡使用滾動(dòng)條來(lái)看數據,而不是使用Tab鍵 ◆ 需要一些冗長(cháng)的畫(huà)面來(lái)表示數據。 ◆ 配置成本盡可能小的系統 ◆ 升級成本盡可能小的系統 Web UI提供一個(gè)集中的應用配置和升級,這樣可以減少配置和升級的成本。 ◆ 需要經(jīng)常性的升級。 Web UI也允許使用標準的HTML元素。有些應用需要很高的處理能力。我們可以升級我們的中心服務(wù)器,以代替升級各個(gè)獨立的工作站。 應用系統在以下情況,需要桌面用戶(hù)接口: ◆ 需要和任何特定的硬件連接。 ◆ 需要支持拖動(dòng)釋放。 ◆ 游戲或CAD或CAM等應用,需要直接和硬件交流的。 ◆ 需要大量的用戶(hù)控件。 ◆ 通過(guò)網(wǎng)絡(luò )或CD或推進(jìn)服務(wù)器(push servers)可以配置的。 ◆ 升級可以通過(guò)網(wǎng)絡(luò )或CD或推進(jìn)服務(wù)器(push servers)就可以進(jìn)行的。 物理構架 以下是.NET應用中可能遇到的構架 ◆ 兩層應用架構 ◆ 三層應用架構,使用XML Web Service ◆ 三層應用架構,使用.NET Remoting ◆ 邏輯上的N層應用 ◆ N層應用,使用XML Web Service 兩層應用架構 客戶(hù)端應用程序直接使用ADO.NET來(lái)連接數據庫服務(wù)器 這種架構適合小的應用系統,很少的用戶(hù)接口和簡(jiǎn)單的業(yè)務(wù)邏輯。 但是,在一個(gè)企業(yè)及的應用環(huán)境中應用是不合適的。 開(kāi)發(fā)技巧 ◆ 窗口中的控件直接綁定到數據集中。 ◆ 也可以使用代碼來(lái)直接訪(fǎng)問(wèn)數據庫,將返回數據手動(dòng)綁定到控件上。 ◆ 所有的業(yè)務(wù)規則隨UI一起同步 特征 ◆ 開(kāi)發(fā)快速且簡(jiǎn)單 ◆ 因為業(yè)務(wù)邏輯和UI是不分離的,升級或修改變得十分繁瑣,比如對一些業(yè)務(wù)的變更,所有的客戶(hù)端都要更新。 ◆ 當數據庫中有改變或者是一個(gè)數據段的名字變了,整個(gè)的代碼需要改變。改變代碼來(lái)加載新的數據集將十分困難。 所有的SQL代碼都在Web服務(wù)器上,數據集是在服務(wù)器上構建的,數據取得后作為一個(gè)XML串返回到客戶(hù)端,在客戶(hù)端重新構建數據集。 這種架構同時(shí)適合于Web應用和Win應用。 這種構架最適合于:我們需要豐富的桌面應用,但是用戶(hù)是從不同位置連接上來(lái)的,并且使用HTTP來(lái)獲取數據。 特征 ◆ 開(kāi)發(fā)快速且簡(jiǎn)單 ◆ 因為數據庫訪(fǎng)問(wèn)邏輯從Web服務(wù)中分離,所以訪(fǎng)問(wèn)數據庫層可以集中升級。 ◆ 很小的維護開(kāi)銷(xiāo) ◆ 因為業(yè)務(wù)規則沒(méi)有從UI中分離,升級或更改還是比較繁瑣,比如,任何業(yè)務(wù)的更改都需要所有客戶(hù)端的更新。 ◆ 客戶(hù)端必須能訪(fǎng)問(wèn)網(wǎng)絡(luò )(因為需要連接Web服務(wù)器) 這種架構在一定程度上適合Internet應用。 三層應用架構,使用.NET Remoting 所有的SQL代碼都在遠程服務(wù)器(Remoting Service)上,數據集在服務(wù)器上構建,然后作為XML數據返回到客戶(hù)端,并在客戶(hù)端重新構建數據集。也可以寫(xiě)代碼來(lái)處理從遠程組件返回來(lái)的數據,手動(dòng)的綁定到窗口的控件上。 這種構架適合在局域網(wǎng)中分布的計算機。在局域網(wǎng)環(huán)境中,.Net Remoting可以作為數據存取層。 所以這種構架適合Intranet中的應用。 特征 ◆ 開(kāi)發(fā)快速且簡(jiǎn)單 ◆ 因為數據庫訪(fǎng)問(wèn)邏輯的分離,數據訪(fǎng)問(wèn)層可以集中更新 ◆ 很小的維護開(kāi)銷(xiāo) ◆ 因為業(yè)務(wù)規則沒(méi)有從UI中分離,升級或更改還是比較繁瑣,比如,任何業(yè)務(wù)的更改都需要所有客戶(hù)端的更新。 ◆ 用戶(hù)可以從局域網(wǎng)或廣域網(wǎng)中的任何一個(gè)節點(diǎn)來(lái)使用這個(gè)應用。 邏輯上的N層應用 這種架構包括客戶(hù)端應用、業(yè)務(wù)規則組件、數據層組件、物理數據庫。這是所有.NET開(kāi)發(fā)的最好的方法。
三層應用架構,使用XML Web Service


特征
◆ 將業(yè)務(wù)邏輯層分離出來(lái)集中管理
◆ 任何組件或層都可以移植到其他機器上,這樣改善了升級和集中化管理。
◆ 開(kāi)發(fā)需要相對長(cháng)的時(shí)間,但是這并不是問(wèn)題,因為一旦開(kāi)發(fā)出來(lái)將是十分富有成效的。
N層應用,使用XML Web Service
一個(gè)XML服務(wù)器用來(lái)做數據層。通過(guò)HTTP層將數據集類(lèi)型返回到業(yè)務(wù)邏輯層??蛻?hù)端將數據集處理后先是給用戶(hù)。

當數據層集中管理,客戶(hù)端是Web或Windows應用的時(shí)候,這是極好的方法。
聯(lián)系客服