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