Web API應(yīng)用架構(gòu)設(shè)計(jì)分析(1)

Web API 是一種應(yīng)用接口框架,它能夠構(gòu)建HTTP服務(wù)以支撐更廣泛的客戶(hù)端(包括瀏覽器,手機(jī)和平板電腦等移動(dòng)設(shè)備)的框架, ASP.NET Web API 是一種用于在 .NET Framework 上構(gòu)建 RESTful 應(yīng)用程序的理想平臺(tái)。本文主要以ASP.NET Web API 的框架實(shí)現(xiàn)來(lái)介紹整個(gè)Web API應(yīng)用架構(gòu)設(shè)計(jì),但不局限于.NET的技術(shù)。

1、Web API的核心層設(shè)計(jì)

在目前發(fā)達(dá)的應(yīng)用場(chǎng)景下,我們往往需要接入Winform客戶(hù)端、APP程序、網(wǎng)站程序、以及目前熱火朝天的微信應(yīng)用等,這些數(shù)據(jù)應(yīng)該可以由同一個(gè)服務(wù)提供,這個(gè)就是我們所需要構(gòu)建的Web API平臺(tái),基于上述的需求,很多企業(yè)的需求都是以Web API優(yōu)先的理念來(lái)設(shè)計(jì)整個(gè)企業(yè)應(yīng)用體系的。Web API作為整個(gè)紐帶的核心,在整個(gè)核心層需要考慮到統(tǒng)一性、穩(wěn)定性、以及安全性等方面因素。


從上圖我們可以看到,整個(gè)外圍的應(yīng)用場(chǎng)景圍繞著Web API核心層構(gòu)建,如果我們把它換一種方式表達(dá),那么也就是下面的設(shè)計(jì)圖示,我們把微信應(yīng)用、APP應(yīng)用、Web應(yīng)用、Winform應(yīng)用,作為Web API接口層上面的一個(gè)界面應(yīng)用層來(lái)處理,這樣就是基于一個(gè)API接口層,接入多個(gè)或多種方式的界面應(yīng)用層,從而構(gòu)建企業(yè)豐富的數(shù)據(jù)服務(wù)應(yīng)用。
由于Web API層作為一個(gè)公共的接口層,我們就很好保證了各個(gè)界面應(yīng)用層的數(shù)據(jù)一致性,如果考慮到響應(yīng)式的集成處理,我們甚至可以把微信應(yīng)用、APP應(yīng)用、Web應(yīng)用做層一套Web程序,即使為了利用各自應(yīng)用的特殊性,也可以把這些應(yīng)用做的很相似,這樣就給用戶(hù)提供了一個(gè)統(tǒng)一的界面表示方式,極大提高客戶(hù)使用的界面體驗(yàn)效果,用戶(hù)幾乎不需要額外的界面學(xué)習(xí),就可以熟悉整個(gè)應(yīng)用體系的各個(gè)模塊使用。



在整個(gè)WebAPI下面可以通過(guò)業(yè)務(wù)邏輯層整合數(shù)據(jù)存儲(chǔ)和外部接口訪問(wèn)兩部分工作,也就是數(shù)據(jù)訪問(wèn)層、外部接口層這樣的分層概念,如果擴(kuò)展開(kāi)來(lái),我們還可以提供給客戶(hù)一些文件、圖片、視頻等資料的文件存儲(chǔ),類(lèi)似微信的多媒體API接口一樣,這樣整個(gè)Web API的接口層就能為所有接入的客戶(hù)端提供豐富的數(shù)據(jù)接口,從而實(shí)現(xiàn)強(qiáng)大的、靈活的接入。
上面提到了如果考慮到響應(yīng)式的集成處理,我們甚至可以把微信應(yīng)用、APP應(yīng)用、Web應(yīng)用做層一套Web程序,其實(shí)APP應(yīng)用層,可以分為兩種類(lèi)型,一種是原生的APP類(lèi)型,采用原生語(yǔ)言如Object C來(lái)開(kāi)發(fā)IOS應(yīng)用,采用java來(lái)開(kāi)發(fā)安卓的原生應(yīng)用一樣;還有一種是封裝一個(gè)入口的原生框架+后臺(tái)響應(yīng)式Web頁(yè)面,如下圖所示。



對(duì)比原生應(yīng)用,采用入口框架+響應(yīng)式頁(yè)面的方式,開(kāi)發(fā)效率非常快、升級(jí)維護(hù)成本也可以降低很多,比較Web開(kāi)發(fā)總比使用原始APP開(kāi)發(fā)快捷得多。
從上面的架構(gòu)分析來(lái)看,我們的Web API作為核心層,可以在上面開(kāi)發(fā)我們各種企業(yè)業(yè)務(wù)應(yīng)用,

在目前比較熱門(mén)的會(huì)員管理、客戶(hù)管理等方面,結(jié)合微信的應(yīng)用催化劑,就可以做的更加符合移動(dòng)的潮流,從而實(shí)現(xiàn)我們“互聯(lián)網(wǎng)+”的應(yīng)用落地。

2、Web API層在Winform混合框架中的應(yīng)用

同樣,在Winform界面里面,我們除了可以利用直接訪問(wèn)數(shù)據(jù)庫(kù)方式,以及采用訪問(wèn)分布式WCF服務(wù)的方式接入,還可以使得它能夠訪問(wèn)Web API的數(shù)據(jù)服務(wù),從而構(gòu)建成一個(gè)適應(yīng)性更加廣泛、功能更加強(qiáng)大的混合式開(kāi)發(fā)框架模式。
安全性方便,直接訪問(wèn)數(shù)據(jù)庫(kù)方式,沒(méi)有在網(wǎng)絡(luò)上公開(kāi)接口,它們只是在單機(jī)或者局域網(wǎng)安全的環(huán)境運(yùn)行,因此只需要確保數(shù)據(jù)庫(kù)的安全即可,一般可以通過(guò)加密連接字符串方式實(shí)現(xiàn)一定的限制即可。
WCF服務(wù)的安全性,可以通過(guò)X509證書(shū)方式實(shí)現(xiàn)校驗(yàn),也還可以利用自定義的用戶(hù)名、密碼驗(yàn)證方式進(jìn)行檢查等等。
對(duì)于Web API,由于它提供的是一種無(wú)狀態(tài)的接口訪問(wèn),而且往往Web API一般為了多種客戶(hù)端接入的需要,可能需要發(fā)布在公網(wǎng)上進(jìn)行訪問(wèn),因此我們需要更加注重Web API接口層的安全性,這方面我們后面詳細(xì)介紹。
也就是新型的混合式開(kāi)發(fā)框架,除了直連數(shù)據(jù)庫(kù)訪問(wèn)的傳統(tǒng)模式,WCF分布式訪問(wèn)的WCF服務(wù)訪問(wèn)模式,還可以接入API分布式訪問(wèn)的Web API接口模式,他們的關(guān)系構(gòu)成了一個(gè)完整的Winform應(yīng)用體系,如下圖所示。



下面圖示是我的基于傳統(tǒng)訪問(wèn)數(shù)據(jù)庫(kù)方式和分布式WCF數(shù)據(jù)服務(wù)訪問(wèn)方式的一個(gè)模塊分析圖,圍繞著混合型框架的核心,我們可以構(gòu)建很多松散耦合的模塊,從而能夠?yàn)槲覀僕inform應(yīng)用的開(kāi)發(fā)集成提供更高的開(kāi)發(fā)效率。
混合型框架可以看成是Winform框架高級(jí)版本,除了它本身是一個(gè)完整的業(yè)務(wù)系統(tǒng)外,它外圍的所有輔助性模塊均(如通用權(quán)限、通用字典、通用附件管理、通用人員管理。。。。)都實(shí)現(xiàn)了這種混合型的框架,因此使用非常方便,整個(gè)框架如果簡(jiǎn)化來(lái)看,就是在原有的Winform界面層,用接口調(diào)用方式,避免和業(yè)務(wù)邏輯類(lèi)的緊耦合關(guān)系。由于它是通過(guò)接口方式的調(diào)用方式,它本身又可以通過(guò)配置指定指向WCF的實(shí)現(xiàn),因此也囊括了WCF框架的一切特點(diǎn)。在完成Web API層的開(kāi)發(fā)后,基于Web API層的整合就是我下一個(gè)階段的工作了。


我們進(jìn)一步分析混合式框架的實(shí)現(xiàn)細(xì)節(jié),原來(lái)考慮的傳統(tǒng)Winform訪問(wèn)數(shù)據(jù)庫(kù)和WCF服務(wù)訪問(wèn)方式,就是通過(guò)一個(gè)配置模塊,確定是采用直接訪問(wèn)數(shù)據(jù)庫(kù)方式,還是訪問(wèn)WCF服務(wù)的方式,它們兩者是統(tǒng)一到一個(gè)Facade接口門(mén)面層上,如果考慮到Web API層,基于混合式的架構(gòu),也就是在這個(gè)Facade接口門(mén)面層上增加多一個(gè)Web API的接口的封裝成即可。具體整個(gè)框架的架構(gòu)圖如下所示。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容