2009-06-11 102 views
3

针对某种模式或最佳实践征求反馈/想法,以解决多年来我已经看到过几次的情况,但是我还没有找到任何解决此问题的解决方案我想要的方式。服务设计(WCF,ASMX,SOA)

这是背景。

公司有3个应用程序支持3个彼此非常相关的独立“业务线”。其中两个应用程序直接从原始文件复制/粘贴。应用程序需要能够以不同的速率增长并且功能略有不同。功能的主要区别来自数据输入字段。不同之处主要分为以下类别之一:

  1. 一个实例有几个领域 ,其他没有。
  2. 字符串字段在一个 实例中的最大长度为200,但在另一个中为50。
  3. 查找/参考字段有 不同的基础值(即 相同的表结构,但来自不同数据库的 )。
  4. 一个字段被定义为用户提供的, 自由文本,在一个实例中的值, ,但在另一个实例中查找/引用。

问题是公司内部还有其他应用程序需要使用来自这三个独立应用程序的数据,但理想情况是以核心/集中方式与它们对话(即通过中央服务而不是3个独立服务)。我的问题是如何处理,特别是上面的项目D.我认为“最低公分母”方法可能是唯一的方法。例如:

<SomeFieldName> 
    <Code></Code> <!-- would store a FK ref value if instance used lookup, otherwise would be empty or nonexistent--> 
    <Text></Text> <!-- would store the text from the lookup if instance used lookup, would store user supplied text if not--> 
</SomeFieldName> 

对此的其他想法/想法?

TIA!

回答

1

因此,严格区别于Datamodel视图,还是在应用程序级别上存在功能性业务/行为差异。

如果后面的情况是这样,那么我将定义沿着你似乎正在用SOA向下的路径。现在,您如何暗示SOA仅取决于您的架构需求。我所看到的设计将会有一些不同的模式。很难确定哪个人能够满足需求,并提供更多关于如何使用行为/功能差异的信息/示例。从我头顶上的角度来看,你可以从我的最初设计中开始考虑战略模式。

Definetly使用TDD原型,以便您可以确定您的标题是否正确的路径。

+0

每个应用程序的数据模型和行为都有所不同,但现在我试图解释模式/模型/数据合同的差异,而不是行为差异。 问题是,我们对什么应用程序将消耗我们的数据没有硬性要求,只是对他们需要什么和过去的经验的一般概念。我们试图提出一些足够严格的内容来定义我们的数据结构,但又足够宽松以允许差异和增长。 – Brian 2009-06-16 22:28:38

0

如何:扩展您的LCD方法,在这些系统的前方放置一个立面。设计一个规范化的数据形式(如果填充足够的数据)可以转换为任何特定的实例。 [在这里标题为ESB。]

然后你有这个问题,客户如何知道“足够”是什么?某些类型的元数据可能是需要的,以便您可以呈现一个可用的UI。因此,扩展服务以提供交付元数据的操作。