将Web服务请求转换为内部表示?

时间:2011-05-31 07:35:38

标签: java web-services soap decoupling

我正在实现一个接收不同请求的SOAP-Webservice。我的Manager-Class应该将这个Request对象转换为内部表示形式,然后再将它们委托给实现类吗?

我认为这对于脱钩来说是一个好主意。但是这样做我必须创建每个RequestObject类的副本,并将其命名为InternalRequestObject,它存储与原始Request相同的数据。

这有意义吗?

1 个答案:

答案 0 :(得分:1)

如果您打算重复使用那些我称之为业务层的实施类,这是有意义的。

在当前设置中,您将业务层公开为Web服务。 Web服务的骨架 - 如果您愿意 - 是您的业务层的客户端。

现在出现的问题是:您的业务层是否应该关注它将拥有哪种类型的客户?业务层的数据合同是否应由客户决定,还是客户应尊重业务层公开的数据合同?

明显的响应是客户端应该尊重业务层的数据合同,因此您的问题的答案是:,您应该将SOAP请求映射到内部请求类型实现类,以便在两者之间获得更好的解耦。

只有一种情况我会考虑直接使用请求类型直到我的业务层:如果我绝对(101%)确定我将永远不必将我的业务层公开为其他任何东西而不是SOAP Web服务。

这个想法是你在这方面只有两个主要选择:

<强> 1。在所有地方保持相同的请求类型。这样做的缺点是,如果在某些时候你必须添加其他(非SOAP)客户端,那么你将在业务层中遭受大量重写。

OR

<强> 2。将SOAP请求类型映射到内部类型。这样做的缺点是你冒着重复代码和额外工作的风险,最后发现一切都是无用的,毕竟你不需要添加其他客户端。

考虑一下你的情况并谨慎选择!但我必须告诉你,就个人而言,到目前为止我还没有遇到过2号的劣势。我总是最终添加了新的客户端,并且在那时它帮助从一开始就映射了类型。