ServiceStack框架提供三种模式的服务接口实现, REST 、Client 以及和WCF相兼容的SOAP WebService ,这三种模式统称WebService,目前对于移动平台和云服务火爆的情形下,最为普及的是REST模式。git
WebService经常使用链接模式:github
REST | Client | SOAP WebService |
在不一样模式下,可使用不一样的数据(流)格式,最为经常使用的是XML 、JSON , 主要使用在REST模式下,此外还支持JSV, CSV 以及SOAP格式的数据。数据库
XML | JSON | JSV | CSV | SOAP |
在前文中提到启动服务(SS项目),这种服务是一种无界面的,对外仅提供数据服务,经过一套自定义的API访问,在大型网站广为使用,好比微信、微博、淘宝及人人网、各类网盘开发API等。微信
SS中,客户端链接到服务端的方式主要有两种,经过REST方式或者Client方式,初始化客户端是相同的 :框架
1函数 |
|
经过REST方式访问服务:网站
1spa 2翻译 |
|
其中service.后边的Post为HTTP指令,接下来要详细说明,NewsAll()为入口类,NewsResponse为出口类,使用时结构为:
HTTP 指令 | 出口类 | ("路由" | 入口类{ 传入参数 } | ) |
经过Client方式访问服务:
1 2 3 4 5 6 |
|
Client模式的标志是使用Send函数 ,使用结构为:
Send | 出口类 | ( | 入口类{ 传入参数 } | ) |
注意客户端 模式是不使用路由的,它的执行方式很相似软件中使用Socket链接模式,使用比HTTP协议更底层的高速数据通道来传输数据。
通常来讲客户端模式是比REST模式效率要高,但在服务端和客户端同时都使用了SS的状况下,框架会在内部自动将其都转换为客户端模式(能够支持二进制传输、文件上传下载等),因此使用REST模式和 使用客户端模式的差别并不大,具体使用哪一种方式能够根据本身的习惯和喜爱使用。
下面说一下HTTP指令, 又称HTTP verb(HTTP动词),咱们一般访问网站数据的方式有GET和POST,用于指定获取数据和交流的方式,它是被附加在HTTP的request请求上的,包含于HTTP头中(可使用HTTP传输工具查看),使用了REST模式后,可使用全套的HTTP指令,经常使用的有除了GET和POST,还有PUT、DELETE和PATCH、TRACE。
HTTP指令在HTTP头中一般全部字母所有大写。
GET用于获取数据操做,传递的参数一般是附加在URL上,数据大小限制通常为1-16k,能够返回单条或列表数据;
POST用于获取、提交、文件上传等操做,传递的参数或数据一般使用表单提交,能够为文本也能够为二进制数据,二进制方式能够用于文件、图片上传,而且可自定义文件类型,POST提交的返回数据一般是状态信息,好比操做是否成功,操做获得的ID、记录条数等,并且一般会根据返回的状态信息执行跳转或处理异常等操做。在使用POST对REST模式的服务中,经常使用的是将其数据使用Insert语句保存到数据库。
PUT用于更新数据操做,一般在REST模式下,将其数据使用Update语句更新到数据库。
DELETE用于删除操做,在REST模式下,可使用两种方式执行删除,一个方式是传递一个对象到服务,好比一个order订单对象(里边实际有效的仅仅是id字段),另外一种方式传递一个id或一组id,执行数据库的删除操做。
PATCH用于追加模式更新数据。
TRACE回显提交的数据,能够用于调试以及查看服务端数据的变动。
附 : ServiceStack 内置的 客户端实现,从中也能够看出不管REST仍是客户端都是使用一样的类库: 未翻译
implements both IRestClient
and IServiceClient
:
JsonServiceClient (uses default endpoint with JSON) - recommended
JsvServiceClient (uses default endpoint with JSV)
XmlServiceClient (uses default endpoint with XML)
MsgPackServiceClient (uses default endpoint with Message-Pack)
ProtoBufServiceClient (uses default endpoint with Protocol Buffers)
implements IServiceClient
only:
Soap11ServiceClient (uses SOAP 11 endpoint)
Soap12ServiceClient (uses SOAP 12 endpoint)