servicestack开始使用servicestack


备注

本节概述了servicestack是什么,以及开发人员可能想要使用它的原因。

它还应该提到servicestack中的任何大型主题,并链接到相关主题。由于servicestack的文档是新的,您可能需要创建这些相关主题的初始版本。

安装或设置

您可以通过3种方式安装ServiceStack:

  • 完整的Visual Studio模板(自托管)
  • 从头开始运行ServiceStack Self托管(Console App)
  • 在Asp.net MVC中运行ServiceStack。

完整的视觉工作室模板

您可以在此处找到有关这些的信息: https//github.com/ServiceStack/ServiceStackVS

  1. 下载servicestack Visual studio插件: https//visualstudiogallery.msdn.microsoft.com/5bd40817-0986-444d-a77d-482e43a48da7
  2. 在visual studio中启动一个新项目,然后选择其中一个模板。

从头开始(Selfhosted)

有关完整指南,请访问: https//github.com/ServiceStack/ServiceStack/wiki/Self-hosting

建立:

  1. 制作控制台应用程序
  2. 通过nuget安装ServiceStack: Install-Package ServiceStack
  3. 设置基本代码。 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>