了解服务之外的数据:SOA

时间:2012-02-28 14:00:48

标签: c# .net wcf soa service-design

注意:服务之外的数据是指服务返回并由客户端使用的消息。

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

在阅读文章“关于内部数据与外部数据”时,它说“Ok to Cache” - “由于消息的ID返回相同的数据,因此可以缓存消息”。

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

  1. 我理解的缺点是什么?

  2. 上述示例中的消息是否不可变?

  3. 以上示例中依赖于版本和版本的标识符是什么?

  4. 如何在此处完成消息的版本控制?

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

  6. 阅读

    1. 服务设计原则:服务模式和反模式
    2. http://msdn.microsoft.com/en-us/library/ms954638.aspx

1 个答案:

答案 0 :(得分:2)

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

  2. 如果邮件的部分密钥是时间戳,则邮件是不可变的。

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

  4. 通过快照时间戳(对于缓存目的而言,可能有用或无用)

  5. 关于这个问题的好书,恐怕我不能给出建议。但我怀疑亚马逊或bn.com上的评论是一个很好的起点。