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

标签 java web-services soap decoupling

我正在实现一个接收不同请求的 SOAP-Webservice。我的 Manager 类是否应该在将请求对象委托(delegate)给实现类之前将其转换为内部表示?

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

这有意义吗?

最佳答案

如果您打算重用这些实现类,我将其称为您的业务层,这是有意义的。

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

现在出现的问题是:您的业务层是否应该关心它将拥有什么样的客户?业务层的数据契约应该由客户端决定,还是客户端应该尊重业务层公开的数据契约?

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

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

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

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

或者

<强>2。将 SOAP 请求类型映射到内部类型。这样做的缺点是,您可能会冒着重复代码和额外工作的风险,但最后却发现一切都是徒劳,而且您根本不需要添加其他客户端。

考虑一下自己的情况,慎重选择!但我必须告诉你,就我个人而言,到目前为止我还没有遇到过第二个缺点。我总是最终向该事物添加新客户端,此时它有助于从一开始就映射类型。

关于java - 将Web服务请求转换为内部表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6184346/

相关文章:

php - 如何在没有 SoapClient 的情况下解析 SOAP 响应

php - 错误 PHP 7.0 和 SSL TLS 1.0

java - 在java中从扫描仪读取输入到字符串数组

java - 在 Hibernate 中使用多个列表

java - Gradle 2.3 + JUnit 4.11 = 损坏的字符集

java - Apache Camel - 处理 404 错误的最佳方法是什么?

java - 项目构建错误 : Non-parseable POM/pom. xml : entity reference name can not contain character =' (position: START_TAG seen . ..)

java - 使用有问题的 wsdl 的服务 - 意外的元素异常

java - 最简单、最轻量级的 Java Web 服务引擎?

java - 为什么我的 JAX-WS 处理程序在每个元素上重新声明相同的命名空间?