ServiceStack 用于服务开发,可以为各种形式的网站、软件、APP等提供数据服务,可以提供REST,WebService以及二级制数据形式的服务。
下面根据我们具体项目要求,说一下建立项目的方式:
建立项目
首先需要建立两个项目,一个为ServiceStack的项目,一个是MVC的项目。
1 建立空站点,用于放置SS项目:
选Web项目 ——→ ASP.net Web Application ——→ 空站点。
2 打开包管理器控制台,如果没有显示,可以在“查看-其它窗口”下找到这个窗口,输入命令:
Install-Package ServiceStack -Version 3.9.71
3 在同一解决方案下,添加新的MVC项目 注意在MVC站点取消权限验证
4 在解决方案上,点右键,选择包管理器找到 ServiceStack webservice framework:...... 的项,点管理按钮
选中MVC项目上的对勾,组件包管理器会自动导入SS组件包到项目中。
或者在包管理控制台中,选中MVC项目,再执行一次
Install-Package ServiceStack -Version 3.9.71
配置框架服务
1 在SS项目的web.config 中 添加
<system.webServer>
<validation validateIntegratedModeConfiguration ="false" />
<handlers >
<add path ="*" name= "ServiceStack.Factory" type ="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb ="*" preCondition ="integratedMode" resourceType ="Unspecified" allowPathInfo ="true" />
</handlers >
</system.webServer>
添加完成后的web.config
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration ="false" />
<handlers >
<add path ="*" name= "ServiceStack.Factory" type ="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb ="*" preCondition ="integratedMode" resourceType ="Unspecified" allowPathInfo ="true" />
</handlers >
</system.webServer>
</configuration>
2 在SS项目中添加新项 --- 全局配置文件(Global.asax)
3 在全局配置文件中加入一个服务配置类,位于
public class Global : System.Web.HttpApplication 类中,
和 protected void Application_Start(object sender, EventArgs e) 类同级。
public class WebSiteAppHost : AppHostBase
{
public WebSiteAppHost()
: base("WebSite", typeof(SubmissionService).Assembly)
{ }
public override void Configure(Container container)
{
// 数据库配置 (使用数据处理工厂)
var DbFactory = new OrmLiteConnectionFactory(
"Data Source=.;Initial Catalog=RobotsMaster; Integrated Security=SSPI", SqlServerDialect.Provider);
OrmLiteConfig.DialectProvider = new SqlServerOrmLiteDialectProvider();
//DbFactory.Run(db => db.CreateTable<MasterRecord>(overwrite: false));
container.Register<IDbConnectionFactory>(DbFactory);
container.RegisterAutoWired<DataRepository>();
//Plugins.Add(new CorsFeature());
///等价于:Plugins.Add(new CorsFeature(allowedOrigins: "*", allowedMethods: "GET, POST, PUT, DELETE, OPTIONS",
///allowedHeaders: "Content-Type", allowCredentials: false));
}
}
其中SubmissionService 是自定义的REST服务(API模式),可以改成自己需要的名称
DataRepository是数据服务(数据仓库),名称用默认即可
数据库连接配置修改var DbFactory = new OrmLiteConnectionFactory(
"Data Source=.;Initial Catalog=RobotsMaster; Integrated Security=SSPI", SqlServerDialect.Provider); 中的连接串
OrmLiteConfig.DialectProvider = new SqlServerOrmLiteDialectProvider() 指定数据库类型,SS支持多种数据库
4 在protected void Application_Start(object sender, EventArgs e) 类中加入
new WebSiteAppHost().Init();
5 把SS项目设为启动项,现在就可以启动服务,查看服务说明界面。
——————————————————————————————————————————————————————
主要参考资料 : Getting Started with ASP.NET MVC, ServiceStack and Bootstrap