Api是一個(gè)實(shí)現(xiàn)方式,web Service屬于架構(gòu)中的web服務(wù),RPC屬于它的一種
從使用方式上,可分為RPC,SOA,REST
從數(shù)據(jù)格式上,分為xml JSON
其中,RPC和SOAP的使用在減少,Restful架構(gòu)占到了主導(dǎo)地位;XML格式的使用在減少,json等輕量級(jí)格式的使用在增多。
? 1.功能分類
1.1功能模塊之間的接口(同一個(gè)數(shù)據(jù)庫)
1.2系統(tǒng)間接口
2.不同類型接口分別代表?
http接口、api接口、RPC接口、RMI、webservice、Restful等概念
RPC:所謂的遠(yuǎn)程過程調(diào)用 (面向方法)
簡(jiǎn)單的說,RPC就是從一臺(tái)機(jī)器(客戶端)上通過參數(shù)傳遞的方式調(diào)用另一臺(tái)機(jī)器(服務(wù)器)上的一個(gè)函數(shù)或方法(可以統(tǒng)稱為服務(wù))并得到返回的結(jié)果。
RPC 會(huì)隱藏底層的通訊細(xì)節(jié)(不需要直接處理Socket通訊或Http通訊)
RPC 是一個(gè)請(qǐng)求響應(yīng)模型??蛻舳税l(fā)起請(qǐng)求,服務(wù)器返回響應(yīng)(類似于Http的工作方式)
RPC 在使用形式上像調(diào)用本地函數(shù)(或方法)一樣去調(diào)用遠(yuǎn)程的函數(shù)(或方法)。
SOA:(面向服務(wù)的軟件架構(gòu)、Service Oriented Architecture
面向消息)
基于SOA的解決方案,SOA架構(gòu)可分為五層水平:
用戶界面層----?這些GUI的最終用戶或應(yīng)用程序訪問的應(yīng)用程序/服務(wù)接口;
業(yè)務(wù)流程層----?在應(yīng)用方面的業(yè)務(wù)用例服務(wù);
服務(wù)層----?服務(wù)合并在一起,提供統(tǒng)一的實(shí)時(shí)服務(wù);
服務(wù)組件層----?用來建造服務(wù)的組件,如功能庫、技術(shù)庫、技術(shù)接口等;
操作系統(tǒng)----?這層包含數(shù)據(jù)模型,企業(yè)數(shù)據(jù)倉(cāng)庫,技術(shù)平臺(tái)等;
SCA
SCA全稱Service Component Architecture,中文叫服務(wù)組件化架構(gòu)。SCA是基于SOA開發(fā)的一個(gè)模型規(guī)范,由IBM領(lǐng)頭提出的標(biāo)準(zhǔn)。
微服務(wù)
微服務(wù)架構(gòu)在某種程度上是面向服務(wù)的架構(gòu)SOA繼續(xù)發(fā)展的下一步。
它們可以寫入不同的編程語言并使用不同的數(shù)據(jù)庫。集中式服務(wù)管理幾乎不存在,微服務(wù)使用輕量級(jí)HTTP、REST或Thrift API進(jìn)行通信。
REST:所謂的 Representational state transfer (面向資源|表現(xiàn)層狀態(tài)轉(zhuǎn)移)
描述的是在網(wǎng)絡(luò)中client和server的一種交互形式
RPC 即遠(yuǎn)程過程調(diào)用, 很簡(jiǎn)單的概念, 像調(diào)用本地服務(wù)(方法)一樣調(diào)用服務(wù)器的服務(wù)(方法).
通常的實(shí)現(xiàn)有 XML-RPC , JSON-RPC , 通信方式基本相同, 所不同的只是傳輸數(shù)據(jù)的格式.
REST 的三個(gè)要素是 唯一的資源標(biāo)識(shí), 簡(jiǎn)單的方法 (此處的方法是個(gè)抽象的概念), 一定的表達(dá)方式.
重要的特性:無狀態(tài)
個(gè)人也比較喜歡REST,目前基本主流開放平臺(tái)都是使用這個(gè)(淘寶開放平臺(tái)/人人網(wǎng)/facebook...)
Web Service 已經(jīng)是過時(shí)之物,平常基本使用甚少,建議不要在折騰它了
自己的接口就用https,加上一個(gè)key做一次hash放在最后即可??紤]到國(guó)情,HTTPS在無線網(wǎng)絡(luò)里不穩(wěn)定,可以使用Application Level的加密手段把整個(gè)HTTP的payload加密
作者:覃超
鏈接:https://www.zhihu.com/question/28557115/answer/48094438
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
各端的具體實(shí)現(xiàn)
如上面的圖所示,Server統(tǒng)一提供一套R(shí)ESTful API,web+ios+android作為同等公民調(diào)用API。各端發(fā)展到現(xiàn)在,都有一套比較成熟的框架來幫開發(fā)者事半功倍。
-- Server --
推薦: Spring MVC 或者 Jersey 或者 Play Framework
教程:
Getting Started · Building a RESTful Web Service
-- Android --
推薦: RetroFit (Retrofit) 或者 Volley (mcxiaoke/android-volley · GitHubGoogle官方的被block,就不貼了 )
教程:
Retrofit ??? Getting Started and Create an Android Client
快速Android開發(fā)系列網(wǎng)絡(luò)篇之Retrofit
-- iOS --
推薦:RestKit (RestKit/RestKit · GitHub)
教程:
Developing RESTful iOS Apps with RestKit
-- Web --
推薦隨便搞!可以用重量級(jí)的AngularJS,也可以用輕量級(jí) Backbone + jQuery 等。
教程:http://blog.javachen.com/2015/01/06/build-app-with-spring-boot-and-gradle/
參考:
[2]:GitHub API v3
[3]:tlhunter/consumer-centric-api-design · GitHub
作者:水巖
鏈接:http://www.itdecent.cn/p/9d38b5205344
來源:簡(jiǎn)書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。