信息化 频道

让企业SOA项目更可控之必备十大戒条

  8.不要使用快照模型

  具体而正式的历史信息

  我职业生涯中最大的错误就是设计了这样的数据库,其中所有服务请求都被给予一个时间戳,以便数据添加进去后,服务可以根据指定时刻数据库存放的数据内容来响应,而不是根据当前内容。这个数据库极其昂贵,把执行速度拖累得就像龟行,而且没能起到很大作用。当用户想看看过去某个特定的结果是怎么被计算出来的时候,他们不免只能够查询归档文件,因为这些归档文件总是会包含之前与用户沟通的结果。而这也正是他们想要知道的东西。

  请注意数据库的用途不是去记录过去那些成为问题的情况。数据库是现实世界某些部分的模型,以及在过去某一段时间里现实世界那部分的状态——它的具体历史——可能和模型的目的非常相关。但是,如果它想要再现自己在过去某个点的状态,换句话说去记录它的正式历史信息,数据库就太把自己当回事儿了。

  SOA如何支持正式历史记录

  SOA方法提供了一种再现正式历史信息的高效方案,不只针对单个数据库,而是针对组织在其管理流程中使用或者产生的所有信息。SOA对组织信息更新所需的数据收集和实际执行更新的分离让数据可以在记录管理程序中得以归档。一旦应用了SOA,这就可以自动完成,而且合并新的数据集几乎不消做多余的努力。这样一来,你可以获得由自己雇员所做的所有输入消息以及更新。

  对即将离开的线下信息情况来说,可能更简单。SOA厌恶将琐事与对客户的附加值混合起来,这种混合导致客户很自然地会去使用输出管理服务以确保离线信息通过适当的渠道发送至目标接收者,发送时要确保地址是接收者会使用的,并且格式是接收者确实能收到的。输出管理服务能够自动记录输出信息。

  尽管如此,还是有个问题。组织使用SOA传播信息的难易程度有可能导致对外界的服务响应数量大大增加。通常这些服务响应都隐含了组织对他们声明内容的承诺。如果它们不正确的话,组织可能会陷入法律难题。SOA处理这种问题的标准方法包括以下指导方针:

  实现和SOA交易概念相一致的业务交易。

  将放弃承诺包含在对全部信息进行检索的服务的服务水平协议中。

  在需要使用时才访问数据。这样可以使数据尽可能的最新。

  不要撒谎。如果一直讲真话,你将很少遇到关于信息不正确的投诉。

  如果使用放弃承诺还使得你不得不对声称信息是不正确的声明作出反应,那对每个服务请求和回应进行日志,采用标准的组织范围的服务。

  这种工作方式要比数据库化的方案组织起来更简单,因为不需要对每种消息类型都要求一种额外逻辑,而是调用日志服务,在日志服务中整个输入或输出消息都被当成是单一的数据项来处理。

0
相关文章