ServiceStack 项目实例 002 REST服务与客户端模式

ServiceStack框架提供三种模式的服务接口实现, REST  、Client 以及和WCF相兼容的SOAP WebService ,这三种模式统称WebService,目前对于移动平台和云服务火爆的情形下,最为普及的是REST模式。

WebService常用连接模式:

REST Client SOAP WebService

在不同模式下,可以使用不同的数据(流)格式,最为常用的是XML 、JSON , 主要使用在REST模式下,此外还支持JSV, CSV 以及SOAP格式的数据。

XML JSON JSV CSV SOAP

在前文中提到启动服务(SS项目),这种服务是一种无界面的,对外仅提供数据服务,通过一套自定义的API访问,在大型网站广为使用,比如微信、微博、淘宝及人人网、各种网盘开发API等。

SS中,客户端连接到服务端的方式主要有两种,通过REST方式或者Client方式,初始化客户端是相同的 :

var service = new JsvServiceClient("http://localhost:2790/");

通过REST方式访问服务:

var storyResponses = service.Post<List<NewsResponse>>("newslist",
                new NewsAll() { cid=0 });

其中service.后边的Post为HTTP指令,接下来要详细说明,NewsAll()为入口类,NewsResponse为出口类,使用时结构为:

HTTP 指令 出口类 ("路由" 入口类{ 传入参数 }

通过Client方式访问服务:


         

service.Send<SubmissionResponse>(new Submission()
                {
                    Body = news.Text,
                    Headline = news.Headline,
                    SubmissionTime = news.Date
                });

        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还是客户端都是使用同样的类库:  未翻译

时间: 2024-10-10 01:36:13

ServiceStack 项目实例 002 REST服务与客户端模式的相关文章

(转)基于OWIN WebAPI 使用OAuth授权服务【客户端模式(Client Credentials Grant)】

适应范围 采用Client Credentials方式,即应用公钥.密钥方式获取Access Token,适用于任何类型应用,但通过它所获取的Access Token只能用于访问与用户无关的Open API,并且需要开发者提前向开放平台申请,成功对接后方能使用.认证服务器不提供像用户数据这样的重要资源,仅仅是有限的只读资源或者一些开放的 API.例如使用了第三方的静态文件服务,如Google Storage或Amazon S3.这样,你的应用需要通过外部API调用并以应用本身而不是单个用户的身份

基于 IdentityServer3 实现 OAuth 2.0 授权服务【密码模式(Resource Owner Password Credentials)】

密码模式(Resource Owner Password Credentials Grant)中,用户向客户端提供自己的用户名和密码.客户端使用这些信息,向"服务商提供商"索要授权.基于之前的 IdentityServer3 实现 OAuth 2.0 授权服务[客户端模式(Client Credentials Grant)] 修改. 客户端 public class Clients { public static List<Client> Get() { return ne

在OWIN WebAPI中基于OAuth授权【客户端模式(Client Credentials Grant)】

适应范围 采用Client Credentials方式,即应用公钥.密钥方式获取Access Token,适用于任何类型应用,但通过它所获取的Access Token只能用于访问与用户无关的Open API,并且需要开发者提前向开放平台申请,成功对接后方能使用.认证服务器不提供像用户数据这样的重要资源,仅仅是有限的只读资源或者一些开放的 API.例如使用了第三方的静态文件服务,如Google Storage或Amazon S3.这样,你的应用需要通过外部API调用并以应用本身而不是单个用户的身份

责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用

1.业务场景 生产车间中使用的条码扫描,往往一把扫描枪需要扫描不同的条码来处理不同的业务逻辑,比如,扫描投入料工位条码.扫描投入料条码.扫描产出工装条码等,每种类型的条码位数是不一样,因此通过条码长度来进行业务区分. 2.初步设计 面对此场景,能够想到的最简单的设计就是使用if...else if...或者swith进行判断,因此,我们编写的代码如下 1 switch(barCode.length) 2 { 3 case 3: 4 DoSomething1(); 5 break; 6 case

Spring提供的用于访问Rest服务的客户端:RestTemplate实践

什么是RestTemplate? RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率.调用RestTemplate的默认构造函数,RestTemplate对象在底层通过使用java.net包下的实现创建HTTP 请求,可以通过使用ClientHttpRequestFactory指定不同的HTTP请求方式.ClientHttpRequestFactory接口主要提供了两种实现方式

基于微服务的软件架构模式(转载)

转载:原文链接 基于微服务的软件架构模式 [编者的话]微服务只是最近提出的概念,实际上很多巨头公司(FB.Twitter.AWS等)已经在亲身实践.微服务并不是银弹,但是我们可以参考它的 思想来解决自己遇到的问题.对于已经找准市场,业务即将或者马上就要急剧发展的创业公司,适合使用基于微服务的软件架构. 今天阅读了两篇关于微服务的文章,总结一些笔记,简单翻译了一篇文章.说明:并没有严格按照原文一字语句翻译,有部分自己的理解,还有部分是意译. 微服务(micro services)这个概念不是新概念

ServiceStack 项目实例 001 建立项目结构

ServiceStack 用于服务开发,可以为各种形式的网站.软件.APP等提供数据服务,可以提供REST,WebService以及二级制数据形式的服务. 下面根据我们具体项目要求,说一下建立项目的方式: 建立项目 首先需要建立两个项目,一个为ServiceStack的项目,一个是MVC的项目. 1 建立空站点,用于放置SS项目: 选Web项目   --→    ASP.net Web Application  --→  空站点. 2 打开包管理器控制台,如果没有显示,可以在"查看-其它窗口&q

使用 ServiceStack 构建跨平台 Web 服务(转)

出处:http://www.cnblogs.com/shanyou/p/3348347.html 本文主要来自MSDN杂志<Building Cross-Platform Web Services with ServiceStack>,Windows Communication Foundation (WCF) 是一个相当优秀的服务框架,当我们讨论跨平台的服务的时候,虽然WCF对WebService的支持还行,在面对一些高级应用的不太好,微软重新发展了ASP.NET WebAPI框架,关于这两

SSL VPN的胖客户端模式配置操作全过程

拓扑图如下所示:ASA防火墙作为企业内部的一台出口网关兼硬件防火墙设备,内部服务器server 2008服务器提供web服务. 中间是模拟ISP运行商,右边是作为公网上的一台路由器,下面是公网上面的一台普通客户机,这里使用的是XP系统. 首先如果是GNS3模拟器SW1需要关闭路由功能. ISP运营商还是只需要配置IP地址即可(过程略). R3上面作为公网上的一台出口网关路由器,配置DHCP地址分配和NAT地址转换功能.如下所示: R3(config)#int fa0/0 R3(config-if