Web API 是一種應用接口框架,它可以構建HTTP服務以支撐更普遍的客戶端(包括瀏覽器,手機和平板電腦等移動設備)的框架, ASP.NET Web API 是一種用於在 .NET Framework 上構建 RESTful 應用程序的理想平臺。本文主要以ASP.NET Web API 的框架實現來介紹整個Web API應用架構設計,但不侷限於.NET的技術。html
在目前發達的應用場景下,咱們每每須要接入Winform客戶端、APP程序、網站程序、以及目前熱火朝天的微信應用等,這些數據應該能夠由同一個服務提供,這個就是咱們所須要構建的Web API平臺,基於上述的需求,不少企業的需求都是以Web API優先的理念來設計整個企業應用體系的。Web API做爲整個紐帶的核心,在整個核心層須要考慮到統一性、穩定性、以及安全性等方面因素。java
從上圖咱們能夠看到,整個外圍的應用場景圍繞着Web API核心層構建,若是咱們把它換一種方式表達,那麼也就是下面的設計圖示,咱們把微信應用、APP應用、Web應用、Winform應用,做爲Web API接口層上面的一個界面應用層來處理,這樣就是基於一個API接口層,接入多個或多種方式的界面應用層,從而構建企業豐富的數據服務應用。數據庫
因爲Web API層做爲一個公共的接口層,咱們就很好保證了各個界面應用層的數據一致性,若是考慮到響應式的集成處理,咱們甚至能夠把微信應用、APP應用、Web應用作層一套Web程序,即便爲了利用各自應用的特殊性,也能夠把這些應用作的很類似,這樣就給用戶提供了一個統一的界面表示方式,極大提升客戶使用的界面體驗效果,用戶幾乎不須要額外的界面學習,就能夠熟悉整個應用體系的各個模塊使用。瀏覽器
在整個WebAPI下面能夠經過業務邏輯層整合數據存儲和外部接口訪問兩部分工做,也就是數據訪問層、外部接口層這樣的分層概念,若是擴展開來,咱們還能夠提供給客戶一些文件、圖片、視頻等資料的文件存儲,相似微信的多媒體API接口同樣,這樣整個Web API的接口層就能爲全部接入的客戶端提供豐富的數據接口,從而實現強大的、靈活的接入。安全
上面提到了若是考慮到響應式的集成處理,咱們甚至能夠把微信應用、APP應用、Web應用作層一套Web程序,其實APP應用層,能夠分爲兩種類型,一種是原生的APP類型,採用原生語言如Object C來開發IOS應用,採用java來開發安卓的原生應用同樣;還有一種是封裝一個入口的原生框架+後臺響應式Web頁面,以下圖所示。微信
對比原生應用,採用入口框架+響應式頁面的方式,開發效率很是快、升級維護成本也能夠下降不少,比較Web開發總比使用原始APP開發快捷得多。網絡
從上面的架構分析來看,咱們的Web API做爲核心層,能夠在上面開發咱們各類企業業務應用,架構
在目前比較熱門的會員管理、客戶管理等方面,結合微信的應用催化劑,就能夠作的更加符合移動的潮流,從而實現咱們「互聯網+」的應用落地。app
一樣,在Winform界面裏面,咱們除了能夠利用直接訪問數據庫方式,以及採用訪問分佈式WCF服務的方式接入,還可使得它可以訪問Web API的數據服務,從而構建成一個適應性更加普遍、功能更增強大的混合式開發框架模式。框架
安全性方便,直接訪問數據庫方式,沒有在網絡上公開接口,它們只是在單機或者局域網安全的環境運行,所以只須要確保數據庫的安全便可,通常能夠經過加密鏈接字符串方式實現必定的限制便可。
WCF服務的安全性,能夠經過X509證書方式實現校驗,也還能夠利用自定義的用戶名、密碼驗證方式進行檢查等等。
對於Web API,因爲它提供的是一種無狀態的接口訪問,並且每每Web API通常爲了多種客戶端接入的須要,可能須要發佈在公網上進行訪問,所以咱們須要更加註重Web API接口層的安全性,這方面咱們後面詳細介紹。
也就是新型的混合式開發框架,除了直連數據庫訪問的傳統模式,WCF分佈式訪問的WCF服務訪問模式,還能夠接入API分佈式訪問的Web API接口模式,他們的關係構成了一個完整的Winform應用體系,以下圖所示。
下面圖示是個人基於傳統訪問數據庫方式和分佈式WCF數據服務訪問方式的一個模塊分析圖,圍繞着混合型框架的核心,咱們能夠構建不少鬆散耦合的模塊,從而可以爲咱們Winform應用的開發集成提供更高的開發效率。
混合型框架能夠當作是Winform框架高級版本,除了它自己是一個完整的業務系統外,它外圍的全部輔助性模塊均(如通用權限、通用字典、通用附件管理、通用人員管理。。。。)都實現了這種混合型的框架,所以使用很是方便,整個框架若是簡化來看,就是在原有的Winform界面層,用接口調用方式,避免和業務邏輯類的緊耦合關係。因爲它是經過接口方式的調用方式,它自己又能夠經過配置指定指向WCF的實現,所以也囊括了WCF框架的一切特色。在完成Web API層的開發後,基於Web API層的整合就是我下一個階段的工做了。
咱們進一步分析混合式框架的實現細節,原來考慮的傳統Winform訪問數據庫和WCF服務訪問方式,就是經過一個配置模塊,肯定是採用直接訪問數據庫方式,仍是訪問WCF服務的方式,它們二者是統一到一個Facade接口門面層上,若是考慮到Web API層,基於混合式的架構,也就是在這個Facade接口門面層上增長多一個Web API的接口的封裝成便可。具體整個框架的架構圖以下所示。