ServiceStack 简单服务搭建
1:定义数据实体
因为ServiceStack是基于请求参数来定义请求路由的,所以关键的是请求参数一定要定义好,同时可以在请求参数上自定义路由名和请求方式,作为对外接口名
上代码:
namespace ServiceStack_Moudel
{
public class Ticket
{
public int TicketId { get; set; }
public string Name { get; set; }
} [Route("/allticket","Get,Post")]
public class GetAllTicketsInQueueRequest
{
public string name { get; set; }
} [Route("/ticket","Post")]
public class QueueTicketRequest
{
public string name2 { get; set; }
} [Route("/pull","Get")]
public class PullTicketRequest
{
public string name3 { get; set; }
}
}
2:接口实现
接口和实现类,这革不赘述了,其实我觉得简单项目的话,接口层是完全没有必要的,完全是冗余,注意的是要实现你的接口(如果有的话),继承Service(必须要,这是核心),请求和返回参数就用刚才定义的那些就可以,另外 接口名 Any表示什么请求方式都接受,也可以用Get或Post作为方法名,这样只会接受指定的请求方式,请求方式不对会抛异常
public class TicketService : Service, ITicketService
{
public List<Ticket> Any(GetAllTicketsInQueueRequest request)
{
var ticketList = new List<Ticket>();
for (int i = ; i < ; i++)
{
var ticket = new Ticket { Name = i.ToString(), TicketId = i + };
ticketList.Add(ticket);
}
return ticketList;
} public string Any(QueueTicketRequest request)
{
return "query ticket successfully!";
} public Ticket Any(PullTicketRequest request)
{
var ticket = new Ticket { Name = "pull successfully!", TicketId = };
return ticket;
}
}
public interface ITicketService
{
List<Ticket> Any(GetAllTicketsInQueueRequest request); string Any(QueueTicketRequest request); Ticket Any(PullTicketRequest request);
}
3:准备Host 部署
这边分两种场景部署,一是Host在控制台程序,另一种是IHost在IIS
3.1 Host 控制台
Host控制台 继承的是AppSelfHostBase 这个类
class Program
{
static void Main(string[] args)
{
var listeningOn = args.Length == ? "http://*:1337/" : args[];
var appHost = new TicketServiceHost()
.Init()
.Start(listeningOn); Console.WriteLine("AppHost Created at {0}, listening on {1}",
DateTime.Now, listeningOn);
Console.ReadKey(); }
}
Host类
public class TicketServiceHost : AppSelfHostBase
{
/// <summary>
/// Default constructor.
/// Base constructor requires a name and assembly to locate web service classes.
/// </summary>
public TicketServiceHost()
: base("Ticket Service", typeof(TicketService).Assembly)
{ } /// <summary>
/// Application specific configuration
/// This method should initialize any IoC resources utilized by your web service classes.
/// </summary>
/// <param name="container"></param>
public override void Configure(Container container)
{ }
}
运行控制台程序,然后打开localhost:1337就会看到下图,表明Host成功,服务可以使用了。
3.2 Host在IIS
Host在IIs 继承的是AppHostBase类
public class TicketServiceHost : AppHostBase
{
//Register your web service with ServiceStack.
public TicketServiceHost()
: base("Ticket Service", typeof(TicketService).Assembly)
{ } public override void Configure(Funq.Container container)
{
//Register any dependencies your services use here.
}
}
在Global.asax中 初始化服务
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
new TicketServiceHost().Init();
}
}
结束后编译下,把这个Web项目部署在IIS上,直接启动就可以看到如下图,说明成功了
4:测试
调用地址就使用他推荐的方式就可以,或者使用我们自定义的别名也行,可以指定返回的数据格式,有以下几种方式,感兴趣的可以把json换成xml试试看
1: http://localhost:8083/json/reply/GetAllTicketsInQueueRequest?name=123456
2: http://localhost:8083/allticket.json?name=12345678
3: http://localhost:8083/allticket?name=123456&format=json
简单的总结了一下,也希望对大家有帮助
对了 差点忘了,一个非常重要的点,就是Host在IIS的话,webconfig一定要增加ServiceStack节点,我就是因为没有增加节点,导致一直Host不成功
<system.webServer>
<handlers>
<add path="*" name="ServiceStack.Factory" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true"/>
</handlers>
</system.webServer>
增加这个节点就大功告成了!
5:附带项目结构
ServiceStack 简单服务搭建的更多相关文章
- ServiceStack.Hello——跨平台.net REST api服务搭建
ServiceStack.Hello--跨平台.net REST api服务搭建 自己创建: https://github.com/ServiceStack/ServiceStack/wiki/Cre ...
- Dubbo学习之简单环境搭建
Dubbo服务的发展和作用: 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后的常规方案演进历程. 其次,当服务越来越多之后,我们需要做哪些服务治理? 最后,是d ...
- Wcf Restful Service服务搭建
目的 使用Wcf(C#)搭建一个Restful Service 背景 最近接到一个项目,客户要求使用Restful 方式接收到数据,并对数据提供对数据的统计显示功能,简单是简单,但必须要使用Restf ...
- NTP服务搭建
1:实验环境 前提条件:虚拟机环境,windows 客户端,关闭防火墙:linux 服务器关闭防火墙,关闭selinux. Cent OS :NTP服务器 IP: 192.168.80.134 /2 ...
- WCFRESTFul服务搭建及实现增删改查
WCFRESTFul服务搭建及实现增删改查 RESTful Wcf是一种基于Http协议的服务架构风格, RESTful 的服务通常是架构层面上的考虑. 因为它天生就具有很好的跨平台跨语言的集成能力 ...
- 微信小程序语音识别服务搭建全过程解析(项目开源在github)
silk v3录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) ## 重要的写在前面 重要事项一: 目前本文中提到的API已支持微信小程序录音文件格式:silk v ...
- 微信小程序语音识别服务搭建全过程解析(https api开放,支持新接口mp3录音、老接口silk录音)
silk v3(或新录音接口mp3)录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) 重要的写在前面 重要事项一: 所有相关更新,我优先更新到我个人博客中,其它地方 ...
- NodeJs之服务搭建与数据库连接
NodeJs之服务搭建与数据库连接 一,介绍与需求分析 1.1,介绍 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻 ...
- 前端使用node.js+express+mockjs+mysql实现简单服务端,2种方式模拟数据返回
今天,我教大家来搭建一个简单服务端 参考文章: https://www.jianshu.com/p/cb89d9ac635e https://www.cnblogs.com/jj-notes/p/66 ...
随机推荐
- javascript学习(4)异常处理 try-catch 和 onerror
一.try-catch 1.样例1 1.1.源代码 1.2.执行后 2.样例2 2.1.源代码 2.2.执行后 二.onerror 1.源代码 2.执行后
- 京东2019春招Java工程师编程题题解
生成回文串 题目描述 对于一个字符串,从前开始读和从后开始读是一样的,我们就称这个字符串是回文串. 例如"ABCBA","AA","A"是回 ...
- 记录项目中用的laypage分页代码
最终才觉得,好记性不如烂笔头,毕竟已经不是刚毕业时候的巅峰了,精力有所下降,很多时候记不住东西. 参考url:http://www.layui.com/laypage/ 直接上代码了 <scri ...
- flash上传文件,如何解决跨域问题
今天同事遇到一个问题,我们有两个应用,一个后台应用,主要用于运营人员编辑文章,发布到官网:一个图片服务器应用,其他很多的应用上传的图片也会存放在这,还对外提供一些查询和管理api. 前者部署在back ...
- python3全栈开发-面向对象、面向过程
一. 什么是面向对象的程序设计及为什么要有它 1.面向过程 面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种 ...
- requests.post发送字典套字典
import requests import json a = { "data": { "project": { "url": " ...
- Java基础语法<十> Jar文件
1 JAR文件 java归档文件,压缩的 jdk/bin jar工具制作jar文件 jar程序选项 1.1清单文件 ...
- jacascript DOM节点——元素节点、属性节点、文本节点
前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! DOM节点的三个种类:元素节点.文本节点.属性节点: 元素节点 元素节点就是 HTML 标签元素,元素节点 ...
- bcrypt对密码加密的一些认识(学习笔记)
学习nodejs和mongoDB的时候,接触了用户注册和登录的一些知识. 1.关于增强用户密码的安全性 用户的密码肯定不能保存为明文,避免撞库攻击. 撞库攻击:撞库是一种针对数据库的攻击方式,方法是通 ...
- MySQL-分组查询(GROUP BY)及二次筛选(HAVING)
为了测试GROUP BY 语句,我们创建两张表,并往表中添加数据 -- 创建部门表 CREATE TABLE IF NOT EXISTS department( id TINYINT UNSIGNED ...