【发布时间】:2012-02-28 14:00:47
【问题描述】:
注意:服务外的数据是指服务返回并被客户端消费的消息。
我有一个名为 LastBuyer Service 的服务。当我将 bookID 输入服务时,这将返回一本书的最后一个买家姓名。当我为相同的图书 ID 调用服务时,它会返回不同的结果(如果新买家购买了一本书)。所以我无法在客户端缓存服务的结果(对于特定的 BookID)。
在阅读文章“内部数据与外部数据”时,它显示“可以缓存”——“由于消息的 ID 返回相同的数据,因此可以缓存消息”。
参考:http://msdn.microsoft.com/en-us/library/ms954587.aspx
我的理解中缺少什么?
上例中的消息是不可变的吗?
上面例子中的版本依赖和版本无关标识符是什么?
这里的消息版本控制是如何完成的?
哪本 WCF 书籍通过示例清楚地解释了 SOA 概念和模式?
阅读
- 服务设计原则:服务模式和反模式
【问题讨论】:
-
我想你可以通过在书的 id 之外给我一个时间来解决这个问题(让我在这个时间之前成为最后一个买家)并且在未来永远不要给时间 - 所以你的服务器调用类似于一个 real 函数,您可以缓存(但缓存将毫无意义) - 我认为缓存仅在您查询不会再更改的数据时才有用...
-
@Carsten 谢谢。因此,该声明的意思是我们需要通过接收此类输入(在您的评论中提到)使消息不可变。我的理解正确吗?另外,你能解释一下问题的其他部分吗?
标签: c# .net wcf soa service-design