Primeros pasos con la pila de servicios

Instalación o configuración

Puede instalar ServiceStack de 3 maneras:

  • Plantillas completas de Visual Studio (autohospedadas)
  • Comience desde cero, ejecute ServiceStack Self alojado (aplicación de consola)
  • Ejecute ServiceStack dentro de Asp.net MVC.

Plantillas completas de estudio visual

Puedes encontrar información sobre estos aquí: https://github.com/ServiceStack/ServiceStackVS.

  1. Descargue el complemento Visual Studio de la pila de servicios: https://visualstudiogallery.msdn.microsoft.com/5bd40817-0986-444d-a77d-482e43a48da7
  2. Inicie un nuevo proyecto en Visual Studio y elija una de las plantillas.

Comenzar desde cero (Selfhosted)

Para obtener una guía completa, vaya aquí: https://github.com/ServiceStack/ServiceStack/wiki/Self-hosting

Para configurar:

  1. Hacer una aplicación de Consola

  2. instale ServiceStack a través de nuget: Install-Package ServiceStack

  3. Configure su código base. ServiceStack usa un ‘AppHost’ para juntar todo:

    //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();
    

    }

Ahora puede comenzar a desarrollar sus servicios api.

Integración de MVC

Para una guía completa de integración de Mvc: https://github.com/ServiceStack/ServiceStack/wiki/Mvc-integration

Primero descargue sus paquetes nuget: Install-Package ServiceStack.Mvc

Configure su servidor de aplicaciones ServiceStack

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();
    }
}

Ahora, para ejecutar los servicios de ServiceStack, podemos agregar web.Config para que ServicStack se ejecute en una determinada ruta, por ejemplo: /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>