前言
對于一個前端開發的人員來說,了解服務器的基礎知識,個人覺得是非常必要的,于是就有一個這篇側重于Java的服務器相關知識的文章,只是簡單介紹對于我也是一個拓展。
首先我們來說一下服務器的架構,在很早以前 C/S架構的服務器大行其道,隨著時間的推移,這種兩層架構的服務器模式逐漸被 B/S 架構的WEB服務器所替代。
B/S架構 vs C/S 架構
關于這倆者的詳細關系和比較,你可以百度百科下,不過在我看來,簡述下倆者的不同大體有如下方面:
C/S結構軟件(即客戶機/服務器模式)分為客戶機和服務器兩層。
B/S結構(Browser/Server,瀏覽器/服務器 模式),是WEB興起后的一種網絡結構模式,WEB瀏覽器是客戶端最主要的應用軟件。這種模式統一了客戶端,將系統功能實現的核心部分集中到服務器上,簡化了系統的開發、維護和使用。客戶機上只要安裝一個瀏覽器即可,服務器安裝SQL Serve、Oracle、MYSQL等數據庫。瀏覽器通過Web Server 同數據庫進行數據交互。
從本質上說,Browser/Server結構也是一種Client/Server結構,它可看作是一種由傳統的二層模式Client/Server結構發展而來的三層模式Client/Server結構在Web上應用的特例。
C/S 一般面向相對固定的用戶群,般建立在專用的網絡上,小范圍里的網絡環境,局域網之間再通過專門服務器提供連接和數據交換服務。對信息安全的控制能力很強。 一般高度機密的信息系統采用C/S 結構適宜。可以通過B/S發布部分可公開信息。
B/S 建立在廣域網之上, 對安全的控制能力相對弱, 可能面向不可知的用戶。
聊到這里有個詞需要解釋下,什么是三層架構
三層架構
通常意義上的三層架構就是將整個業務應用劃分為:界面層(User Interface layer)、業務邏輯層(Business Logic Layer)、數據訪問層(Data access layer)。區分層次的目的即為了“高內聚低耦合”的思想。在軟件體系架構設計中,分層式結構是最常見,也是最重要的一種結構。微軟推薦的分層式結構一般分為三層,從下至上分別為:數據訪問層、業務邏輯層(又或稱為領域層)、表示層。
B/S 三層架構,采用這種分層(數據層、邏輯層、界面層)設計編碼實現的b/s模式的軟件就是b/s三層架構的軟件
因為所有的模塊角色只會有三種:數據管理者、數據加工者、數據展示者,意思也就是,籠統說來,軟件只會有三層,每一層扮演一個角色。其他的第四層第五層,一般都是這三層里面的其中之一分出來的,最后都能歸納進這三層的某一層中去,所以用三層架構來描述就比較普遍。
服務器
Web服務器的最底層實際上是一個socket。這個socket監聽并接受到達的TCP連接。一旦一個連接被建立,就可以通過這個新建立的連接讀取、解析信息,然后將這些信息包裝成一個HTTP請求。這個HTTP請求還將被移交至web應用程序,來完成請求的動作。
目前主流的服務器方案是
**中小型服務器: Tomcat 大型服務器: Apache +Tomcat **
關于 Tomcat 與 Apache 的關系大體如下:
Apache是世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠并且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服務器中。同時Apache音譯為阿帕奇。
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。
Apache支持靜態頁,Tomcat支持動態的,比如servlet等, 一般使用apache+tomcat的話,apache只是作為一個轉發,對jsp的處理是由tomcat來處理的。 apache可以支持php\cgi\perl,但是要使用java的話,你需要tomcat在apache后臺支撐,將java請求由apache轉發給tomcat處理。
apache是web服務器,Tomcat是應用(java)服務器,它只是一個servlet(jsp也翻譯成servlet)容器,可以認為是apache的擴展,但是可以獨立于apache運行。
兩者都是apache組織開發的 、兩者都有HTTP服務的功能 、兩者都是免費的。
APACHE是一個web服務器環境程序 啟用他可以作為web服務器使用 不過只支持靜態網頁 如(asp,php,cgi,jsp)等動態網頁的就不行 。如果要在APACHE環境下運行jsp 的話就需要一個解釋器來執行jsp網頁 而這個jsp解釋器就是TOMCAT, 為什么還要JDK呢?**因為jsp需要連接數據庫的話就要jdk來提供連接數據庫的驅程,所以要運行jsp的web服務器平臺就需要APACHE+TOMCAT+JDK **
** Apache:側重于http server Tomcat:側重于servlet引擎,如果以standalone方式運行,功能上與apache等效 , 支持JSP,但對靜態網頁不太理想 **
關于Tomcat的工作原理
首先我們需要先了解下Servlet
Servlet(Server Applet),全稱Java Servlet,暫無中文譯文。是用Java編寫的服務器端程序。其主要功能在于交互式地瀏覽和修改數據,生成動態Web內容。狹義的Servlet是指Java語言實現的一個接口,廣義的Servlet是指任何實現了這個Servlet接口的類,一般情況下,人們將Servlet理解為后者。
Servlet運行于支持Java的應用服務器中。從原理上講,Servlet可以響應任何類型的請求,但絕大多數情況下Servlet只用來擴展基于HTTP協議的Web服務器。
Tomcat是Servlet的容器,Servlet 是一種運行在支持Java語言的服務器上的組件,它與普通Java類的區別就是它運行在服務器上。由于Java的平臺無關性,再加上Servlet 運行在服務器端,因此 Servlet 對于用戶是完全透明的。
Servlet 容器的作用是負責處理客戶請求。當客戶請求來到時,Servlet容器獲取請求,然后調用某個Servlet,并把Servlet的執行結果返回給客戶,Tomcat就是起到這樣作用的容器。
當客戶請示某個資源時,Servlet容器使用 ServletRequest 對象把客戶的請求信息封裝起來,然后調用 Java Servlet API 中定義的一些Servlet 方法,完成Servlet的執行,接著把Servlet 執行的要返回給客戶的結果封裝到 ServletResponse對象中,最后Servlet 容器把客戶的請求發給客戶,完成為客戶的一次服務過程。
關于一個Web中使用到的技術之間的關系
我們常常聽到 HTML、CSS、JavaScript在網頁編程中都會使用到,那到底他們的作用是什么呢,這里打個比喻方便大家大致了解下其各自不同的功能作用。
如果把一個網頁比作一個人的話,HTML就是這個人的軀干,CSS就是這個人的衣服,而JavaScript就是這個人的行為動作。
小結
這里羅列了一些關于服務器端乃至Web前端開發的知識,雖然很淺顯,但是對于我們開發者來說,了解這些也是一種拓展。