gpt4 book ai didi

servicestack - JsonServiceClient.Get 中 IReturn 和 IReturnVoid 的用途

转载 作者:行者123 更新时间:2023-12-03 11:11:30 27 4
gpt4 key购买 nike

为什么我需要提供对 ServiceStack 的 JsonServiceClient.Get 的 IReturn 或 IReturnVoid 引用?一定有充分的理由(我对框架很陌生)但我不明白为什么我必须将我的对象转换为 IReturn 包装器或使它们依赖于 ServiceStack。

我已阅读这些帖子,但找不到我正在寻找的解释(仅解决方法):

谢谢!

最佳答案

JSON 是一种无类型的数据格式。好吧,有字符串和数字、数组和键/值对——仅此而已。

JSON over HTTP 不提供任何类型信息。

ServiceStack,就像大多数其他使用 HTTP+JSON 的 RESTful 服务一样,将像用其他语言编写的其他服务一样工作——来回传递 JSON。

将 IReturn 添加到您的服务方法不会使您的服务依赖于 ServiceStack - 您可以使用任何其他 HTTP 客户端发出请求并在响应中取回 JSON。

此外,它还为您提供了使用“强类型”http 客户端 (JsonServiceClient) 的选项,它将自动映射到客户端上与服务器端相同的 .NET 类型。因此,如果您想为您的服务编写 native C#/.NET 客户端,那将非常容易。

与此同时,如果您或其他客户想要编写通用的“非类型化”Web 服务客户端,它们也可以按预期工作。

以下是我的想法,使用 ajax 客户端、未类型化的 http+json 网络服务客户端和 ServiceStack 客户端:

通用网络浏览器:

  • 请求 (JSON) -> HTTP -> ServiceStack 服务
  • 响应(JSON)<- HTTP <- ServiceStack 服务

通用 HTTP 客户端:

  • 请求 (JSON) -> HTTP -> ServiceStack 服务
  • 响应(JSON)<- HTTP <- ServiceStack 服务

ServiceStack 的 JsonServiceClient:

  • 请求(JSON x/.NET 类型信息)-> HTTP -> ServiceStack 服务 IReturn
  • 响应(JSON x/.NET 类型信息)<- HTTP <- ServiceStack 服务 IReturn

通常,您会 reference the DTO type information from the client and the server project in a *.ServiceModel assembly ,您可以在两端使用。由于 DTO 和服务的任何类型信息都“在那里”,客户端将知道如何将 JSON 反序列化为正确的类型。 IReturn 是对象上的“标记”(元数据)——较旧的 SS API 使用不同的接口(interface)来做同样的事情,但更冗长且灵 active 更低(REST 与 SOAP 的返回似乎不同)。

另请注意,您的 DTO 不需要实现 IReturn - 因此它们不需要依赖于 SS。我更喜欢仅在“操作”或通信 DTO 上使用 IReturn - 那些正在传递参数的 DTO。我喜欢在没有 IReturn 依赖的情况下保留映射到数据库表(即 - OrmLite)的 DTO。

https://github.com/ServiceStack/ServiceStack/wiki/C%23-client

关于servicestack - JsonServiceClient.Get 中 IReturn 和 IReturnVoid 的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18802699/

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