我开发了一个WCF应用程序,它作为数据库和我的Web应用程序之间的中间层。现在我的客户希望使用ServiceStack将此WCF转移到REST。
我在GitHub上环顾四周,并尝试构建一个演示。我使用NuGet创建了一个启动模板,因此它包含一个Hello& Todo的例子。
答案 0 :(得分:6)
如果您还没有这样做,请完成Creating REST Services with ServiceStack演示文稿。
1)如果您已经看过ServiceStack的Hello World示例,它会向您显示创建Web服务所需的唯一步骤就是提供:
//1. A Request DTO
public class Hello : IReturn<HelloResponse> {
public string Name { get; set; }
}
//2. A Response DTO
public class HelloResponse {
public string Result { get; set; }
}
//3. The web service implementation that takes a Request DTO and returns a Response DTO
public class HelloService : Service
{
public object Any(Hello request)
{
return new HelloResponse { Result = "Hello, " + request.Name };
}
}
上面的示例显示了创建 Hello Web服务所需的所有代码。 您应该能够从WCF方法中重复使用大量现有类型和逻辑,并将其复制到 Any()方法中。
2)ServiceStack的一个好处是您不需要添加ServiceReference,即您可以为所有Web服务重复使用相同的通用服务客户端和DTO。 e.g:
//Using JSON:
IServiceClient client = new JsonServiceClient("http://localhost/path/to/servicestack");
//Using XML:
IServiceClient client = new XmlServiceClient("http://localhost/path/to/servicestack");
var response = client.Send(new Hello { Name = "Arun" });
Console.WriteLine("Received: " + response.Result);
在 / metadata 页面上,还有一个指向您的webservices WSDL 的链接,您可以根据需要创建生成的服务客户端。然而,这不是推荐的方法,因为它只需要使用现有的DTO就需要更多的摩擦力。
3)ServiceStack Web服务已经是一个ASP.NET应用程序,即ServiceStack只是一组IHttpHandler,您可以通过向网络添加a Web.config mapping来配置在普通的ASP.NET或MVC Web应用程序内运行应用程序Web.config。
基本上,您可以将ServiceStack Web服务视为普通的ASP.NET Web应用程序,实际上Hello World Tutorial向您展示了如何通过创建空的ASP.NET应用程序来实现此目的。
您可能还有兴趣查看The Starter Templates示例项目,这些项目向您展示了配置ServiceStack以在各种不同的托管选项中运行所需的最低设置,即ASP.NET / Windows服务/控制台应用程序等等。