天天看點

Web API應用架構設計分析(1)

Web API 是一種應用接口架構,它能夠建構HTTP服務以支撐更廣泛的用戶端(包括浏覽器,手機和平闆電腦等移動裝置)的架構, ASP.NET Web API 是一種用于在 .NET Framework 上建構 RESTful 應用程式的理想平台。本文主要以ASP.NET Web API 的架構實作來介紹整個Web API應用架構設計,但不局限于.NET的技術。

在目前發達的應用場景下,我們往往需要接入Winform用戶端、APP程式、網站程式、以及目前熱火朝天的微信應用等,這些資料應該可以由同一個服務提供,這個就是我們所需要建構的Web API平台,基于上述的需求,很多企業的需求都是以Web API優先的理念來設計整個企業應用體系的。Web API作為整個紐帶的核心,在整個核心層需要考慮到統一性、穩定性、以及安全性等方面因素。

Web API應用架構設計分析(1)

從上圖我們可以看到,整個外圍的應用場景圍繞着Web API核心層建構,如果我們把它換一種方式表達,那麼也就是下面的設計圖示,我們把微信應用、APP應用、Web應用、Winform應用,作為Web API接口層上面的一個界面應用層來處理,這樣就是基于一個API接口層,接入多個或多種方式的界面應用層,進而建構企業豐富的資料服務應用。

由于Web API層作為一個公共的接口層,我們就很好保證了各個界面應用層的資料一緻性,如果考慮到響應式的內建處理,我們甚至可以把微信應用、APP應用、Web應用做層一套Web程式,即使為了利用各自應用的特殊性,也可以把這些應用做的很相似,這樣就給使用者提供了一個統一的界面表示方式,極大提高客戶使用的界面體驗效果,使用者幾乎不需要額外的界面學習,就可以熟悉整個應用體系的各個子產品使用。

Web API應用架構設計分析(1)

在整個WebAPI下面可以通過業務邏輯層整合資料存儲和外部接口通路兩部分工作,也就是資料通路層、外部接口層這樣的分層概念,如果擴充開來,我們還可以提供給客戶一些檔案、圖檔、視訊等資料的檔案存儲,類似微信的多媒體API接口一樣,這樣整個Web API的接口層就能為所有接入的用戶端提供豐富的資料接口,進而實作強大的、靈活的接入。

上面提到了如果考慮到響應式的內建處理,我們甚至可以把微信應用、APP應用、Web應用做層一套Web程式,其實APP應用層,可以分為兩種類型,一種是原生的APP類型,采用原生語言如Object C來開發IOS應用,采用java來開發安卓的原生應用一樣;還有一種是封裝一個入口的原生架構+背景響應式Web頁面,如下圖所示。

Web API應用架構設計分析(1)

對比原生應用,采用入口架構+響應式頁面的方式,開發效率非常快、更新維護成本也可以降低很多,比較Web開發總比使用原始APP開發快捷得多。

從上面的架構分析來看,我們的Web API作為核心層,可以在上面開發我們各種企業業務應用,

Web API應用架構設計分析(1)

在目前比較熱門的會員管理、客戶管理等方面,結合微信的應用催化劑,就可以做的更加符合移動的潮流,進而實作我們“網際網路+”的應用落地。

同樣,在Winform界面裡面,我們除了可以利用直接通路資料庫方式,以及采用通路分布式WCF服務的方式接入,還可以使得它能夠通路Web API的資料服務,進而建構成一個适應性更加廣泛、功能更加強大的混合式開發架構模式。

安全性友善,直接通路資料庫方式,沒有在網絡上公開接口,它們隻是在單機或者區域網路安全的環境運作,是以隻需要確定資料庫的安全即可,一般可以通過加密連接配接字元串方式實作一定的限制即可。

WCF服務的安全性,可以通過X509證書方式實作校驗,也還可以利用自定義的使用者名、密碼驗證方式進行檢查等等。

對于Web API,由于它提供的是一種無狀态的接口通路,而且往往Web API一般為了多種用戶端接入的需要,可能需要釋出在公網上進行通路,是以我們需要更加注重Web API接口層的安全性,這方面我們後面詳細介紹。

也就是新型的混合式開發架構,除了直連資料庫通路的傳統模式,WCF分布式通路的WCF服務通路模式,還可以接入API分布式通路的Web API接口模式,他們的關系構成了一個完整的Winform應用體系,如下圖所示。

Web API應用架構設計分析(1)

下面圖示是我的基于傳統通路資料庫方式和分布式WCF資料服務通路方式的一個子產品分析圖,圍繞着混合型架構的核心,我們可以建構很多松散耦合的子產品,進而能夠為我們Winform應用的開發內建提供更高的開發效率。

混合型架構可以看成是Winform架構進階版本,除了它本身是一個完整的業務系統外,它外圍的所有輔助性子產品均(如通用權限、通用字典、通用附件管理、通用人員管理。。。。)都實作了這種混合型的架構,是以使用非常友善,整個架構如果簡化來看,就是在原有的Winform界面層,用接口調用方式,避免和業務邏輯類的緊耦合關系。由于它是通過接口方式的調用方式,它本身又可以通過配置指定指向WCF的實作,是以也囊括了WCF架構的一切特點。在完成Web API層的開發後,基于Web API層的整合就是我下一個階段的工作了。

Web API應用架構設計分析(1)

我們進一步分析混合式架構的實作細節,原來考慮的傳統Winform通路資料庫和WCF服務通路方式,就是通過一個配置子產品,确定是采用直接通路資料庫方式,還是通路WCF服務的方式,它們兩者是統一到一個Facade接口門面層上,如果考慮到Web API層,基于混合式的架構,也就是在這個Facade接口門面層上增加多一個Web API的接口的封裝成即可。具體整個架構的架構圖如下所示。

Web API應用架構設計分析(1)