不同API之间的映射/转换/转换

不同API之间的映射/转换/转换,api,mapping,facade,osdi,Api,Mapping,Facade,Osdi,Oracle的OSDI是否有开源或其他商业替代方案 在我的场景中,我有一个遗留API(它是客户系统使用的,不能更改)。我有一个底层产品,它具有替换遗留系统所需的功能,但它有自己的API 所以我需要在他们之间进行翻译。这个转换层是一个经典的facade模式,除了解包/映射参数和返回值之外,不需要做很多其他工作,它没有任何状态或进行任何复杂的处理 我可以很容易地手工实现这个层,但是它是重复的,而且容易出错 OSDI允许我定义一个要调用的方法(比如在SOAP中),并指定在调用不同的底层方法时如何使用它

Oracle的OSDI是否有开源或其他商业替代方案

在我的场景中,我有一个遗留API(它是客户系统使用的,不能更改)。我有一个底层产品,它具有替换遗留系统所需的功能,但它有自己的API

所以我需要在他们之间进行翻译。这个转换层是一个经典的facade模式,除了解包/映射参数和返回值之外,不需要做很多其他工作,它没有任何状态或进行任何复杂的处理

我可以很容易地手工实现这个层,但是它是重复的,而且容易出错

OSDI允许我定义一个要调用的方法(比如在SOAP中),并指定在调用不同的底层方法时如何使用它的参数。我可以向被调用的方法添加其他值,还可以说明如何将返回值(可能是一些XML)转换为顶级方法的返回值

它有一个基于Eclipse的图形编辑器,允许轻松创建和编辑这些定义

所有这些都非常整洁,但是OSDI已经有5年左右没有更新了,而且它有一些问题


那么有没有其他方法可以做类似的事情呢?

为什么不能为每个遗留API X编写一个替换“垫片”,用合适的参数洗牌来调用新的API X?如果您只打算这样做一次,我不认为获得通用代码映射器比编写垫片更容易。一个更有趣的替代方案可能是在每个调用站点用代码shuffle替换X上的遗留API调用,以调用X'。为此,我可能会有一个有用的答案。当然,我可以编写代码。但是还有很多遗留API要做(我们可能会在未来的客户部署中处理类似的需求)。我们不太可能让客户在最后更改代码,因此更换调用代码并不是一个真正的选择。您没有解决这个问题:为什么使用某种生成器,您必须在每个API的基础上进行配置,比只编写垫片更快/更有效?这就在我最初的问题中:“我可以很容易地手工实现该层,但它重复性强,容易出错。”