“融化奶酪效应”的处理
2007-02-23 12:21:04 来源:WEB开发网也就是说,就像对象和组件一样,服务同样会受到融化奶酪效应的影响。虽然我还没有想到一种合适的比喻可以把面向服务和拉面联系到一起,但是融化奶酪效应在面向服务和结构化编程中的影响时一样的
所以,利用面向服务的优势,只要我们可以在设计时多考虑一下解决方案的应变问题,就可以更好地解决这个问题。是否要对一个、两个甚至十个类进行改变已经不再重要了,真正重要的是是否需要改变一个、两个甚至十个服务,或者一个、两个甚至十个客户。
我的意思是说,我们需要改动的代码量已经不重要了,重要的是代码的分散程度。重要的是有多少个系统需要被更新,这样的更新难度大不大。重要的是多少个联合版本需要被同时支持并且一起测试。重要的是在一个解决方案里有多少运动机件,比如不同版本的服务、合同、协议和操作系统以及找到违背统一解决方案的部分是否容易等。
当我说与动态链接库灾难相比,问题没有改变的时候,我的真实意思是,本质没有改变,但是范围改变了。如果我们可以把所有需要进行的改动一起立刻完成,我们甚至就不需要讨论这个问题了,但是,在目前的范围内,我们无法进行这种大规模的改变。
解决方案中的运动机件
针对一项常规规模的业务,一个复杂的解决方案通常有以下一个部分构成:一组互动的服务、入口和一些客户应用。它们都有可能随时改变,有可能是被替换掉,还有可能是有新的部分需要加入到解决方案中来。由于不断发生的变化,解决方案也不是静态的,它们不断调整形成新的解决方案。我们可以找出很多运动机件,它们拥有各自不同的变更节奏,每个变更都会带来不同的影响而且有些时候,这种影响是间接的。
假设有一个公司,想改变它原有的单一模式接待客户的方式,把客户分成优选客户、黄金客户和铂金用户,不同的级别会有不用的价位和优惠条件。遵循经典的方法,我们会首先将客户设计成一个个体,负责与客户进行交互的系统理解并使用这个客户个体。而刚刚提到的那个改变意味着客户这个个体需要增加至少一个新的域,还需要对一些涉及服务和客户的代码进行改变。我们还需要设计一个新的方法来决定客户等级的划分,并把它加到使用接口中,同时,价格及折扣的算法也需要改变。所有这些意味着一些交互上的改变。销售以及客户关系管理(CRM)过程需要改变,也许是同时的,也许需要一步步进行。
更多精彩
赞助商链接