安裝或設定
你可以通過 3 種方式安裝 ServiceStack:
- 完整的 Visual Studio 模板(自託管)
- 從頭開始執行 ServiceStack Self 託管(Console App)
- 在 Asp.net MVC 中執行 ServiceStack。
完整的視覺工作室模板
你可以在此處找到有關這些的資訊: https : //github.com/ServiceStack/ServiceStackVS 。
- 下載 servicestack Visual studio 外掛: https : //visualstudiogallery.msdn.microsoft.com/5bd40817-0986-444d-a77d-482e43a48da7
- 在 visual studio 中啟動一個新專案,然後選擇其中一個模板。
從頭開始(Selfhosted)
有關完整指南,請訪問: https : //github.com/ServiceStack/ServiceStack/wiki/Self-hosting
建立:
- 製作控制檯應用程式
- 通過 nuget:
Install-Package ServiceStack
安裝 ServiceStack - 設定基本程式碼。ServiceStack 使用
AppHost
將所有東西組合在一起:
//This your main entry point of the application
public class AppHost : AppSelfHostBase {
public AppHost()
: base("HttpListener Self-Host", typeof(HelloService).Assembly) {}
public override void Configure(Funq.Container container) { }
}
//Run it!
static void Main(string[] args)
{
var listeningOn = args.Length == 0 ? "http://*:1337/" : args[0];
var appHost = new AppHost()
.Init()
.Start(listeningOn);
Console.WriteLine("AppHost Created at {0}, listening on {1}",
DateTime.Now, listeningOn);
Console.ReadKey();
}
現在你可以開始開發 api 服務了。
Mvc 整合
有關完整的 Mvc 整合指南: https : //github.com/ServiceStack/ServiceStack/wiki/Mvc-integration
首先下載你的 nuget 包:Install-Package ServiceStack.Mvc
設定 ServiceStack Apphost
public class AppHost : AppHostBase
{
public AppHost() : base("MVC 4", typeof(MyServices).Assembly) {}
public override void Configure(Container container)
{
SetConfig(new HostConfig {
HandlerFactoryPath = "api"
});
ControllerBuilder.Current.SetControllerFactory(
new FunqControllerFactory(container));
}
}
//Bootstrap your appHost through MVC Global.asax:
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
new AppHost().Init();
}
}
現在要執行 ServiceStack 服務,我們可以新增 web.Config 以使 ServicStack 在某個路徑下執行,例如:/api/*
<location path="api">
<system.web>
<httpHandlers>
<add path="*" type="ServiceStack.HttpHandlerFactory, ServiceStack"
verb="*"/>
</httpHandlers>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add path="*" name="ServiceStack.Factory"
type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*"
preCondition="integratedMode"
resourceType="Unspecified" allowPathInfo="true" />
</handlers>
</system.webServer>
</location>