天天看點

Web應用架構

前言:部落客大三,其實本來學習的是Android移動端開發。近期有幸來到了阿裡的菜鳥網絡實習,陰差陽錯地安排到了Web應用開發。但是我真的是一點都不懂的啊...就是那種連啟動tomcat都會想想的那種。到現在已經實習了兩周了。學習了很多,很多概念也很是混亂,action,servlet,jsp,javascript,velocity,screen,spring等等。想想就頭大。很有必要将所悟沉澱下來。這也是帶我的師兄一直強調的。

一、Web應用的三層架構

Web應用架構

下面介紹各個層次的差別:

1.表示層(user interface layer):顧名思義,這個是負責與使用者互動的,是使用者操作與擷取服務的接口。這一層一般由前端和後端的同學一同參與開發。(注意:這裡所說的前端對于普通使用者來說,他們仍然需要到伺服器請求相應的html文檔等)。前端負責html、css、javascript這些展示的次元。但是像servlet,action,screen等控制次元的由後端同學開發。

2.業務層(business logic layer):有時候我們也稱為service層、邏輯層。這一層是整個Web應用的核心内容,包括我們想要提供給使用者的所有服務。比如說使用者登入/注冊都是一個服務。

3.資料通路層(data access layer):有時候我們也稱為DAO層,持久層。這一層是提供給業務層調用的。負責與資料庫或是檔案等持久存儲媒介打交道。

二、Web應用開發各種技術所處的層次

根據上面劃分的架構層次,我們容易知道,越上層的東西是越容易變化、越不可控的。是以我們也可以大緻有一個推斷,就是表示層的技術必然是最變化萬千的,業務層次之,資料通路層最次。

1.表示層:如上所說,表示層是變化最多樣的。在這一層可以使用到的架構有Struts,Spring MVC架構等等。其實你可能通過Spring MVC這個名稱發現了,表示層往往還會用到MVC架構模式進行解耦。按照MVC這種模式對表示層進行劃分,我們可以将在這一層面開發的技術做一個大緻的劃分。

視圖層(View):html,javascript,css,velocity,jsp...(前端開發的範疇,事實上這一層還可以進行一層MVC的劃分。html是Module,javascript是Controller,css是View,也就是嵌套的MVC架構)

控制層(Controller):控制View的跳轉或是調用業務層的功能。action,servlet,screen...

模型(Module):javabean...

2.業務層:Spring,WebX...

3.資料通路層:Hibernate,IBatis(MyBatis)....

三、三層架構和MVC的差別

再來回顧一下三層架構:表示層,業務層,資料通路層。

再來看看MVC的架構:視圖層(View),控制層(Controller),模型(Module)

我刻意将可能對上的放在一列,如果說這兩者有關系的話。然而,雖然感覺很相似,

三層架構和MVC并沒有什麼關系!

三層架構和MVC并沒有什麼關系!

三層架構和MVC并沒有什麼關系!

在這之前我們先說說什麼是模式?

模式其實是一種設計的重用,就是說這種思想(模式)可以應用到不同的場景,甚至是非IT領域。比如說觀察者模式,現實中訂閱報刊和釋出報刊的關系就是一種觀察者模式。這裡為什麼要說模式呢?因為:

MVC事實上是一種架構模式!!!

MVC事實上是一種架構模式!!!

MVC事實上是一種架構模式!!!

也就是說,在許多架構的設計中,MVC都可以發揮其指導意義。但是相反的,我不一定要按照你MVC的模式進行架構設計。而Web應用的三層架構就是不遵循MVC的一種設計。(Spring MVC就用到了MVC設計模式)

我們可以發現,除了視圖層和表示層勉強能對上之外,其他的根本對不上。Web應用中沒有Controller這個該概念。Web應用中的資料通路層也僅僅是負責通路資料,而不是MVC中的存儲模型。

四、總結

我覺得學習就是這樣,要學會對知識進行分層,從下往上,下層是最穩定不易變的。隻要練好堅實的基礎,上層建築就能搞好了。萬變不離其宗!學習的過程中最好能知道自己學習的是處于知識體系中的哪一層,這有助于我們建構知識體系。