Thursday, April 19, 2012

ServiceStack Walkthrough. Screenshots guide

Create an ASP.NET MVC Project:

Add ServiceStack components (ServiceStack.dll, ServiceStack.Interfaces.dll):

Get the DLLs at:

Add this line to Web.config's httpHandlers section:

<add path="yourServicestack*"
 type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />

Put this inside configuration section:

<location path="servicestack">
      <add path="*" 
        type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" 
        verb="*" />

Add these lines on RegisterRoutes:
routes.IgnoreRoute ("yourServicestack");
routes.IgnoreRoute ("yourServicestack/{*pathInfo}");

Add these Request,Response,Service classes in your Models directory:

class Hello  
 public string Name { get; set; }

class HelloResponse
 public string Result { get; set; }   

class HelloService : ServiceStack.ServiceHost.IService<Hello>
 public object Execute(Hello request) 
  return  new HelloResponse { Result = "Good morning " + request.Name + "!" };

And add these other Request,Response,Service classes in Models directory too:

class Subtraction 
 public decimal Minuend { get; set; }  
 public decimal Subtrahend { get; set; }  

class SubtractionResponse 
 public decimal Difference { get; set; }

class SubtractionService : ServiceStack.ServiceHost.IService<Subtraction>
 public object Execute(Subtraction request) 
  return  new SubtractionResponse { Difference = request.Minuend - request.Subtrahend };

Add these code in Global.asax.cs:

protected void Application_Start ()
 RegisterRoutes (RouteTable.Routes);
 new NextBillionAppHost().Init();

public class NextBillionAppHost : ServiceStack.WebHost.Endpoints.AppHostBase
 //Tell Service Stack the name of your application and where to find your web services
 public NextBillionAppHost() 
    : base("Billionaire Web Services", 
          typeof(DemoServiceStack.Models.SubtractionService).Assembly) { }

 public override void Configure(Funq.Container container)
  //register user-defined REST-ful urls

Then run (shortcut key: command+option+enter), then type in address bar:

,then you shall see this:

Then under Operations, click the JSON tag of Subtraction operation, you shall see this:

Then type this url in the address bar:

You shall see this:

Then try to click the JSON, XML, etc, see the output.

You can use ServiceStack instead of WCF. REST-ful services is easier with ServiceStack. ServiceStack has a good programming model, i.e. the Request, Response and their Service has good cohesion

No comments:

Post a Comment