網(wǎng)站數(shù)據(jù)層處于三層邏輯體系架構(gòu)中的最底層,它用于實行信息系統(tǒng)對數(shù)據(jù)庫的操作,包括增加、刪除、修改、査找記錄等,是網(wǎng)站中相對穩(wěn)定持續(xù)的部分,它向網(wǎng)站邏輯層提供數(shù)據(jù),原則上不涉及網(wǎng)站邏輯層的設(shè)計。網(wǎng)站數(shù)據(jù)層通常由一個或多個數(shù)據(jù)庫系統(tǒng)組成,如SQL Server2014,Oracle,DB2等。
1)網(wǎng)站數(shù)據(jù)層的功能
當網(wǎng)站的邏輯層獲取從表示層得到的數(shù)據(jù)請求之后,完成對業(yè)務(wù)邏輯的編譯,將這種信號以SQL語句的形式傳輸給網(wǎng)站的數(shù)據(jù)層。網(wǎng)站數(shù)據(jù)層主要是對原始數(shù)據(jù)的操作層,而不 是指原始數(shù)據(jù),也就是說,是對數(shù)據(jù)的操作,而不是數(shù)據(jù)庫,具體為網(wǎng)站邏輯層或表示層提供數(shù)據(jù)服務(wù)。數(shù)據(jù)層從SQL語句中獲取相應的參數(shù),該參數(shù)是以對象的方式傳遞的,即在用戶界面層獲得一系列數(shù)據(jù),把這些數(shù)據(jù)以對象屬性的方式進行封裝,然后僅將對象傳遞給網(wǎng)站 邏輯層即可,網(wǎng)站邏輯層將對象的屬性進行相應的處理操作,最后將對象傳遞給網(wǎng)站數(shù)據(jù)層。數(shù)據(jù)層將對象的各個屬性作為SQL參數(shù)參與執(zhí)行,該層將執(zhí)行結(jié)果返回給網(wǎng)站邏輯層,執(zhí)行結(jié)果是以某條或多條數(shù)據(jù)記錄或者一個或多個數(shù)據(jù)表的形式呈現(xiàn)的。
2)網(wǎng)站數(shù)據(jù)層的工作理念
在網(wǎng)站系統(tǒng)中用戶操作相關(guān)界面完成對應的業(yè)務(wù)流程的操作,但無論是什么業(yè)務(wù)流程最終反映到軟件系統(tǒng)中則是對數(shù)據(jù)庫中相關(guān)數(shù)據(jù)表單的數(shù)據(jù)進行操作,所在網(wǎng)站框架中可以將數(shù)據(jù)訪問進行深入抽象,將其分為數(shù)據(jù)庫的查詢運算、插入運算、修改運算及刪除運算。
這樣對應的每個業(yè)務(wù)流程只需指定相關(guān)的數(shù)據(jù)表或視圖,就可根據(jù)表中的數(shù)據(jù)項自動生成相關(guān)數(shù)據(jù)操作。
3)網(wǎng)站數(shù)據(jù)層的設(shè)計原則
網(wǎng)站數(shù)據(jù)層的設(shè)計原則應時刻與網(wǎng)站的總體思想相一致,所設(shè)計的各個環(huán)節(jié)或板塊應做到為整個系統(tǒng)更好地提供服務(wù),在網(wǎng)站的三層邏輯體系架構(gòu)中,各個層次之間相互協(xié)作。在數(shù)據(jù)庫中包含有不同同的層次以及不同的功能模塊,各部分的主要職責不同。盡量降低系統(tǒng)各部分之間的耦合度,提高模塊內(nèi)部的聚合程度是網(wǎng)站數(shù)據(jù)層設(shè)計的重要原則。將各個層面的數(shù)據(jù)進行明確分工,有助于減少因數(shù)據(jù)的混亂所造成的損失?傊W(wǎng)站數(shù)據(jù)層設(shè)計的核心思想是要做到“高內(nèi)聚,低耦合”。
將網(wǎng)站應用系統(tǒng)在邏輯上劃分為不同的層次,有利于各個層次之間的相互獨立。在每層發(fā)生改變時而不影響其他層的正常運行。這種網(wǎng)站的三層邏輯體系結(jié)構(gòu)劉分的優(yōu)點有:
①開發(fā)人員可以只將其中的某一層作為操作對象,在不影響其他各層的情況下完成對整個網(wǎng)站系統(tǒng)的完善和優(yōu)化。網(wǎng)站的項目結(jié)構(gòu)會更加清晰,分工明確,有益于后期的維護和升級。
②將各個層次進行劃分,使得它們之間相互獨立,可以很容易的用新的實現(xiàn)替換原有層次的實現(xiàn)而不用考慮對另外兩個層次的影響。
③將整個網(wǎng)站的架構(gòu)劃分為3個層次,每一層有各自的主要使命和作用,相互之間的功能耦合性減少,便于系統(tǒng)的維護和操作,降低了各層之間的相互依賴性。
④擴展性強。不同層負責不同的層面,具有不同的用途。在一個層的內(nèi)部進行擴展,不會對其他層造成影響,且因為每層的作用相同,在此基礎(chǔ)上進行相關(guān)內(nèi)容的添加是非常便捷的。
⑤安全性高。要想從用戶端的表示層獲取來自數(shù)據(jù)層的數(shù)據(jù)信息,必須通過網(wǎng)站邏輯層的傳輸。避免用戶與數(shù)據(jù)庫的直接接觸,減少了入口點,把很多危險的系統(tǒng)功能都屏蔽了
從開發(fā)角度和應用角度來看,網(wǎng)站的三層邏輯體系架構(gòu)適合群體開發(fā),每人可以有不同的分工,協(xié)同工作使效率倍增。開發(fā)雙層或單層應用時,每個開發(fā)人員都應對系統(tǒng)有較深的理解,能力要求很高,開發(fā)三層應用時,則可以結(jié)合多方面的人才,只需少數(shù)人對系統(tǒng)全面了解,從一定程度上降低了開發(fā)的難度
當然,網(wǎng)站的三層邏輯體系架構(gòu)的劃分不可避免地具有一些不足:
(1)與單層或雙層架構(gòu)的劃分相比,該模式不可避免地降低了網(wǎng)站的運行性能。如果跳過中間層的網(wǎng)站邏輯層,用戶可直接對數(shù)據(jù)庫進行訪問,可大大減少獲取相應數(shù)據(jù)的時間。實現(xiàn)更好的用戶體驗,提升用戶的滿意程度。
(2)三層邏輯體系架構(gòu)的設(shè)定,有時網(wǎng)站建設(shè)可能會導致級聯(lián)的修改。例如,表現(xiàn)層如果想更改或增加每一項功能,就必須對網(wǎng)站邏輯層和數(shù)據(jù)層的代碼進行相應的修改或增加。三層體系架構(gòu)表面看是分離的,但其內(nèi)部有不可忽視的關(guān)聯(lián)性。
(3)網(wǎng)站層次的增加必然會導致代碼的增加,加大了系統(tǒng)的運行負擔,增加了工作量,從而增強了網(wǎng)站內(nèi)部的復雜程度。