【问题标题】:Can I break CQS to ensure less chatty web service interfaces?我可以打破 CQS 以确保不那么繁琐的 Web 服务接口吗?
【发布时间】:2011-12-05 15:18:41
【问题描述】:

我有一个调用 .NET WCF Web 服务的 .NET WPF 智能客户端。 Web 服务完成大部分工作并向客户端返回少量信息。因此,它与浏览器并不完全不同。

客户端调用网络服务,此时网络服务做一些工作并返回一个“结果”对象。事情变得越来越复杂,我认为这是因为我没有应用 CQS(注意我现在说的是 CQS 而不是 CQRS)。我想重构一些东西以简化并引入 CQS。我仍然可以很高兴地更改 WCF 合同,以便这样做。

但是,这表明客户端应用程序将“发送命令消息”(即在 Web 服务上调用命令方法),然后会“查询”(在同一 Web 服务上调用不同的方法)什么接下来做。我觉得这是不必要的;请求/响应样式是一种非常常见的样式(想想浏览器),如果您考虑一下,它在技术上会破坏 CQS。我在想,在我的情况下,在 Web 服务中提供操作并遵循 CQS,可以为两者之间的实际 Web 服务调用稍微欺骗系统。

这可以接受吗?

【问题讨论】:

    标签: .net wcf web-services command-query-separation


    【解决方案1】:

    编码设计决策非常主观,如果不遵循严格的标准来使整个应用程序受益,那么没有人会责备您。

    CQS(命令查询分离)很好,因为它让您更加确信返回对象是正确的。这在访问内存中的对象时效果很好,但在请求/响应风格的系统中它确实变得非常健谈(在已经非常健谈的协议之上)。

    如果系统位于同一个 LAN 上,那么我会使用 CQS。但是,如果您通过互联网访问它或需要更快的性能,那么请使用常规的请求/响应模式。

    【讨论】:

      猜你喜欢
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多