远程系统通过中间件(MQ)向我的应用程序发送消息。
在中间件中,转换(使用xslt)应用于此消息。它只是重新格式化,没有丰富和验证。我的系统是这个转换消息的惟一使用者,xslt由我的团队维护。
所有这一切的原创者已经走了很久,我想知道为什么他认为在中间件而不是我的应用程序中进行转换是一个好主意。我看不出把它移到中间件有什么价值,它会让它看起来不那么明显,也不太容易维护。
另外,我认为xslt应该由消息生产者而不是消费者来维护。
对于这种架构,有什么指导原则吗?他在这里做了正确的事情吗?
发布于 2013-03-02 00:21:15
在中间件中修改消息体不是一个好主意。这会对可维护性和性能产生负面影响。
这样做的唯一原因是尝试连接两个不兼容的终结点,而不修改它们。这将要求目标端点能够理解源内容的转换。
委托中间件执行转换的动机可能是政治动机(端点由不同的团队维护,管理人员不愿接触端点代码,等等)。
发布于 2013-03-02 01:01:49
如果您正在尝试创建一个应用程序体系结构,其中需要以不同的格式向不同的用户提供数据,并且可能需要以不同的格式接收数据(比如天气报告或体育新闻),那么创建一个能够在许多不同格式之间进行转换的集线器是非常有意义的。(您是否将其称为“中间件”取决于您。)也许你的前任已经想到了这种架构,但它从来没有变得足够大或足够复杂,以证明设计的合理性。
发布于 2013-03-02 00:28:58
从体系结构的角度来看,为消息或内容的使用者提供人类可读的格式(例如xslt )是一个好主意,除非使用二进制格式会显著提高性能。
在人类可读格式的情况下,只需查看消息以验证其是否正确。在二进制情况下,必须开发一个实用程序来将二进制消息转换为人类可读的形式。这种实用程序的不同实现者可能并不总是像预期的那样解释二进制形式,并且它可能会变成关于谁或什么是正确的指责练习。
此外,如果查看队列中的内容,如果消息采用人类可读的格式,则更容易理解。
从人类可读的格式开始,让应用程序首先工作也没有坏处。然后分析应用程序,看看转换例程是否是延迟的重要来源。如果是,则转到二进制格式。
让原始消息生产者提供xslt格式的消息会更好,但是他们必须有很好的理由去做他们所做的事情。例如,潜在的其他使用者,xslt当时还不存在,资源限制等。
https://stackoverflow.com/questions/15160836
复制相似问题