近十年網站設計領域最火的架構就是MVC模式,MVC是什麼?
其實MVC是一種軟體架構模式,把程式分成三個部分來分別開發、聯繫。最早是在西元1978年的阿公時代被提出的,近代被發現很適用於網站運作的模式,所以被拿來用在網站開發。
網路上有許多MVC的介紹,所以這裡話不多說,就直接介紹重點觀念就好~
View (視圖) - 介面設計人員進行圖形介面設計。
Controller (控制器)- 負責轉發請求,對請求進行處理。
Model (模型) - 程式設計師編寫程式應有的功能(實現演算法等等)、資料庫專家進行資料管理和資料庫設計(可以實現具體的功能)。
簡單來說,可以想像成我們的程式從外(與外界溝通)到內(對內的資料處理)分別是:
View→Control→Model
外界要與我們程式溝通一般來說是透過View這個介面來進行,而View會將外界的操作經過轉換整理,透過Controller提供的功能接口進行後續動作,若Controller的動作需要存取資料庫的資料,則會透過Model所提供的介面,進行資料存取。
OK,這樣就是一個基本的MVC架構的觀念了,接下來針對ASP.NET來說明MVC在實際source code是怎麼運作的:
以Visual Studio 2017建立一個ASP.NET Core的專案,可以看見專案預設會建好View、Controller、Model的資料夾,很直觀的,在view資料夾下就是放置網頁的檔案,controller下的檔案就是提供各種的API function供網頁端進行叫用,而Model下的就是Database的欄位對應的定義,提供讓controller進行資料庫存取用。
下面舉例在實際運作時會是什麼情況:
1. 透過瀏覽器(EX. Chrome、IE)開啟網站首頁(Home):
流覽器(client)透過網址(http url)連到網站(server),網站解析網址後發現是一個網頁,而後將網頁(html、javascript、jquery、css)回傳給流覽器(client),流覽器再將網頁檔案顯示在client端的視窗上。
2. 網頁上需要顯示網站資料:
在流覽器將網頁檔案顯示在client端的視窗上後,遇到要取得網站資料的情況時,流覽器發送http request給網站,網站解析網址後發現是一個request,則將request解析並導向相對應的Controller,由Controller再透過Model進行後續的資料處理,最終將結果返回流覽器(client)。
所以整個從"瀏覽器開啟首頁"到"網頁上顯示網站資料"的過程就如下圖所示:
特別提一下,上圖Home Controller與WebService Controller的虛線,指的是Controller之間也可以直接呼叫。
接著提一個常見的組合操作:
我們在許多的入口網站都會需要登入帳號,如果帳號密碼是正確的,網頁就會自動跳轉到登入的首頁。這是怎麼運作的呢?
如下圖所示:
1. 流覽器(client)透過網址(http url)連到網站(server),網站解析網址後發現是login網頁,而後將網頁(html、javascript、jquery、css)回傳給流覽器(client)
2. 流覽器再將網頁檔案顯示在client端的視窗上。
3. 使用者填入帳號密碼,按下網頁上的確認按鍵。
4. 流覽器發送驗證帳號的http request給網站,網站解析網址後發現是一個request,則將request解析並導向Web Controller,由Controller再透過Model進行帳號密碼的資料比對。
5. 比對帳號密碼正確,將結果返回流覽器(client)。
6. 此時Web Controller返回登入頁面的url給流覽器。
7. 流覽器透過javascript之類的網頁程序解析url,並連結至url(登入頁面)。
如此,就是一個使用MVC架構的ASP.NET網站在運作時候的情況。
其他的網站如Python、PHP、Ruby、Node.js,在MVC的架構上都是一樣的,只差在source code的分類是怎麼做的,所以只要觀念有了,要用哪一種語言來架網站都不是問題的。
但是ASP.NET的開發環境真的是整合的比較好,畢竟是微軟的產品,付費的當然是比較有保障,但相對的也要看客戶是否願意支付版權費用來架網站了。這也是為何很多中小型的案子都會用PHP、Python之類的語言來架站,因為免費嘛~
其實MVC是一種軟體架構模式,把程式分成三個部分來分別開發、聯繫。最早是在西元1978年的阿公時代被提出的,近代被發現很適用於網站運作的模式,所以被拿來用在網站開發。
網路上有許多MVC的介紹,所以這裡話不多說,就直接介紹重點觀念就好~
View (視圖) - 介面設計人員進行圖形介面設計。
Controller (控制器)- 負責轉發請求,對請求進行處理。
Model (模型) - 程式設計師編寫程式應有的功能(實現演算法等等)、資料庫專家進行資料管理和資料庫設計(可以實現具體的功能)。
簡單來說,可以想像成我們的程式從外(與外界溝通)到內(對內的資料處理)分別是:
View→Control→Model
外界要與我們程式溝通一般來說是透過View這個介面來進行,而View會將外界的操作經過轉換整理,透過Controller提供的功能接口進行後續動作,若Controller的動作需要存取資料庫的資料,則會透過Model所提供的介面,進行資料存取。
OK,這樣就是一個基本的MVC架構的觀念了,接下來針對ASP.NET來說明MVC在實際source code是怎麼運作的:
以Visual Studio 2017建立一個ASP.NET Core的專案,可以看見專案預設會建好View、Controller、Model的資料夾,很直觀的,在view資料夾下就是放置網頁的檔案,controller下的檔案就是提供各種的API function供網頁端進行叫用,而Model下的就是Database的欄位對應的定義,提供讓controller進行資料庫存取用。
下面舉例在實際運作時會是什麼情況:
1. 透過瀏覽器(EX. Chrome、IE)開啟網站首頁(Home):
流覽器(client)透過網址(http url)連到網站(server),網站解析網址後發現是一個網頁,而後將網頁(html、javascript、jquery、css)回傳給流覽器(client),流覽器再將網頁檔案顯示在client端的視窗上。
2. 網頁上需要顯示網站資料:
在流覽器將網頁檔案顯示在client端的視窗上後,遇到要取得網站資料的情況時,流覽器發送http request給網站,網站解析網址後發現是一個request,則將request解析並導向相對應的Controller,由Controller再透過Model進行後續的資料處理,最終將結果返回流覽器(client)。
所以整個從"瀏覽器開啟首頁"到"網頁上顯示網站資料"的過程就如下圖所示:
特別提一下,上圖Home Controller與WebService Controller的虛線,指的是Controller之間也可以直接呼叫。
接著提一個常見的組合操作:
我們在許多的入口網站都會需要登入帳號,如果帳號密碼是正確的,網頁就會自動跳轉到登入的首頁。這是怎麼運作的呢?
如下圖所示:
1. 流覽器(client)透過網址(http url)連到網站(server),網站解析網址後發現是login網頁,而後將網頁(html、javascript、jquery、css)回傳給流覽器(client)
2. 流覽器再將網頁檔案顯示在client端的視窗上。
3. 使用者填入帳號密碼,按下網頁上的確認按鍵。
4. 流覽器發送驗證帳號的http request給網站,網站解析網址後發現是一個request,則將request解析並導向Web Controller,由Controller再透過Model進行帳號密碼的資料比對。
5. 比對帳號密碼正確,將結果返回流覽器(client)。
6. 此時Web Controller返回登入頁面的url給流覽器。
7. 流覽器透過javascript之類的網頁程序解析url,並連結至url(登入頁面)。
如此,就是一個使用MVC架構的ASP.NET網站在運作時候的情況。
其他的網站如Python、PHP、Ruby、Node.js,在MVC的架構上都是一樣的,只差在source code的分類是怎麼做的,所以只要觀念有了,要用哪一種語言來架網站都不是問題的。
但是ASP.NET的開發環境真的是整合的比較好,畢竟是微軟的產品,付費的當然是比較有保障,但相對的也要看客戶是否願意支付版權費用來架網站了。這也是為何很多中小型的案子都會用PHP、Python之類的語言來架站,因為免費嘛~
留言
張貼留言