国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

.Net的三層結(jié)構(gòu)

2007-09-10 00:00:00
消費導刊 2007年2期
關(guān)鍵詞:數(shù)據(jù)

吳 澤

[摘 要]三層模式在網(wǎng)站開發(fā)方面已經(jīng)非常普及,在整個軟件開發(fā)業(yè)也非常流行,其優(yōu)點正得到越來越多的人的認可。本文簡單介紹了.Net的3層結(jié)構(gòu)劃分及各層的數(shù)據(jù)處理。1

[關(guān)鍵詞] .Net 三層體系 數(shù)據(jù)

一、.Net概述

.Net技術(shù)是2000年6月由微軟公司推出的,并為了推廣.Net技術(shù)的應用,于同年9月又推出了企業(yè)服務器,并在以后幾乎所有的虛擬設備上打了.Net的標簽。但是由于對市場策略定位不明晰,人們對.Net技術(shù)的概念并不明確。使得2003年之后.Net逐漸被廣泛理解和應用。

簡單的說,.Net框架是一種新的計算機平臺,它在各個方面簡化了在分布式Internet環(huán)境中的應用程序的開發(fā),嶄新的開發(fā)工具Visual Studio.NET的推出,更是使許多曾經(jīng)讓人望而生畏的編程變得簡單、明了。.NET正深刻地影響著現(xiàn)有的開發(fā)模式和開發(fā)方法。

所謂三層體系結(jié)構(gòu),是在客戶端與數(shù)據(jù)庫之間加入了一個"中間層",也叫組件層。不是簡單地放置三臺機器就是三層體系結(jié)構(gòu),也不僅僅有B/S應用才是三層體系結(jié)構(gòu),三層是指邏輯上的三層,即這三個層放置到一臺機器上。

三層體系的應用程序?qū)I(yè)務規(guī)則、數(shù)據(jù)訪問、合法性校驗等工作放到了中間層進行處理。通常情況下,客戶端不直接與數(shù)據(jù)庫進行交互,而是通過COM/DCOM通訊與中間層建立連接,再經(jīng)由中間層與數(shù)據(jù)庫進行交互。

在多層分布式應用中,在客戶端和服務器之間加入了一層或多層應用服務程序,這種程序稱為"應用服務器"。開發(fā)人員可以將應用的商業(yè)邏輯放在中間層應用服務器上,把應用的業(yè)務邏輯與用戶界面分開。在保證客戶端功能的前提下,為用戶提供一個簡潔的界面。這意味著如果需要修改應用程序代碼,只需要對中間層應用服務器進行修改,而不用修改成千上萬的客戶端應用程序。從而使開發(fā)人員可以專注于應用系統(tǒng)核心業(yè)務邏輯的分析、設計和開發(fā),簡化了應用系統(tǒng)的開發(fā)、更新和升級工作。

二、.Net 層設計

面向?qū)ο蟮摹⒒谀K化的組件設計需要能夠方便地修改應用程序的各個部分。完成這一目標的一種好方法就是在層上工作,將一個應用程序的主要功能分離到不同的層或者級中。.Net Framework為創(chuàng)建可維護、可擴展的層模式提供了豐富的支持,使得N層夠架取代傳統(tǒng)的客戶機/服務器模式而與Internet緊密結(jié)合。

三、分層模型

從本質(zhì)上講,層代表了一個應用程序主要的功能。一般地,我們將應用程序功能分為三個方面,對應3層架構(gòu)模式。它們是數(shù)據(jù)層、商務層和表示層。

數(shù)據(jù)層:包含數(shù)據(jù)存儲和與它交互的組件或服務。這些組件和服務在功能上和中間層相互獨立。

中間層:包括一個或者多個組件服務,它們應用商務規(guī)則、實現(xiàn)應用程序邏輯并完成應用程序運行所需要的數(shù)據(jù)處理。作為這個過程的一部分,中間層負責處理來自數(shù)據(jù)存儲或者發(fā)送給數(shù)據(jù)存儲的數(shù)據(jù)。

表示層:從中間層獲得信息并顯示給用戶。該層同時也負責和用戶進行交互,比返回的信息并將信息回送給中間層進行處理。

可見,數(shù)據(jù)層從數(shù)據(jù)庫中獲得較為原始的數(shù)據(jù),商務層把數(shù)據(jù)轉(zhuǎn)換成符合商務規(guī)則的有意義的信息,表示層把信息轉(zhuǎn)換成對于用戶有意義的內(nèi)容。數(shù)據(jù)層和中間層之間的分離就顯而易見--它們之間通過網(wǎng)絡連接。這種分層設計方式很實用,因為每一層都可以獨立地修改。我們可以修改商務層,不斷地從數(shù)據(jù)層接受相同的數(shù)據(jù),并把這些數(shù)據(jù)傳遞到表示層,我們也可以修改表示層,使得對于站點外觀的修改不必改動下面的商務層邏輯。

四、常用的N層模型設計

一個N層應用程序中的層不是由運行應用程序的物理結(jié)構(gòu)(硬件)定義的。層是應用程序運行的一個邏輯方面的功能,并定義應用程序?qū)?zhí)行的不同的任務階段。

(一)設計一個簡單的三層

最簡單的N層模型就是三層。我們有一個被網(wǎng)絡分隔開的服務器和客戶機。服務器中含有數(shù)據(jù)存儲和組成數(shù)據(jù)層的數(shù)據(jù)訪問組件,已經(jīng)組成中間層的商務邏輯??蛻魴C作為表示層只需要給應用程序提供界面即可。

在這個最簡單的情況中我們或許有一個關(guān)系數(shù)據(jù)庫或者一組訪問數(shù)據(jù)的組件或者存儲過程。然后我們應當有一個訪問組件或者存儲過程的asp.net頁面來提取信息,處理和格式化信息使之適合于客戶機,然后通過網(wǎng)絡將信息傳送給客戶機??蛻魴C做的事情就是顯示信息、收集用戶的輸入和將信息回送給中間層。

(二)設計N層

很明顯,上面的情況假定了兩件事:一是客戶機為一個低端設備不參與應用程序中所需的實際數(shù)據(jù)處理;另外就是只有一組商務規(guī)則。

但是,這些并不符合實際的應用程序。例如,"中間層"的真正意思是商務邏輯本身,并且,商務邏輯的不同元素可以無可非議地存在于不同的服務器中。我們通常期望商務規(guī)則在其他某個地方而非在中間層中。這樣在提取數(shù)據(jù)過程的前期實現(xiàn)某個商務邏輯比較恰當,當然我們也可以在訪問數(shù)據(jù)存儲的組件中實現(xiàn)商務邏輯。這個商務邏輯"包"因此能和數(shù)據(jù)存儲在同一個服務器上,甚至在另外一個中間服務器上。

另外,為了充分利用"胖客戶機"的一些性能,以便減少網(wǎng)絡負載和因訪問路徑循環(huán)而導致的遲滯,我們可以將一些商務邏輯放在客戶機上。

對于客戶機,這個提供了與原始對象相同的方法和屬性。然而,當客戶機與代理對象相互作用時,調(diào)用被自動串行化,并通過網(wǎng)絡傳送給服務器上的對象。然后,任何響應和結(jié)果通過通道被傳送回客戶機。

這兩個遠程技術(shù)都允許客戶機使用原來在服務器上創(chuàng)建的對象。我們能夠串行化一個DataSet對象或者Xml文檔,同時我們也能串行化其它的如集合這樣的對象(如一個哈希表等)。

這種模式?jīng)]有中間存儲并且?guī)缀醪恍枰虚g數(shù)據(jù)處理,所以效率更高。

五、N層模型中的數(shù)據(jù)處理

.Net Framework實現(xiàn)了許多新的技術(shù)以支持多層分布式處理,它提供了豐富的類庫、對象及方法使得在不同層間的數(shù)據(jù)傳輸更為簡單。

(一)數(shù)據(jù)的提取

1.只用于顯示的數(shù)據(jù)

以一種固定格式為終端用戶顯示數(shù)據(jù)的話,沒有必要遠程傳輸數(shù)據(jù)。我們沒有必要在線上將所有的數(shù)據(jù)傳送給客戶機--我們只能傳給它們客戶設備能接受的任何格式的最終顯示信息。因此"Reader"對象給我們提供了一種只讀的、僅向前的理想且性能最優(yōu)的技術(shù)。當與能實現(xiàn)服務器端數(shù)據(jù)綁定的服務器控件一起使用時,我們可以獲得一個顯示數(shù)據(jù)的高效方法。

2.需要遠程傳輸?shù)臄?shù)據(jù)

如果我們需要遠程傳輸數(shù)據(jù)的話則存在一個問題。這些快速而高效的"Reader"對象只在作為引用時才能被遠程傳輸。將一個DataReader作為引用傳送給一個客戶機時,DataReader仍還在服務器上,不過客戶機的應用程序也可以使用它。在這種情況下,我們實際上并沒有遠程傳輸數(shù)據(jù),而是使用了一個遠程傳輸對象。在很多情況下都存在這種情況。因此應該將數(shù)據(jù)寄存到一個能夠存儲數(shù)據(jù)的對象中,不需進入數(shù)據(jù)存儲的額外行程就可以根據(jù)需要提取數(shù)據(jù),在ADO.NET中,這個對象就是DataSet對象或者DataTable對象。這兩個對象都有保持內(nèi)容的能力,并且可以在一個應用程序的層之間進行傳送。

(二)移動數(shù)據(jù)處理

一般地,要獲得發(fā)送給客戶機的數(shù)據(jù),我們將利用客戶端腳本(JavaScript或 VBScript以及 WMLScript)、用Java或者一個特定平臺的語言書寫的客戶端組件,或者用諸如Visual Basic 6.0、C++、Delphi等語言書寫的客戶端可執(zhí)行程序等等。所有我們需要的功能都是.Net Framework的一部分。

(三)將更新回送給服務器

在許多情況下,如果我們的要求就是以一種盡可能快速和高效的方式獲得發(fā)送給客戶機的依據(jù),那么,上面的示例能很好地完成任務。然而,許多應用程序要求客戶機將數(shù)據(jù)回送以更新數(shù)據(jù)存儲等操作時,就需要尋找更合理的模式。

至少有三種方法用于向服務器端回送數(shù)據(jù)。一是回送Html表單和查詢字符串(實現(xiàn)方式與以前的ASP類似);另一是客戶端組件(例如IE5及以上版本的XMLHTTP組件);還有就是客戶端可執(zhí)行的Windows表單應用程序和服務等。

因此,應該有這樣一種情況:客戶機僅僅要求我們發(fā)送一些數(shù)據(jù),并且我們讓客戶機完成所有的數(shù)據(jù)處理。也就是說,客戶機充當某種類型的服務,它將應用程序的數(shù)據(jù)作為自己的源數(shù)據(jù)來使用,然后在它的客戶機已經(jīng)處理數(shù)據(jù)后將更改提交回來。

一旦客戶端完成了數(shù)據(jù)更新,或者已經(jīng)收集了用戶輸入的新數(shù)據(jù),客戶機應用程序就以一種合適的格式打包數(shù)據(jù),并將它提交給服務器進行處理和存儲。

N層分布是程序開發(fā)的趨勢,本文在層次的劃分上為您提供參考。

參考文獻

[1]Microsoft.NET Compact Framewor,技術(shù)內(nèi)幕,Stephen Wheelwright,清華大學出版社

[2]ASP.NET基礎教程,F(xiàn)ritz Ooion,清華大學出版社

[3]c#高級編程,Simon Robinson等,清華大學出版社

猜你喜歡
數(shù)據(jù)
溫室控制系統(tǒng)及控制方法的研究
公路工程試驗檢測存在的問題及措施
價值工程(2016年30期)2016-11-24 16:39:03
焊接工藝仿真訓練系統(tǒng)中焊點數(shù)據(jù)的建立方法
一種借助數(shù)據(jù)處理構(gòu)建的智能食堂管理系統(tǒng)
數(shù)據(jù)化藝術(shù)的生成探究
淺談計量自動化系統(tǒng)實現(xiàn)預購電管理應用
孟津县| 平乐县| 阳春市| 中江县| 东至县| 乌拉特后旗| 尉犁县| 合山市| 辽阳市| 从化市| 铁岭县| 吉安县| 英德市| 阿克| 磐石市| 沈阳市| 三明市| 江西省| 泌阳县| 合山市| 潮安县| 和龙市| 锡林浩特市| 云梦县| 平潭县| 东海县| 观塘区| 临泉县| 昭苏县| 县级市| 清河县| 象州县| 民乐县| 舟山市| 东源县| 岫岩| 射阳县| 镇平县| 宜宾市| 垦利县| 依兰县|