文档章节

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

丁川
 丁川
发布于 2016/10/02 11:44
字数 1127
阅读 22
收藏 1
点赞 0
评论 0

       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方式,初始化客户端是相同的 :

       

1

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

 

通过REST方式访问服务:

 

       

1

2

var storyResponses = service.Post<List<NewsResponse>>("newslist",

                new NewsAll() { cid=0 });

 

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

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

 

通过Client方式访问服务:

 

         

1

2

3

4

5

6

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

    

本文转载自:http://soaop.blog.51cto.com/6164600/1585803

共有 人打赏支持
丁川
粉丝 4
博文 52
码字总数 4829
作品 0
南宁
程序员
Redis 安装及配置 (转整理)

Redis 安装及配置 (转整理) Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合...

rootliu ⋅ 05/28 ⋅ 0

ServiceStack 项目实例 000 简介

ServiceStack 是一个功能齐全的服务开发套件,接近Java下的SSH的结构和思路,整体类似轻量级的SSH,主要是用于REST模式的接口服务的开发,后文中简称SS。 和SS功能相似的框架有WCF、WebAPI,...

鼎六智能 ⋅ 2016/10/02 ⋅ 0

redis windows 安装

笔记 redis下载地址:https://github.com/ServiceStack/redis-windows Ⅰ.git clone完成, 进入downloads文件夹,找一份你喜欢的版本,解压. 如果有文件洁癖的同学可以解压到自定义文件夹中去....

___大侠 ⋅ 05/22 ⋅ 0

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

ServiceStack 用于服务开发,可以为各种形式的网站、软件、APP等提供数据服务,可以提供REST,WebService以及二级制数据形式的服务。 下面根据我们具体项目要求,说一下建立项目的方式: 建立...

鼎六智能 ⋅ 2016/10/02 ⋅ 0

ServiceStack 项目实例 007 ServiceStack.Examples - 1

ServiceStack的官网提供了不少的项目案例下载,不过有的示例不能拿来即用,而且案例中还有用的是用VS2010开发的,SS的版本也比较旧,要调整一下才可以运行。 官方示例项目下载地址 https://...

鼎六智能 ⋅ 2016/10/02 ⋅ 0

ServiceStack 项目实例 006 通过官方示例总结的项目结构方案

研读了官方示例的ServiceStack.Examples 和 ServiceStack.Northwind,总结如下的项目方案结构,这种方式比较适合较大的项目,并且规范化很好,易于扩展和对接。 项目结构规范要求 根据Servi...

鼎六智能 ⋅ 2016/10/02 ⋅ 0

C#客户端Redis服务器的分布式缓存

介绍 在这篇文章中,我想介绍我知道的一种最紧凑的安装和配置Redis服务器的方式。另外,我想简短地概述一下在.NET / C#客户端下Redis hash(哈希类型)和list(链表)的使用。 在这篇文章主要...

鱼煎 ⋅ 2016/07/14 ⋅ 0

综合应用WPF/WCF/WF/LINQ之三十四:在XBAP项目中模拟弹出一个自定义的“模态窗口”

在实际应用中,我们有时候的确需要弹出一个自定义的模态窗口。为此,我们可以采用Popup控件的方法来接近这个需求,当然,这里的“模态窗口”并不是真的窗口。   为了方便大家学习,请单击此...

余二五 ⋅ 2017/11/14 ⋅ 0

Redis总结(二)C#中如何使用redis

  上一篇讲述了安装redis《Redis总结(一)Redis安装》,同时也大致介绍了redis的优势和应用场景。本篇着重讲解.NET中如何使用redis和C#。   Redis官网提供了很多开源的C#客户端。例如,...

章为忠 ⋅ 2015/11/17 ⋅ 0

使用ServiceStackRedis链接Redis简介

注:关于如何在windows,linux下配置redis,详见这篇文章:) 目前网上有一些链接Redis的C#客户端工具,这里介绍其中也是目前我们企业版产品中所使用的ServiceStackRedis, 链接地址: https://...

长平狐 ⋅ 2012/11/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java NIO之字符集

1 字符集和编解码的概念 首先,解释一下什么是字符集。顾名思义,就是字符的集合。它的初衷是把现实世界的符号映射为计算机可以理解的字节。比如我创造一个字符集,叫做sex字符集,就包含两个...

士别三日 ⋅ 28分钟前 ⋅ 0

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 34分钟前 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 36分钟前 ⋅ 0

Webpack 4 api 了解与使用

webpack 最近升级到了 v4.5+版 01 官方不再支持 node4 以下版本 官方不再支持 node4 以下版本官方不再支持 node4 以下的版本,所以如果你的node版本太低,先开始升级node吧!话说node10 ...

NDweb ⋅ 46分钟前 ⋅ 0

使用nodeJs安装Vue-cli

Vue脚手架就是一个Vue框架开发环境 脚手架的意思是帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装,让我们不需要为了编辑或者一些其...

木筏笔歆 ⋅ 今天 ⋅ 0

【微信小程序开发实战】0x00.开发前准备工作

写在开始 本人资深后端码农一枚,近期项目需求,接触到了微信小程序,将学习过程整理成文分享给小伙伴们,由于是边学边整理难免有表述不对的地方,望大家及时指正,感谢。 本人微信号: dream...

dreamans ⋅ 今天 ⋅ 0

linux redis的安装和php7下安装redis扩展

安装redis服务器 (1)下载安装包: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz (2)编译程序: $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make $ cd src &&......

concat ⋅ 今天 ⋅ 0

Guava EventBus源码解析

一、EventBus使用场景示例 Guava EventBus是事件发布/订阅框架,采用观察者模式,通过解耦发布者和订阅者简化事件(消息)的传递。这有点像简化版的MQ,除去了Broker,由EventBus托管了订阅&...

SaintTinyBoy ⋅ 今天 ⋅ 0

http怎么做自动跳转https

Apache 版本 如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容: RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME......

Helios51 ⋅ 今天 ⋅ 0

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部