如何快速搭建一个基于ServiceStack框架的web服务
ServiceStack是一个高性能的.NET Web Service 平台,能够简化开发高性能的REST (支持JSON,XML,JSV,HTML,MsgPack,ProtoBuf,CSV等消息格式)以及WCF SOAP风格的WebService。在内部实现上ServiceStack建立在原生的ASP.NET IHttpHandler之上,允许在.NET Framework和Mono之上。
本文针对ServiceStack框架在.NET程序中的使用做简单介绍。
1.新建.net 4.5的web 空项目,然后用nuget命令来安装ServiceStack
Install-Package ServiceStack -Version 5.0.
或者直接安装最新版本:
Install-Package ServiceStack
(.net版本必须大于等于4.5版本,4.0项目会安装不成功)
2.在工程中新建model和service文件夹
创建请求和响应实体
namespace UserService.ServiceModel
{
#region 请求实体
[Route("/GetByNameUserInfo","Get,Post")]
/// <summary>
/// 通过姓名获取资料
/// </summary>
public class GetUserInfoByNameRequest : IReturn<UserInfo>
{
public string Name { get; set; }
}
#endregion
//定义实体类
public class UserInfo
{
public string Name { get; set; }
public int Age { get; set; }
public string Phone { get; set; }
}
}
(因为ServiceStack是基于请求参数来定义请求路由的,所以关键的是请求参数一定要定义好,同时可以在请求参数上自定义路由名和请求方式,作为对外接口名。)
3.在service文件夹创建服务接口
namespace UserService.ServiceInterface
{
/// <summary>
/// 接口
/// </summary>
public interface IUserInfoService
{
UserInfo Post(GetUserInfoByNameRequest request);
} /// <summary>
/// 实现接口
/// </summary>
public class UserInfoService : ServiceStack.Service,IUserInfoService
{
static UserInfoService()
{
//构造方法,可以用来实现数据库连接操作
}
//实现服务接口
public UserInfo Post(GetUserInfoByNameRequest request)
{
UserInfo userInfo = new UserInfo();
return userInfo;
}
}
}
4:新建全局应用程序类命名 Global.asax 到本项目(初始化服务)
public class Global : System.Web.HttpApplication
{
public class MyAppHost : ServiceStack.AppHostBase
{
// 基础构造函数需要一个名称和程序集,其中包含Web服务实现(自己定义的服务接口)
public MyAppHost()
: base("UserService.ServiceInterface", typeof(ServiceInterface.UserInfoService).Assembly)
{}
public override void Configure(Funq.Container container)
{
// 此方法应初始化Web服务类使用的任何IoC资源。
}
}
protected void Application_Start(object sender, EventArgs e)
{
new AppHost().Init();
}
}
或者单独创建AppHost.cs和Global.asax,内容分别为:
public class AppHost : AppHostBase
{
/// <summary>
/// 基础构造函数需要一个名称和程序集,其中包含Web服务实现(自己定义的服务接口)
/// </summary>
public AppHost()
: base("UserService.ServiceInterface", typeof(ServiceInterface.UserInfoService).Assembly)
{}
/// <summary>
/// Application specific configuration
/// 此方法应初始化Web服务类使用的任何IoC资源。
/// </summary>
public override void Configure(Container container)
{
}
}
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
new AppHost().Init();
}
}
5:修改web.config配置,新增system.webServer节点
<configuration>
<!--必须添加下面配置-->
<!--Required for IIS 7 (and above) -->
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add path="*.aspx" name="DefaultHttpApplication" type="System.Web.UI.PageHandlerFactory" verb="*" />
<add path="*" name="ServiceStack.Factory" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
</handlers>
</system.webServer>
</configuration>
6.结果展示
直接在Visual Studio中点击调试,或者将站点发布在IIS中,运行后可以看到如下界面,至此一个简单的基于ServiceStack框架的web服务就创建完成了:
7.其他说明
ServiceStack中的服务方法名为Any,Get以及Post,这也是ServiceStack支持的请求类型,Any表示服务可以通过HTTP Get和HTTP Post两种方式调用。这强化和简化了RESTFull风格的WebService的实现。只需要在这些方法上添加[Route(…)]属性即可。
在get请求参数后面加上format参数可以返回响应的类型,例如:format=json、format=xml等。
免费的ServiceStack服务最多包含10个接口,并且每小时的访问次数被限制在6000此以内。(当前版本为5.4.0)
ServiceStack调用服务接口的示例:
http://127.0.0.1:8033/json/reply/GetUserInfoByNameRequest
8.开发遇到的问题
ServiceStack搭建过程中的问题:在HTML页面中不能获得返回值,此时需要设置请求头。可以直接在web.config中设置,或者部署站点时在IIS中设置三个请求头。
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="POST, GET, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
原文地址:https://www.cnblogs.com/imdeveloper/p/10126874.html
转载请注明出处,谢谢!
如何快速搭建一个基于ServiceStack框架的web服务的更多相关文章
- 快速搭建一个基于react的项目
最近在学习react,快速搭建一个基于react的项目 1.创建一个放项目文件夹,用编辑器打开 2.打开集成终端输入命令: npm install -g create-react-app 3. cre ...
- 【MVVMLight小记】一.快速搭建一个基于MVVMLight的silverlight小程序
写了篇MVVM小记http://www.cnblogs.com/whosedream/p/mvvmnote1.html,说好要写点MVVMLight的东西,所以接着写,以便和大家共勉. 我假设你已经有 ...
- jquery+flask+keras+nsfw快速搭建一个简易鉴黄工具
1. demo 地址:http://www.huchengchun.com:8127/porn_classification 接口说明: 1. http://www.huchengchun.com:8 ...
- [原创] zabbix学习之旅五:如何快速搭建一个报警系统
通过之前的文章,我们已搭建好zabbix server.agent和mail客户端,现在万事俱备,只差在server的界面中进行相应配置,即可快速搭建一个报警系统.总的来说,快速搭建一个报警系统的顺序 ...
- 快速搭建一个Quartz定时任务【转载,好文 ,值得收藏,亲身试用 效果不错】
Quartz.NET 入门 概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔 ...
- 【Head First Servlets and JSP】笔记6:什么是响应首部 & 快速搭建一个简单的测试环境
搭建简单的测试环境 什么是响应首部 最简单的响应首部——Content-Type 设置响应首部 请求重定向与响应首部 在浏览器中查看Response Headers 1.先快速搭建一个简单的测试环境, ...
- 如何快速搭建一个 Node.JS 项目并进入开发?
了解:如何快速搭建一个项目并进入开发? 在此不概述 Node.JS 的历史以及发展过程. 因为之前接触过通过 Java 开发语言,所以明确地知道一个服务器所需的文件,以及一个服务器所需要的操作. 那么 ...
- NodeJS 最快速搭建一个HttpServer
最快速搭建一个HttpServer 在目录里放一个index.html cd D:\Web\InternalWeb start http-server -i -p 8081
- vuejsLearn---通过手脚架快速搭建一个vuejs项目
开始快速搭建一个项目 通过Webpack + vue-loader 手脚架 https://github.com/vuejs-templates/webpack 按照它的步骤一步一步来 $ npm i ...
随机推荐
- Git:四、连接GitHub远程仓库
1.拥有一个GitHub网站的账号 2.创建SSH Key 打开终端(Windows打开Git Bash),输入: ssh-keygen -t rsa -C "youremail@??.co ...
- JetBrains 系列编译器 破解(idea,webstrom ,pycharm等)
第一步: 下载安装好Idea 或者Pychar ,安装好后不可运行 第二步: 安装完成之后不要立即运行,以下提供JetbrainsCrack的jar包来破解: jar包资源自行百度 下载之后,把Jet ...
- Windows 安装 Scoop
Scoop介绍 scoop是Windows下的包管理工具 安装环境要求 1,操作环境:win10 2,确保你的 PowerShell 版本 >= 3. win7或许低于3,得升级.如何确认Pow ...
- Windows Server 2016-三种方法备份还原DHCP服务器
方法一:图形化备份还原DHCP: 备份操作: 1.DHCP控制台,属性选择"备份"选项: 2.指定备份路径,默认是C:\Windows\System32\dhcp\ 3.备份完成后 ...
- 巧妙地使用typora编辑有道云笔记
设置方法 找到有道云笔记本地保存路径: 找到有道云笔记的保存的路径:启动有道云 - 设置 - 有道云笔记(本地文件) - 打开文件夹 使用typora打开有道云笔记目录: typora 菜单栏 - O ...
- Web地图呈现原理
地图投影 对于接触互联网地图的同学来说,最开始接触的恐怕就是坐标转换的过程了.由于地球是个近似椭球的形状,有各种各样的椭球模型来模拟地球,最著名的也就是GPS系统使用的WGS84椭球了.但是这些椭球体 ...
- scala获取某个时间间隔的时间
原始 dataFrame : //获取前7天的时间long类型 def getDaytimeTime(day:Int): Long = { val cal = Calendar.getInstance ...
- 【朝花夕拾】四大组件之(二)Service篇
一.Service是什么 对于这个问题,想必大家都能说出一二,如“它是四大组件之一”.“在后台处理一些操作”等.咱们这里看看官方文档中的描述,官方语言一般都是准确且言简意赅的,这里可以体验一下其风格. ...
- Bumblebee微服务网关的部署和扩展
Bumblebee是.netcore下开源基于BeetleX.FastHttpApi扩展的HTTP微服务网关组件,它的主要作用是针对WebAPI集群服务作一个集中的转发和管理:作为应用网关它提供了应用 ...
- git push提交报错,提示文件过大,且去掉大文件也报同样的错误
错误原因: 大文件存在没有被提交的commit记录里面: 解决方案: 删除有大文件的commit记录即可 移除大文件的正确姿势 $ git rm --cached giant_file(文件名) # ...