【问题标题】:Other technologies that can perform DTO request response like WCF其他可以执行 DTO 请求响应的技术,如 WCF
【发布时间】:2015-04-20 05:53:20
【问题描述】:

我有一个 WCF 服务,它允许我使用 DTO 发出请求并使用 DTO 回复 WPF 应用程序。例如,我为产品传递了一个过滤器对象,该对象具有一些我想要过滤的属性和一些用于分页的附加功能,(服务器将处理过滤器对象并获取数据)一个例子就是这样。

public async Task<ObservableCollection<ProductListItem>> GetProductList(ProductFilter filter, int startIndex, int pageSize, string sortBy)

我想知道除了 WCF 之外是否还有其他技术允许这样的操作,从我的初步研究来看,WebAPI 使用的 GET、POST、PUT 动词和路由规则可能完全不同。

p>

ServiceStack 看起来可以做到这一点,我可以在幻灯片 37 上看到 https://servicestack.net/features

它说。

List<Product> productOver2Bucks = client.Get(new FindProducts{PriceGreaterThan = 2})

这看起来很接近,但可能仍然需要 Rest 动词,因为它使用 Get()。

我不知道这是否是 FUD,但我一直在阅读,有人认为基于 WCF 的肥皂是一种遗留技术,而 JSON 是未来的方式。那么是否有一种替代技术可以与我上面的方法签名一起使用?我可以从 Windows 通用应用程序等平台调用。

【问题讨论】:

  • RESTful API 肯定更具互操作性、更轻巧、更简单,通常是更合适的选择,但我几乎不会认为 SOAP 是遗留的。由于 SOAP 与传输无关并支持 WS-* 规范,因此在使用 SOAP 时有大量可用选项。使用 SOAP 时,您对安全性、可靠性、事务等方面的选择要大得多。 Plus 客户端可以通过支持的 WSDL 自动生成代理。
  • 在研究了一段时间后,似乎将soap消息封装成WCF中的C#方法是一件独特的事情。大多数其他框架,如 ServiceStack 和 Nancy 使用 HTTP Post 和 Get 以及路由,这是完全不同的,但我现在理解它并且我认为它非常方便。将两者都放在您的工具箱中仍然很好。

标签: json wcf servicestack dto


【解决方案1】:

在 ServiceStack 中,如果您使用 Any 方法名称设计服务,例如

public object Any(Request request)
{
    return new Response { ... };
}

这将允许从任何格式或端点(例如 JSON、XML、MsgPack、协议缓冲区、SOAP、消息队列等)上的 任何 HTTP 动词调用此服务。

此外,您不需要为请求 DTO 定义任何 [Route],因为当没有可用的 pre-defined Routes 时,它会自动回退到使用。

public class Request : IReturn<Response> { ... }

public class Response { }

因此,通过上述服务,您可以使用ServiceStack .NET ServiceClients 使用任何动词调用 API,例如:

var client = new JsonServiceClient(baseUrl);

Response response = client.Get(new Request { ... });

Response response = client.Post(new Request { ... });

如果您愿意,也可以使用异步 API,例如:

var response = await client.GetAsync(new Request { ... });

var response = await client.PostAsync(new Request { ... });

如果你不喜欢使用动词,你可以使用通用的Send API,例如:

Response response = client.Send(new Request { ... });

它只在下面使用POST,尽管强烈建议将Get 用于“只读”查询,因为它允许任何中间 HTTP 中间件或代理缓存服务 HTTP 响应。

添加 ServiceStack 参考

此外,如果您来自 WCF,您还将享受 ServiceStack 的 Add ServiceStack Reference,它提供了 number of advantages over WCF's Add Service Reference 功能,但仍提供相同的实用程序,能够从远程 url 生成类型化 API:

有更多语言可供使用。

相对于 SOAP 的优势

虽然 ServiceStack 仍然为您的服务启用 WSDL 和 XSD,因此可以出于与旧版兼容的原因从 SOAP 1.1/1.2 端点调用它们 - 有一个 number of reasons why using clean HTTP and JSON/XML API's are preferred

【讨论】:

    猜你喜欢
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 2022-11-29
    • 2016-01-08
    • 1970-01-01
    相关资源
    最近更新 更多