1

注意:服务外的数据是指服务返回并被客户端消费的消息。

我有一个名为 LastBuyer Service 的服务。当我将 bookID 输入服务时,这将返回一本书的最后一个买家姓名。当我为相同的图书 ID 调用服务时,它会返回不同的结果(如果新买家购买了一本书)。所以我无法在客户端缓存服务的结果(对于特定的 BookID)。

在阅读文章“内部数据与外部数据”时,它显示“可以缓存”——“由于消息的 ID 返回相同的数据,因此可以缓存消息”。

参考:http: //msdn.microsoft.com/en-us/library/ms954587.aspx

  1. 我的理解中缺少什么?

  2. 上面示例中的消息是不可变的吗?

  3. 上面示例中的版本相关和版本无关标识符是什么?

  4. 消息的版本控制是如何在这里完成的?

  5. 哪本 WCF 书籍通过示例清楚地解释了 SOA 概念和模式?

阅读

  1. 服务设计原理:服务模式和反模式

http://msdn.microsoft.com/en-us/library/ms954638.aspx

4

1 回答 1

2
  1. 您错过了这样一个事实(正如@Carsten-Konig 暗示的那样)任何给定快照时间的数据都是不可变的。除非您回去填写旧订单,否则截至昨天下午 5:00 为止最后一个购买这本书的人总是一样的。从那时起有人购买了这本书(导致该数据的新版本)这一事实与昨天的结果无关。这可能是缓存有用的数据,也可能不是,但在任何给定的时间点,它都是不可变的。

  2. 如果消息的键的一部分是它的时间戳,则消息是不可变的。

  3. 与版本无关的标识符是书的 ID。版本相关的标识符是快照时间戳。

  4. 按快照时间戳(同样,这对于缓存目的可能有用也可能没用)

至于这方面的好书,恐怕我无法给出建议。但我怀疑 amazon 或 bn.com 上的评论是一个不错的起点。

于 2012-03-02T16:23:17.337 回答