摘要:分布式的web系統(tǒng)可以看成一個(gè)分布在局域網(wǎng)上的web集群系統(tǒng)。企業(yè)所有的復(fù)雜業(yè)務(wù)本來可以部署在一臺(tái)web服務(wù)器之上,但為了降低企業(yè)運(yùn)營(yíng)成本,我們需要將復(fù)雜業(yè)務(wù)細(xì)分成不同的功能模塊,分別部署到不同的web服務(wù)器之上。這些不同的web服務(wù)器形成一個(gè)分布式的web系統(tǒng),這個(gè)分布式web系統(tǒng)在外部看來它和一個(gè)web系統(tǒng)沒有任何區(qū)別。在這個(gè)分布式的web系統(tǒng)里,不同web系統(tǒng)之間要互相分工協(xié)作,共同完成企業(yè)內(nèi)部用戶和外部用戶的web請(qǐng)求處理。Web api作為web分布式系統(tǒng)的主要技術(shù)之一,將先從概述開始介紹web api技術(shù)及其特點(diǎn),然后從web api技術(shù)原理來介紹web api技術(shù)本質(zhì),最后以C#平臺(tái)為例,來介紹web api的開發(fā)過程。
關(guān)鍵詞:分布式;web api
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)05-0089-01
開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼cOSID):
1 Web api技術(shù)概述
Web api是進(jìn)行網(wǎng)絡(luò)服務(wù)的接口技術(shù),通過該接口技術(shù)可以實(shí)現(xiàn)數(shù)據(jù)傳輸,存儲(chǔ)服務(wù)、消息服務(wù)、計(jì)算等服務(wù),利用這些服務(wù)可以開發(fā)出強(qiáng)大功能的分布式的web應(yīng)用。簡(jiǎn)單來說,我們可以做前后端分離的項(xiàng)目,前端和后端通過url連接,進(jìn)行數(shù)據(jù)傳輸。復(fù)雜來說,我們可以做服務(wù)器之間的服務(wù)調(diào)用,以u(píng)rl形式的訪問,進(jìn)行數(shù)據(jù)傳輸,我們可以開發(fā)強(qiáng)大功能的分布式web應(yīng)用。
2 Web api技術(shù)原理
服務(wù)器可以通過web api向請(qǐng)求者發(fā)送json格式的數(shù)據(jù),請(qǐng)求者可以是分布式服務(wù)器中的一臺(tái)服務(wù)器,也可以是手機(jī)app終端等等。請(qǐng)求者可以采用http協(xié)議或者socket協(xié)議發(fā)送請(qǐng)求,服務(wù)器接收到請(qǐng)求,對(duì)請(qǐng)求進(jìn)行參數(shù)解析,然后調(diào)用相應(yīng)的接口,將獲得的數(shù)據(jù)發(fā)送給請(qǐng)求者,如下圖1所示:
上圖中,詳細(xì)描述了web api的工作過程,請(qǐng)求者通過http協(xié)議發(fā)送請(qǐng)求,服務(wù)器對(duì)request對(duì)象的url和參數(shù)進(jìn)行解析,然后調(diào)用相應(yīng)的web api,web api然后調(diào)用業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層調(diào)用數(shù)據(jù)訪問層,數(shù)據(jù)訪問層調(diào)用數(shù)據(jù)庫(kù),然后數(shù)據(jù)依次返回,web api然后將Json格式的數(shù)據(jù)返回給請(qǐng)求者。
3 C#平臺(tái)實(shí)現(xiàn)web api的開發(fā)
在這里,我們采用visual studio開發(fā)工具進(jìn)行C# web系統(tǒng)的開發(fā)環(huán)境。在visual studio開發(fā)工具中,提供了專門的模塊,可以直接創(chuàng)建一個(gè)web api。在這里以商品的增刪改查為例,來完成web api的開發(fā),核心偽代碼如下:
3.1 配置web api
public class GoodsControUer: ApiControjler{
GoodsService goodsService= new goodsService0;
public Goods fmdGoodsByName (String name){
return goodService.findGoodsBvName(name)
)
public int deleteGoodsByld(int id){
return goodService.deleteGoodsByld (id)
)
public int insertGoods(Goods goods){
return goodService.insertGoods(goods)
)
public int updateGoodsByld (Goods goods){
goodService.updateGoodsByld(goods)
】】
3.2 配置Web API路由及返回json格式
config.Formatters.Remove(config.Formatters.XmIFormatter);
config.MapHttpAttributeRoutes0;
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate:“api/{controller)/{action}/{id)”,
defaults: new( id= RouteParameter.Optional)
);
通過http://ip/api/Goods/ findGoodsByName/name的url請(qǐng)求,調(diào)用類中findGoodsByName的方法。其他操作,采用相似的url請(qǐng)求,調(diào)用類中的不同的web api方法,獲得相應(yīng)的Json格式數(shù)據(jù)。
4 結(jié)束語
本文通過對(duì)web api的概念,原理和應(yīng)用等各方面的介紹,我們掌握了如何在web項(xiàng)目中創(chuàng)建一個(gè)對(duì)外的web api服務(wù)器技術(shù)。該服務(wù)可以讓同平臺(tái)的web項(xiàng)目訪問,也可以讓異構(gòu)平臺(tái)的web項(xiàng)目訪問,因此web api技術(shù)可以在分布式web系統(tǒng)之間進(jìn)行數(shù)據(jù)共享。既然可以實(shí)現(xiàn)了平臺(tái)之間的數(shù)據(jù)共享,那么我們就可以把不同的功能進(jìn)行分解,部署在不同的服務(wù)器上,進(jìn)而可以實(shí)現(xiàn)web項(xiàng)目的分布式部署。
參考文獻(xiàn):
[1]王仲洲,楊曉洪,王劍平,等.基于REST風(fēng)格的WEB API架構(gòu)研究[J].微處理機(jī),2016,37(5):52-55.
[2]張爾喜,先曉兵,王雪鋒.基于WebAPl的移動(dòng)端學(xué)生綜合服務(wù)平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[J].軟件工程,2017,20(10):40-42.
[3]廖治凱.基于WebApi和類WebApp的畢業(yè)論文管理系統(tǒng)[Jl.科技展望,2017,27(24):31.
[4]王佳琪.基于J2EE架構(gòu)的分布式企業(yè)級(jí)Web應(yīng)用研究[J].計(jì)算機(jī)產(chǎn)品與流通,2018(10):27.
【通聯(lián)編輯:謝媛媛】
收稿日期:2019-12-15
基金項(xiàng)目:湖南省教育廳科學(xué)研究課題之一《基于分布式的web系統(tǒng)架構(gòu)設(shè)計(jì)》
作者簡(jiǎn)介:謝振華(1981-),男,湖北松滋人,副教授,大學(xué)本科,研究方向?yàn)榫W(wǎng)站開發(fā)、網(wǎng)絡(luò)工程等。