接口

Api是一个实现方式,web Service属于架构中的web服务,RPC属于它的一种

从使用方式上,可分为RPC,SOA,REST

从数据格式上,分为xml JSON

其中,RPC和SOAP的使用在减少,Restful架构占到了主导地位;XML格式的使用在减少,json等轻量级格式的使用在增多。

  1.功能分类

1.1功能模块之间的接口(同一个数据库)

1.2系统间接口

2.不同类型接口分别代表?

http接口、api接口、RPC接口、RMI、webservice、Restful等概念

RPC:所谓的远程过程调用 (面向方法)

简单的说,RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。

RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯)

RPC 是一个请求响应模型。客户端发起请求,服务器返回响应(类似于Http的工作方式)

RPC 在使用形式上像调用本地函数(或方法)一样去调用远程的函数(或方法)。

SOA:(面向服务的软件架构、Service Oriented Architecture

面向消息)

基于SOA的解决方案,SOA架构可分为五层水平:

用户界面层---- 这些GUI的最终用户或应用程序访问的应用程序/服务接口;

业务流程层---- 在应用方面的业务用例服务;

服务层---- 服务合并在一起,提供统一的实时服务;

服务组件层---- 用来建造服务的组件,如功能库、技术库、技术接口等;

操作系统---- 这层包含数据模型,企业数据仓库,技术平台等;

SCA

SCA全称Service Component Architecture,中文叫服务组件化架构。SCA是基于SOA开发的一个模型规范,由IBM领头提出的标准。

微服务

微服务架构在某种程度上是面向服务的架构SOA继续发展的下一步。

它们可以写入不同的编程语言并使用不同的数据库。集中式服务管理几乎不存在,微服务使用轻量级HTTP、REST或Thrift API进行通信。

REST:所谓的 Representational state transfer (面向资源|表现层状态转移)

描述的是在网络中client和server的一种交互形式

RPC 即远程过程调用, 很简单的概念, 像调用本地服务(方法)一样调用服务器的服务(方法).

通常的实现有 XML-RPC , JSON-RPC , 通信方式基本相同, 所不同的只是传输数据的格式.

REST 的三个要素是 唯一的资源标识, 简单的方法 (此处的方法是个抽象的概念), 一定的表达方式.

重要的特性:无状态

个人也比较喜欢REST,目前基本主流开放平台都是使用这个(淘宝开放平台/人人网/facebook...)

Web Service 已经是过时之物,平常基本使用甚少,建议不要在折腾它了

自己的接口就用https,加上一个key做一次hash放在最后即可。考虑到国情,HTTPS在无线网络里不稳定,可以使用Application Level的加密手段把整个HTTP的payload加密

作者:覃超

链接:https://www.zhihu.com/question/28557115/answer/48094438

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

各端的具体实现

如上面的图所示,Server统一提供一套RESTful API,web+ios+android作为同等公民调用API。各端发展到现在,都有一套比较成熟的框架来帮开发者事半功倍。

-- 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开发系列网络篇之Retrofit

-- iOS --

推荐:RestKit (RestKit/RestKit · GitHub)

教程:

Developing RESTful iOS Apps with RestKit

-- Web --

推荐随便搞!可以用重量级的AngularJS,也可以用轻量级 Backbone + jQuery 等。

教程:http://blog.javachen.com/2015/01/06/build-app-with-spring-boot-and-gradle/

参考:

[1]:Some REST best practices

[2]:GitHub API v3

[3]:tlhunter/consumer-centric-api-design · GitHub

作者:水岩

链接:https://www.jianshu.com/p/9d38b5205344

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容