gpt4 book ai didi

wcf - 将服务从 WCF 转换为 ServiceStack Framework

转载 作者:行者123 更新时间:2023-12-04 14:31:45 25 4
gpt4 key购买 nike

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

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

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

  2. 如何使用 C# 创建客户端?我需要添加哪个引用?

  3. 当我在 IIS 上托管示例应用程序时使用 NuGet 添加启动模板后,我找不到任何资源。当我需要在 IIS 上托管它时,我需要做一些特定的设置吗?

最佳答案

如果您还没有这样做,请查看 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 网络服务所需的所有代码。您应该能够从 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);

/metadata 页面上还有一个指向您的网络服务 WSDL 的链接,您可以根据需要在其中创建生成的服务客户端。然而,这不是推荐的方法,因为与仅使用现有的 DTO 相比,它需要更多的摩擦。

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

基本上,您可以将 ServiceStack Web 服务视为普通的 ASP.NET Web 应用程序,实际上是 Hello World Tutorial向您展示如何通过创建一个空的 ASP.NET 应用程序来执行此操作。

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

关于wcf - 将服务从 WCF 转换为 ServiceStack Framework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7978955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com