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 ...
随机推荐
- copy代码(含static对象)留下的致命错误
本来以为这个bug快改不好了,然而发现了问题所在 copy代码没有完全改掉对象名称,导致对象重复创建了,由于是static所以debug过程中 注释了addProperty(gridRowDetail ...
- shiro的sessionManager类继承结构及主要类方法
shiro1.3.2 sessionManage的作用是对会话进行管理. 1.类结构 2.主要接口介绍 SessionManager: 包括两个方法,一个是新建会话,一个是通过key获取会话 Vali ...
- [转][scrapy] CannotListenError: Couldn’t listen on [Errno 98] Address already in use.
[scrapy] CannotListenError: Couldn't listen on [Errno 98] Address already in use. python eason 1年前 ...
- linux搭建node环境超详细教程
linux 环境搭建详细步骤 1.访问官方网址:https://nodejs.org/en/download/ 2.选择和你服务器版本相关的压缩包,复制下载链接 3.服务器登录ssh,(这里我用的服务 ...
- Oracle表空间的管理方式
解释说明:表空间是一个逻辑概念:=> oracle 逻辑概念段区块管理方式: number one => tablespace number two=> segments Oracl ...
- Resource 的 IsSealed 问题
WFP 的 Generic.xaml ,App.xaml 等中的资源会被调用 Freezable. 在后台对该资源进行修改等操作会被提示.资源为密封对象. 如果,确定需要在后台对资源进行修改. 则需要 ...
- win7下ubuntu14.4双系统安装
参考https://jingyan.baidu.com/article/f71d60379824041ab641d19d.html
- [Codeforces 946G]Almost Increasing Array
Description 题库链接 给你一个长度为 \(n\) 的序列 \(A\) .现在准许你删除任意一个数,删除之后需要修改最小的次数使序列单调递增.问最小次数. \(1\leq n\leq 200 ...
- [ZJOI 2014]力
Description 给出n个数qi,给出Fj的定义如下: $$F_j = \sum_{i<j}\frac{q_i q_j}{(i-j)^2 }-\sum_{i>j}\frac{q_i ...
- [Luogu 3835]【模板】可持久化平衡树
Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作(对于各个以往的历史版本): 插入x数 删除x数(若有多个相同的数,因只删除一个,如果没有请忽略该操作 ...