将服务从WCF转换为ServiceStack Framework

Aru*_*ana 3 wcf servicestack

我开发了一个WCF应用程序,它作为数据库和我的Web应用程序之间的中间层.现在我的客户端希望使用ServiceStack 将此WCF转移到基于REST的.

我在GitHub上环顾四周,并尝试构建一个演示.我使用NuGet创建了一个启动模板,因此它包含一个Hello&Todo示例.

  1. 如何将我的逻辑转换为基于对象(DTO)?因为我拥有大多数具有不同参数的函数并将结果作为数据集返回.

  2. 如何在C#中创建客户端?我需要添加哪些参考?

  3. 当我使用NuGet添加启动模板后在IIS上托管示例应用程序时,我无法找到任何资源.当我需要在IIS上托管它时,是否需要执行特定设置?

myt*_*thz 6

如果您还没有这样做,请通过ServiceStack演示文稿创建REST服务.

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 };
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的示例显示了创建Hello Web服务所需的所有代码.您应该能够从WCF方法重用大量现有类型和逻辑,并将其复制到Any()方法中.

2)ServiceStack的一个好处是您不需要添加ServiceReference,即您可以为所有Web服务重复使用相同的通用服务客户端和DTO.例如:

//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); 
Run Code Online (Sandbox Code Playgroud)

/ metadata页面上还有一个指向webservices WSDL的链接,您可以根据需要创建生成的服务客户端.然而,这不是推荐的方法,因为它只需要使用现有的DTO就需要更多的摩擦力.

3)ServiceStack Web服务已经是一个ASP.NET应用程序,即ServiceStack只是一组IHttpHandler,您可以通过向Web应用程序Web 添加Web.config映射来配置为在普通的ASP.NET或MVC Web应用程序内运行.配置.

基本上,您可以将ServiceStack Web服务视为普通的ASP.NET Web应用程序,实际上Hello World教程向您展示了如何通过创建空的ASP.NET应用程序来实现此目的.

您可能还有兴趣查看The Starter Templates示例项目,这些项目向您展示了配置ServiceStack以在各种不同的托管选项(即ASP.NET/Windows服务/控制台应用程序等)中运行所需的最低设置.