前言:想要寫出一篇引人入勝的文章?我們特意為您整理了中小企業WEB網站架構與程序設計模式范文,希望能給你帶來靈感和參考,敬請閱讀。
摘要:隨著Web技術的發展,Web程序運行架構與設計技術越來越多的呈現在開發者面前。本文探討了中小企業web應用程序的運行架構,研究分析了中小企業應用程序的設計模式。
引言
Web應用程序是一種經由Internet或Intranet、以Web方式提供服務的程序。它是典型的瀏覽器/服務器架構的產物。采用Internet標準的通信協議HTTP作為兩者通信的標準。為服務開發商提供規范和簡化的開發模式,由于用統一的HTML語言作為客戶端程序的編碼,通過瀏覽器和Internet網的便捷性,可以在任何地方進行數據訪問。在現實的應用中,我們通過瀏覽器將事務邏輯暴露給用戶,用戶通過瀏覽器將事務邏輯激活并將初始參數等信息傳遞給服務器,運行存儲于之中的事務處理程序,處理規定的事務邏輯。這要通過運行相應的Web應用服務程序和數據庫服務程序來完成,服務器對數據進行處理后,將處理的結果生成網頁,傳給瀏覽器,以實現對處理結果的顯示。這樣系統客戶端被大大的簡化,用一個瀏覽器就可以應對于所有Web應用程序,降低了客戶端計算機的配置成本。
1中小企業Web應用程序的運行架構
1.1通信協議
瀏覽器/服務器架構的核心是HTTP,它有兩種報文形式:請求/響應。請求報文包括方法、資源路徑、協議的版本、頭部的可選信息和報文體;響應報文包括協議的版本號、狀態碼、頭部信息和獲取資源的內容等。隨著WebService技術的出現,產生了SOAP、WSDL、UDDI協議。WSDL用來描述如何訪問具體的接口,UDDI用來管理,分發,查詢WebService當用戶通過UDDI找到你的WSDL描述文檔后,就可以通過SOAP調用已建立Web服務中的一個或多個操作。SOAP支持不同的底層接口,如HTTP(S)或者SMTP。
1.2主要服務軟件
主要的Web服務器支撐軟件常見的有Apache、IIS、Nginx。Apache使用范圍廣,支持多平臺,Nginx支持反向,IIS是微軟支持Web服務器軟件通過添加組件可以支持多種服務。但它們只能將一個固定的內容返回到客戶端,不論何人、何時都一樣。Weblogic、Tomcat、Jetty是常見的應用服務器,它們通過瀏覽器把服務的業務暴露給用戶,當用戶提出請求時,在服務器端為用戶運行業務處理程序,完成業務邏輯處理。WebSphere是IBM的基于Java的應用環境,建立、部署和管理Internet和IntranetWeb應用服務器軟件,使用較少。Tomcat也是基于java應用服務器。它只是一個Servlet容器,可以獨立運行。它的特別之處在常常與Apache整合起來使用,能夠處理JSP,被廣泛使用。Jetty采用最優的開源JavaWeb引擎,將Java社區中使用量最大,用戶數最多。Jetty通過使用APR和Tomcat本地技術的混合模型來解決問題。混合技術模型從最新的操作系統技術里提供了最好的線程和事件處理。其性能參數匹配甚至超越了本地ApacheHTTP服務器或者IIS。Jetty能夠提供數據庫連接池服務,不僅支持JSP等Java技術,還支持其他Web技術如PHP、.NET等。在數據管理上,中小企業網站主要使用關系型數據庫技術,它是對數據進行高效管理主要工具,并且為外提應用提供訪問接口,為Web應用創造良好的開發環境。近來也有使用非關系型數據庫的趨勢。主要的數據庫管理軟件為Mysql和MS-SQLServer。兩款產品性能差不多,MS-sqlserver主要用在微軟的為主的技術體系中,在市場中有一定的占有率。Mysql作為熱門的數據庫管理系統,在市場中有廣泛的使用,它對Windows和linux平臺有很好的支持。尤其是和php程序設計語言結合,產生了好多開發環境。在客戶終端的瀏覽器上,微軟、谷歌、蘋果產品市場占有率很高。瀏覽器的內核主要有Trident、Gecko、WebKit、Presto。主要任務是對HTML語言進行解釋與渲染,生成用戶的瀏覽界面。
1.3運行架構
(1)數據訪問量有限的架構。網站的初期,我們往往會在單機上跑我們所有的程序。但隨著訪問量逐步上升,服務器的負載慢慢提高,網站的壓力逐步顯現。假如我們代碼層面已難以優化,在不提高單臺機器的性能的情況下,可以將服務細化,將后臺服務分成業務服務和數據庫服務,分別由不同的計算機完成。這樣不僅可以有效地提高系統的負載能力,而且性價比也很高,還提高了容災能力,如圖1所示。(2)數據訪問量較大的架構。隨著訪問量繼續增加,上圖所示的架構也即將無法滿足客戶的需求了。這時可以把應用服務器從一臺變成多臺,將他們組成一個服務器集群,通過負載均衡技術把用戶的請求分散到不同的服務器中,從而提高負載能力。而對于日益增加數據庫的訪問需求,我們可以通過SAN、NAS和加大緩存與讀寫分離等技術來解決,如圖2所示。
2中小企業應用程序的設計模式
設計模式是軟件開發人員在軟件開發過程中面臨的一般問題的解決方案。它是一套被反復使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結。框架是一種相對固定的設計模式是可重用、半完成的應用程序,使用框架可以生成專門定制的應用程序。
2.1基于“WEB頁面/文件”設計模式
這種設計模式下,當客戶端通過HTTP協議,將網頁上暴露的商業邏輯提交至服務器時,URL直接指向某個文件,然后由該文件來處理請求,同時將輸入參數提交給它,運行結束返回響應結果。在實踐中,我們把不同的業務處理程序放在不同的文件夾的文件中,使之與URL對應。當HTTP把請求提交至服務器時,URL為:www.sjsyd.com/news/reader.php?id=1234.可以想象,在站點根目錄的news目錄下放置一個reader.php文件,同時提交給文件的id值為1234。這種設計模式在ASP、PHP處理簡單業務時常見。
2.2基于MVC設計模式
模型(M)是數據的表述,它不是真正的數據,而是數據的接口,使用它時我們無需知道底層數據庫的不同類型。視圖(V)使我們看到的界面,它是表現層。控制器(C)控制模型和視圖之間的信息流動,它通過程序邏輯來判斷模型從數據庫獲取了什么信息,將什么信息傳給了視圖。這種設計模式分離了應用邏輯和表現邏輯,所有請求都通過控制器分發,分發過程基于請求的URL.這種設計模式和上面的基于文件的模式一樣,都是基于請求/響應驅動的,服務器與客戶機之間的數據傳輸遵循Http協議。它是中小企業網站主流的程序設計模式,很多常用框架springMVC(Java),RubyonRails(Ruby),ZendFramework(PHP)等都支持它。因為它們有很好程序結構和代碼資源可供使用,給Web應用程序設計帶來了極大便利,能夠滿足高內聚、低耦合的要求。如有URL,www.sjsyd.com/lib/book/1234.可以想象在實際代碼中,我們會有一個控制器libController,其中有一個bookAction。當業務邏輯發生變化時,只要在控制器上變化一下即可,從而實現表現(V)與模型(M)的分離,與asp/php業務邏輯和表現層混合編程方式相比,程序的修改要方便很多。不同框架可能默認實現方式稍有不同,有的是一個Controller一個文件,其中有多個Action,有的是每個Action一個文件。還有更直接的基于URL的設計方案,那就是REST。通過人為規定URL的構成形式(Action限制為只有幾種)來促進網站之間的互相訪問,降低開發的復雜性,提高系統的伸縮性。
2.3基于組件的設計模式
此種設計模式在中小企業網站程序設計中最常用的框架為ASP.NET的Webform。它采用的是視圖優先的策略,非常接近VCGUI,JavaSwing等可視化設計,可通過拖拽控件方式完成表現層設計。雙擊它們即可在后臺代碼中生成一系列事件響應代碼,這些邏輯代碼都在ASPX.CS文件中。Webform將用戶的請求與響應都封裝為控件,采用事件驅動模式來控制應用程序請求,因此需要大量服務器控件支持。.NET中的事件基于委托模型。委托模型遵循觀察者設計模式,使訂閱者能夠向提供方注冊并接收相關通知。事件發送方推送事件發生的通知,事件接收器接收該通知并定義對它的響應,HTTP被隱含其中。當然不是僅有ASP.NET支持這種模式,對PHP來說,PRADO就是完全基于組件和事件驅動的開發框架。
3結語
總之,隨著云計算、大數據、人工智能的發展與廣泛使用,中小企業網站必將在架構與設計模式中呈現出越來越多的特點,以適應業務需求的不斷變化。
作者:趙立群 單位:北京市石景山區業余大學