5

我有一个需要承担的特定项目,在我迈出第一步之前,我希望得到大师的一些指导。

我们有许多应用程序从某些外部源(即文件、XML-RPC、Web 服务等)接收输入,然后以某种方式对其进行处理,对其应用规则,与其他外部系统(可能)通信,访问一个数据库(也许),然后发回一个响应。我们正在维护同一应用程序的不同版本,以满足客户之间的所有细微差异。(是的,是的,我知道。这很糟糕,这就是我想要修复它的原因......)

我正在使用的想法是拥有一个基于组件的架构,其中不同的组件可以通过配置连接在一起,并且信息流通过业务规则进行管理。本质上,必须可以为每个客户提供具有不同配置集的程序副本。我什至梦想有一个基于 GUI 的应用程序,其中一个系统可以以 VB 风格的拖放方式连接在一起。

现在,以上听起来绝对像是以前做过的事情……而且我不想重新发明轮子。问题是上面必须能够处理大量的实时事务,所以我不确定像 BPEL 这样​​的东西是否是正确的选择。

在我去使车轮更圆之前有什么建议吗?

4

1 回答 1

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构建文件这样的东西,并尽可能保持简单。

于 2012-09-12T08:56:12.923 回答