接口(服务)之间的调用方式有哪些?/软件系统之间接口的几种通讯方式?
常見的接口調(diào)用方式有三種(設(shè)計(jì)接口的時(shí)候要考慮選用哪種接口)
1、http接口:http是一種網(wǎng)絡(luò)傳輸協(xié)議,基于TCP。(等價(jià)于:http+json)
現(xiàn)在瀏覽器客戶端與服務(wù)器端通信基本都是采用http協(xié)議。
SpringCloud框架,各個(gè)服務(wù)間也是通過http方式來實(shí)現(xiàn)的。
http api接口是走h(yuǎn)ttp協(xié)議,通過路徑來區(qū)分調(diào)用的方法,請(qǐng)求報(bào)文都是key-value形式的,返回報(bào)文一般都是json串。
http有幾個(gè)特點(diǎn):
(1)規(guī)定了數(shù)據(jù)格式
(2)對(duì)服務(wù)沒有任何技術(shù)限定,自由靈活,更符合為服務(wù)理念。
(3)現(xiàn)在熱門的REST風(fēng)格 / RESTful 風(fēng)格,就可通過Http協(xié)議來實(shí)現(xiàn)。
請(qǐng)求方式:post/get/put/delete 等。
傳輸?shù)臄?shù)據(jù)格式(一般而言):JSON
2、rpc接口:遠(yuǎn)程過程調(diào)用(類似的還有RMI),基于TCP。
自定義數(shù)據(jù)式,基于原生TCP通信,速度快,效率高。
現(xiàn)在熱門的dubbo框架,就是RPC的典型代表。
rpc有幾個(gè)特點(diǎn):
(1)數(shù)據(jù)的格式可以自定義(一般是XML)。
(2)速度快,效率高。
(3)現(xiàn)在比較熱門的dubbo就是RPC的典型代表。
傳輸?shù)臄?shù)據(jù)格式:XML
3、webservice接口:Webservice是系統(tǒng)對(duì)外的接口。(等價(jià)于:http+xml)
webService接口是走soap協(xié)議通過http傳輸,請(qǐng)求報(bào)文和返回報(bào)文都是xml格式的。
webService接口提供的服務(wù)是基于web容器的,底層使用http協(xié)議,類似一個(gè)遠(yuǎn)程的服務(wù)提供者,比如天氣預(yù)報(bào)服務(wù),對(duì)各地客戶端提供天氣預(yù)報(bào),是一種請(qǐng)求應(yīng)答的機(jī)制,是跨系統(tǒng)跨平臺(tái)的。就是通過一個(gè)servlet,提供服務(wù)出去。
首先客戶端從服務(wù)器的到WebService的WSDL,同時(shí)在客戶端聲稱一個(gè)代理類(Proxy Class) 這個(gè)代理類負(fù)責(zé)與WebService服務(wù)器進(jìn)行Request 和Response 當(dāng)一個(gè)數(shù)據(jù)(XML格式的)被封裝成SOAP格式的數(shù)據(jù)流發(fā)送到服務(wù)器端的時(shí)候,就會(huì)生成一個(gè)進(jìn)程對(duì)象并且把接收到這個(gè)Request的SOAP包進(jìn)行解 析,然后對(duì)事物進(jìn)行處理,處理結(jié)束以后再對(duì)這個(gè)計(jì)算結(jié)果進(jìn)行SOAP包裝,然后把這個(gè)包作為一個(gè)Response發(fā)送給客戶端的代理類(Proxy Class),同樣地,這個(gè)代理類也對(duì)這個(gè)SOAP包進(jìn)行解析處理,繼而進(jìn)行后續(xù)操作。這就是WebService的一個(gè)運(yùn)行過程。
webservice大體上分為5個(gè)層次:
應(yīng)用協(xié)議是SOAP(簡(jiǎn)單對(duì)象訪問協(xié)議)
傳輸?shù)臄?shù)據(jù)格式:XML
4、總結(jié)1(接口的選擇)
現(xiàn)在很多第三方接口,都改成了基于http,直接傳遞json數(shù)據(jù)的方式來代替webservice。
但是webservice接口能傳輸數(shù)據(jù)量比較大的數(shù)據(jù),而且可以跟語(yǔ)言無(wú)關(guān),也可以跟操作系統(tǒng)無(wú)關(guān)。
在某些業(yè)務(wù)復(fù)雜,穩(wěn)定性和正確性要求高的領(lǐng)域(如ERP、電商、支付),WebService還有是用武之地的。
5、總結(jié)2(傳輸數(shù)據(jù)格式的選擇)
為什么JSON比XML流行
還是易用性,JSON的可讀性比XML強(qiáng),解析規(guī)則也簡(jiǎn)單許多。
XML 解析的時(shí)候規(guī)則太多了,動(dòng)不動(dòng)就非法字符,動(dòng)不動(dòng)就拋異常。這對(duì)追求高開發(fā)速度和低開發(fā)門檻的企業(yè)來說,是個(gè)致命傷。
JSON的缺點(diǎn)是數(shù)據(jù)類型支持較少,且不精確。比方說:
{"price":12580}在json里,你無(wú)法知道這個(gè)價(jià)格是int, float還是double。
所以,如上面第二條所述,在一些業(yè)務(wù)要求較高的領(lǐng)域,還是XML更合適。
最后說一下性能, JSON 的性能高于XML,除此之外,基于 XML 和 HTTP 的 WebService , 基于 JSON 的RESTful API ,并沒有性能差異。
6、學(xué)習(xí)鏈接
鏈接1:點(diǎn)我
鏈接2:點(diǎn)我
鏈接3:點(diǎn)我
總結(jié)
以上是生活随笔為你收集整理的接口(服务)之间的调用方式有哪些?/软件系统之间接口的几种通讯方式?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网站安全防范措施
- 下一篇: RFID射频卡超市购物结算系统