Spring單體應用之三層架構和MVC

2021-08-28 12:23:46 字數 2129 閱讀 5621

1. 什麼是系統架構

所謂系統架構是指,整合應用系統程式大的結構。經常提到的系統結構有兩種:三層架構與 mvc。這兩種結構既有區別,又有聯絡。但這兩種結構的使用,均是為了降低系統模組間的耦合度。

2. 什麼是三層架構

三層架構是指:檢視層(view) 服務層(service)持久層(dao)

mvc,即 model 模型、view 檢視,及 controller 控制器。

- 第一點:最直觀的的一點就是get請求的引數是放在url上的 而post請求方式是通過request body傳遞引數

- 第二點: 在遇到網路問題時 當我們恢復網路是 post是會自動提交的 也就是返回提交 而get則不會

- 第四點:get請求在url中傳送的引數是有長度限制的,而post麼有。

- 第五點: 對引數的資料型別,get只接受ascii字元,而post沒有限制。

其實還有很多我這就沒有一一舉例了 但是下面我要講的是get和post最大的區別

首先你看 從語意上來說 get 的意思是獲得 post的意思是提交 所以顧明思義 get方式是請求獲得資料 而post用於資料的提交

get和post是什麼?http協議中的兩種傳送請求的方法。http是什麼?http是基於tcp/ip的關於資料如何在全球資訊網中如何通訊的協議。

http的底層是tcp/ip。所以get和post的底層也是tcp/ip,也就是說,get/post都是tcp鏈結。get和post能做的事情是一樣一樣的。你要給get加上request body,給post帶上url引數,技術上是完全行的通的。 在我大全球資訊網世界中,tcp就像汽車,我們用tcp來運輸資料,它很可靠,從來不會發生丟件少件的現象。但是如果路上跑的全是看起來一模一樣的汽車,那這個世界看起來是一團混亂,送急件的汽車可能被前面滿載貨物的汽車攔堵在路上,整個交通系統一定會癱瘓。為了避免這種情況發生,交通規則http誕生了。http給汽車運輸設定了好幾個服務類別,有get, post, put, delete等等,http規定,當執行get請求的時候,要給汽車貼上get的標籤(設定method為get),而且要求把傳送的資料放在車頂上(url中)以方便記錄。如果是post請求,就要在車上貼上post的標籤,並把貨物放在車廂裡。當然,你也可以在get的時候往車廂內偷偷藏點貨物,但是這是很不光彩;也可以在post的時候在車頂上也放一些資料,讓人覺得傻乎乎的。http只是個行為準則,而tcp才是get和post怎麼實現的基本。

但是,我們只看到http對get和post引數的傳送渠道(url還是requrest body)提出了要求。「標準答案」裡關於引數大小的限制又是從哪來的呢?

在我大全球資訊網世界中,還有另乙個重要的角色:運輸公司。不同的瀏覽器(發起http請求)和伺服器(接受http請求)就是不同的運輸公司。 雖然理論上,你可以在車頂上無限的堆貨物(url中無限加引數)。但是運輸公司可不傻,裝貨和卸貨也是有很大成本的,他們會限制單次運輸量來控制風險,資料量太大對瀏覽器和伺服器都是很大負擔。業界不成文的規定是,(大多數)瀏覽器通常都會限制url長度在2k個位元組,而(大多數)伺服器最多處理64k大小的url。超過的部分,恕不處理。如果你用get服務,在request body偷偷藏了資料,不同伺服器的處理方式也是不同的,有些伺服器會幫你卸貨,讀出資料,有些伺服器直接忽略,所以,雖然get可以帶request body,也不能保證一定能被接收到哦。

3.get和post還有乙個重大區別,簡單的說:

get產生乙個tcp資料報;post產生兩個tcp資料報。(簡單來說就是get是一次對話而post是2次對話)

長的說:

對於get方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料);

而對於post,瀏覽器先傳送header,伺服器響應100 continue,瀏覽器再傳送data,伺服器響應200 ok(返回資料)。

也就是說,get只需要汽車跑一趟就把貨送到了,而post得跑兩趟,第一趟,先去和伺服器打個招呼「嗨,我等下要送一批貨來,你們開啟門迎接我」,然後再回頭把貨送過去。

- get與post都有自己的語義,不能隨便混用。

- 據研究,在網路環境好的情況下,發一次包的時間和發兩次包的時間差別基本可以無視。而在網路環境差的情況下,兩次包的tcp在驗證資料報完整性上,有非常大的優點。

- 並不是所有瀏覽器都會在post中傳送兩次包,firefox就只傳送一次。

三層架構 之三層擴充套件七層

哎,真心不想在這裡寫這篇部落格,本來三層到七層頂多了也就用兩天時間去分析,結果我用了將近四天,最後我都快崩潰了,還有好多問題都是同學幫我找出來的,真是很是汗顏吶!下面是我三層架構擴充套件成七層架構的uml包圖 之前看別人都是用的vb.net版,我就覺得剛學習了c 語言,就先用c 版吧,結果倒好,兩種...

C 學習之三層架構例項

大家都知道三層架構分為 1,表示層 ui 2,業務邏輯層 bll 3,資料訪問層 dal 下面咱們用乙個簡單的例項,實戰三層架構 首先建立乙個空白的解決方案,新增如下專案以及檔案 2.新增classlibrary專案,命名為bll,新建class型別檔案userbll.cs 3.新增classlib...

C 專案之三層架構總結

二 正文 1 顯示層 ui 通俗講就是展現給使用者的介面,即使用者在使用乙個系統的時候他的所見所得,這裡我就先簡單的理解為主要就是軟體的窗體介面類。ui作用 向使用者展示現特定業務資料 採集使用者的輸入資訊和操作 將有需要的資訊在顯示曾顯示出來。ui設計原則 使用者至上,兼顧簡潔 2 業務邏輯層 b...