什么是WebService
WebService是一种跨编程语言和跨操作系统平台的远程调用技术。
一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过 Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。从深层次 看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操作性,你可以用任何 你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。
WebService主要有两种:参考
一、基于soap协议的服务
本质上看:
SOAP协议 = HTTP协议 + XML数据格式
SOAP协议定义了SOAP消息的格式,SOAP协议是基于HTTP协议的,SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。
打个比 喻:
HTTP就是普通公路,XML就是中间的绿色隔离带和两边的防护栏,SOAP就是普通公路经过加隔离带和防护栏改造过的高速公路。
行驶在高速公路的车, 能够更快速和安全地达到目的地, 但是要遵守高速上繁多的行为规范, 所以SOAP协议属于复杂的、重量级的协议, 灵活性不高。
soap webService拥有三要素:
1、soap
用来描述传递信息的格式
SOAP即简单对象访问协议(Simple ObjectAccess Protocol),它是用于交换XML(标准通用标记语言下的一个子集)编码信息的轻量级协议。
2、WSDL
用来描述如何访问具体的接口
Web Service描述语言WSDL 就是用机器能阅读的方式提供的一个正式描述文档而基于XML(标准通用标记语言下的一个子集)的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
3、uddi
用来管理,分发,查询webService
UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
数据规范及安全性:
XML+XSD:
XML解决了数据表示的问题,但它没有定义一套标准的数据类型,更没有说怎么去扩展这套数据类型。例如,整形数到底代表什么?16位,32位,64位?这 些细节对实现互操作性很重要。XML Schema(XSD)就是专门解决这个问题的一套标准。它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。WebService平台就 是用XSD来作为其数据类型系统的。当你用某种语言(如VB.NET或C#)来构造一个Web service时,为了符合WebService标准,所 有你使用的数据类型都必须被转换为XSD类型。你用的工具可能已经自动帮你完成了这个转换,但你很可能会根据你的需要修改一下转换过程。
XML加密:
请参考我另一篇文章
二、基于restfull机构设计的类型的服务
REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性。
REST提出设计概念和准则为:
1.网络上的所有事物都可以被抽象为资源(resource)
2.每一个资源都有唯一的资源标识(resource identifier),对资源的操作不会改变这些标识
3.所有的操作都是无状态的
RESTful架构优点:
1、前后端分离,减少流量
2、安全问题集中在接口上,由于接受json格式,防止了注入型等安全问题
3、前端无关化,后端只负责数据处理,前端表现方式可以是任何前端语言(android,ios,html5)
4、前端和后端人员更加专注于各自开发,只需接口文档便可完成前后端交互,无需过多相互了解
5、服务器性能优化:由于前端是静态页面,通过nginx便可获取,服务器主要压力放在了接口上
RESTful API规范
1、在接口命名时应该用名词,不应该用动词,因为通过接口操作到是资源。
2、对于资源的操作类型应该是通过http动词表示。
GET /zoos:列出所有动物园
POST /zoos:新建一个动物园
GET /zoos/ID:获取某个指定动物园的信息
PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)
DELETE /zoos/ID:删除某个动物园
3、HTTP Method分别对于资源的CURD操作
例如:
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。
3、Get方法和查询参数不应该涉及状态改变
4、json数据类型,传输的数据类型不能超过六种数据类型
5、API的身份认证应该使用OAuth 2.0框架
6、过滤信息(Filtering)or进行分页
如果记录数量很多,服务器不可能都将它们返回给用户。API应提供参数,过滤返回,或者提供分页参数进行分页。
解读:
RESTful 风格的 webservice 越来越流行了, sun 也推出了 RESTful WebService 的官方规范JAX-RS ,全称:Java API for RESTful WebService。该规范定义了一系列的注解
但通常我们经常说的WebService就是soap webService,所以很多文章在没restfull api没流行的时候直接用soap 代表webService。
选择SOAP Webservice和Restful Webservice的使用,首先需要理解就是SOAP偏向于面向活动,有严格的规范和标准,包括安全,事务等各个方面的内容,同时SOAP强调操作方法和操作对象的分离,有WSDL文件规范和XSD文件分别对其定义。而REST强调面向资源,只要我们要操作的对象可以抽象为资源即可以使用REST架构风格。