【发布时间】:2016-11-24 19:02:46
【问题描述】:
当前,当操作返回对象集合时,我们的 WCF 服务都会处理某种类型的分页。但是我们发现,在某些情况下,某些操作可能会返回一组不那么简单的对象,这些对象最终会产生超过 64K 阈值的响应,所有最佳实践文档都要求我们尝试维护以优化底层 tcp 通道,一切正常.
例如,我们的服务可以返回在影院放映的电影列表,客户可以询问每部电影在某个时间段内的每日定价、放映时间和座位可用性;那就是“给我正在放映的电影列表和未来 30 天的每日信息”。 问题是我们不能简单地限制客户可以要求的天数。所以即使我们限制在单个呼叫中返回的电影数量,客户请求信息超过 30 天也会产生很大的响应我们尽量避免。
流式绑定是不可能的,因为我们所有的服务都是单向的,使用某种类型的队列作为通道。 我们可以研究什么样的合同设计来管理这些类型结果的大小?当然,我们也希望避免过于复杂的合同,因为合同能够分页响应的各个方面,因为这对任何人都没有好处。
【问题讨论】:
-
不知道你有没有
design problem。为什么要在同一个请求中返回电影未来 30 天的每日信息?获取电影列表然后仅在用户选择某些内容时获取每日信息不是更好吗?这样您就不会获取用户可能不会使用的数据 -
@User52784246,客户端可以在响应中包含或排除每日信息,但我们的一些应用程序需要包含它以减少在单个 UI 操作中访问服务器的次数。对于这些应用来说,这是技术上的必需品。
-
减少
number of trips对于少量数据是一个很好的策略,但对于大数据响应,例如在您的情况下是多次旅行的开销 i> 与接收单个大响应的 时间 相比,前者微不足道