gpt4 book ai didi

wcf - 使用 servicestack 使用 REST WCF 的更好选择是什么

转载 作者:行者123 更新时间:2023-12-04 06:08:53 26 4
gpt4 key购买 nike

我从这里得到了一些关于 servicestack 的很好的解决方案,现在我在两步之间,我选择了其中之一。请理解我的实际场景如下

我使用 Servicestack 创建了一个 REST WCF,一个模型(类)如下所示

public class Perfmon
{
public long id { get; set; }
public string appliationId { get; set; }

public string cpuUsage { get; set; }
public string availableMemory { get; set; }
.......
.......
}

现在我想根据下面的另一个 EXE 项目对该服务进行后期调用
 JsonServiceClient client = new JsonServiceClient("myserviceurl");
RESTWCF.ServiceModel.Perfmon p = new RESTWCF.ServiceModel.Perfmon();
var res = client.Post<RESTWCF.ServiceModel.Perfmon>("/perfmon", p);

现在我有 2 个选项,如下所示

1) 需要将 XSD 转换为类并使用它的对象来传递 post 请求
正如我所问的问题 How can i convert XSD file to C# Class
但我无法使用 XSD.exe 实用程序直接使用 URL 生成类

2)手动传递json字符串
如果我有 json 字符串,那么它看起来像下面
[{1:"22", 2:"123", 3:"60", ..... }] 

(其中 1 用于 id,2 用于 applicationid ..以缩短 json 字符串)然后我需要将其转换为 C# 类以在 post 请求中传递对象,但我仍然需要找到与 (1, 2 . .)

第二个选项在某种程度上令人困惑,但如果我可以使用它,那么我的客户要求在发布请求中手动传递 json 字符串。

请帮助我选择更好的选项,因为在简单的 Rest WCF 中,我们不需要使用类(模型)引用来发出发布请求。

如果它没有意义,那么我可以更详细地澄清它

提前致谢

最佳答案

不知道为什么你不能从 生成模型类XSD.exe - 但这实际上并不是必需的。使用 ServiceStack 的正常方法是将所有 ServiceModel 类(即 DTO)放在一个单独的无依赖程序集中,并将其与通用 JSON/JSV/XML/SOAP 服务客户端之一一起使用。

如果您让 XSD.exe 生成 DTO 类,那么它只会生成 ServiceModel.dll 的副本程序集。如果您不想将 dll 发送给他们,那么只需给他们 DTO 源代码 - 这基本上是 XSD.exe 实用程序生成的内容(因为代码生成包含大量 cruft/boilerplate,所以更干净)。

那么为什么要经历所有额外的代码生成 + 构建步骤呢?特别是如果您在生成时遇到问题。

两种选择都有效,最理想的是提供强类型 DTO 并使用通用服务客户端。

如果你想传递一个 JSON 字符串,那么你需要使用一个纯 HTTP 客户端,例如 HttpWebRequest 或新 HttpClient .

在没有 C# 模型的情况下调用 ServiceStack REST Web 服务

如果不想使用您的服务 DTO 或 C# XSD.exe 生成的服务模型调用 ServiceStack Web 服务而不是发送 JSON,请使用 URL QueryString for 获取 请求或发送标准的 HTTP POST 键值对,即 应用程序/x-www-form-urlencoded HTTP POST 要求。请求 DTO 会自动填充在 QueryString 或 POST'ed FORM 数据上发送的任何变量。

一个通用的标准是使用 curl wget 展示如何与您的 REST web 服务通信,因为它的功能和用户可以轻松地使用他们最喜欢的 HTTP 客户端模拟 web 服务请求。

curl -d "id=1&appliationId=2" http://example.com/myserviceurl/perfmon

Google's Weather API举个例子。否则,您只需记录您的 REST api like twitter does并向他们展示带有示例输出的 GET Query String 或 POST 表单数据示例。

关于wcf - 使用 servicestack 使用 REST WCF 的更好选择是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8018640/

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