我有一个问题的干燥原则(不要重复自己)和最小化依赖围绕Rete规则引擎。
大型IT组织中的规则引擎往往是企业(请注意大写"E“-这是严肃的业务)。所有规则必须表达一次,好和干,并集中在一个昂贵的规则引擎。一个组维护规则引擎,并且是规则集的守护者。
当IT组织是美国保险公司的一部分时,往往会有很多规则。有一些规则适用于所有的州和产品,但每个州都倾向于为不同的产品制定自己的法律,因此这些规则需要反映这些怪癖。分类很多:精算,承销,甚至订购信贷和汽车报告从第三方分局。
从设计的角度来看,我遇到的问题是,集中规则和处理当然是好的和枯燥的,但也有代价:
如果将规则引擎公开为SOAP web服务,则domain;
这些问题伴随着许多其他企业技术(例如,B2B网关、ESB等)而出现。
同样的企业集团也把SOA作为一个基本原则。但是我对正确的服务设计的理解是,它们应该是业务空间,并且是幂等的、独立的和孤立的。如果一个服务的规则是在其他地方维护的,那么它怎么可能是独立和孤立的呢?
我想在简单的方面犯错,认为如果规则只适用于孤立的情况,那么消除依赖应该优先于集中化。我不确定这场争论能赢得今天的胜利。
所以我的问题是:
你认为集中还是独立的观点在哪里? centralization?
发布于 2009-09-15 15:43:59
从长远来看,对整个系统进行简单的维护将是一个绝对的要求。
因此,DRY应该不惜一切代价兑现,即使这涉及性能的损失,一些额外的配置问题和其他“小”问题。
另外,“独立”与“独立”是不同的。
否则,想象一下当你需要改变某件事的时候,你必须联系很多不同的人来迫使他们更新。使用DRY,您还可以解决在短时间内同时运行不兼容版本的问题。
所以
发布于 2009-11-24 18:50:44
你的问题是企业特有的,我更喜欢桌面的东西,所以我希望这个答案不要太笼统。我喜欢不要重复你自己的概念,直到我发现它是如何被编纂和僵化的。我喜欢它,因为它与我一致(嗯!)以及我自己关于如何使代码更易于维护和更少出错的想法。基本上,我认为维护人员需要更多的学习曲线来获得更好的可维护性。我不认为有什么简单的方法能解决这个问题。Here's an example of how to increase maintainability by a good factor, but not without a learning curve.
https://stackoverflow.com/questions/1242412
复制相似问题