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 ...
随机推荐
- 其他—cooki和session
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
- Netty事件监听和处理(上)
陪产假结束了,今天又开始正常上班了,正好赶上米粉节活动,又要忙上一阵了,米粉节活动时间为4.03 - 4.10,有不少优惠,感兴趣的可以关注mi.com或小米商城app. 今天给大家送了福利:小爱音箱 ...
- gradle入门(1-7)eclipse和gradle集成插件的安装和使用
一.安装gradle插件:buildship 1.安装插件 gradle默认的本地缓存库在c盘user目录下的.gradle文件夹下,安装好gradle后,可以添加环境变量GRADLE_USER_HO ...
- maven常见问题处理(3-4)配置代理服务器
有的公司基于安全因素考虑,要求员工使用通过安全认证的代理访问因特网. 这时就需要为Maven配置HTTP代理. 在目录~/.m2/setting.xml文件中编辑如下(如果没有该文件,则复制$M2_H ...
- Android fragment切换后onresume时报 Attempt to write to field 'int android.support.v4.app.Fragment.mNextAnim'
动态加载fragment以后,调用了remove方法移除Fragment,在返回来的时候报 Attempt to write to field 'int android.support.v4.app. ...
- IDEA里面创建maven项目,依赖
在IDEA里面创建一个简单的Maven项目: 在file-->new-->project ,选择maven,点击next 里面的一些简单参数的定义(第一次使用的话可以使用默认的值进行后面的 ...
- Xshell与虚拟机不能正常连接
1.发现Xshell与虚拟机下的两个CentOS都不能正常连接,在这些系统下采用ifconfig查询发现eth0都没有ip地址,进而想到可能是虚拟机的设置出了问题,后来又想到自己之前曾经尝试过设置VM ...
- 一大波 Android 刘海屏来袭,全网最全适配技巧!
一.序 Hi,大家好,我是承香墨影! Apple 一直在引领设计的潮流,自从 iPhone X 发布之后,"刘海屏" 就一直存在争议.不过不管你怎样,Android 也要跻入 &q ...
- Ubuntu Sublime 配置
p { margin-bottom: 0.25cm; line-height: 120% } a:link { } 2018.4.14 Ubuntu Sublime 配置 承 Ubuntu Apach ...
- bootstrap——bootstrap-table(2)
先看问题现象: 问题描述: 点击"管理子账号"按钮,预期是按照传递的参数更新列表数据,但是最后才发现这个列表根本不会刷新,只会继承前一次的数据,意思也就是不会去请求第二次. 解决方 ...