我有一个我需要进行的具体项目,在我迈出第一步之前,我希望得到大师的一些指导。
我们有许多应用程序接收来自某些外部源(即文件,XML-RPC,Web服务等)的输入,然后以某种方式处理它,应用规则,与其他外部系统通信(可能),访问数据库(可能),然后发回响应。我们维护同一应用程序的不同版本,以满足客户之间的所有细微差别。 (是的,是的,我知道。这太糟糕了,这就是我想修理它的原因......)
我正在使用的想法是拥有一个基于组件的架构,其中不同的组件可以通过配置连接在一起,信息流通过业务规则来管理。实质上,它必须能够为每个客户端提供一组具有不同配置的程序副本。我甚至梦想着一个基于GUI的应用程序,其中系统可以以VB风格的拖放方式连接在一起。
现在,上面的声音绝对像以前做过的事情......而且我不想重新发明轮子。问题是上面必须能够处理大量的实时交易,所以我不确定像BPEL这样的东西是否是正确的选择。
在我去制造车轮之前有任何建议吗?
答案 0 :(得分:1)
我会为您的应用程序编写一个非常简单的XML方言。保持元素类型最小化,并使用class="my.class.name'
属性在运行时构建正确的类实例。例如,这使得拥有3个实现的元素变得容易
<source class="my.package.XmlRpc">
,<source class="my.package.LocalFile">
和<source class="my.package.WebService">
)。每个元素类型一旦实例化,就应该读取其XML内容,以找到正确配置自身所需的任何其他数据。
有许多易于使用的XML解析库(我推荐使用JDom),并且有很多工具支持XML查看和编辑。 XML易于记录,使用和包装到GUI中。
所以:每个组件都有一个元素类型,它们特定的依赖于实现的配置被隐藏在元素中。如果您的接线很简单(特定的组件实例仅在一个地方使用),您可以放心使用。如果你有复杂的连线(你需要在几个地方重用组件实例;例如,你想重新使用过滤器或计算中间结果),首先你定义组件实例,然后你建立对这些组件的引用的连线实例。
我基本上提倡像Ant构建文件这样的东西,并尽可能保持简单。