我继承了这个非常奇怪的代码库,他们在一堆内部 Web 服务上构建了一个外部 Web 服务,只是为了使用添加身份验证/授权>WS-Security、WS-Encryption 等。参与此事件还不到一个月,我就已经感受到通过严格的 WSDL 耦合不稳定组件的痛苦,特别是考虑到其中一些组件使用 WCF,而其他组件则选择先使用 WSDL。在各个级别管理生成的代理和包装器的各种版本是一场噩梦!
我承认设计过于复杂,本来可以更好,但我的问题本质上是:
- 您是否会构建一个网络服务只是为了提供对一堆服务的跨领域关注?
- 将其作为 Web 服务处理程序来实现会更好吗?
最后...
- 您会将其归入 Web 服务网关模式吗?
最佳答案
我一年前就看到了那个东西正在 build 。当团队花了几个月的时间构建 4 个 Web 服务(其中 2 个只是使用 WCF 和一些严格的加密技术封装了其他内部服务)时,我几乎哭了。他们包装内部错误的唯一原因是更改返回的潜在错误号。
那么,我会故意这样做吗?不。
它会像其他任何东西一样更好地实现吗?是的。
我可以将其归入 WTF 模式吗?绝对。
更新:
我刚刚记得的一件事是,有一种名为“企业服务总线”的架构,它的目的是为其他 SOA 系统提供通用接口(interface)。这样,不同的应用程序使用什么端点机制(WCF、WSE 1/2/3、RESTful 等)并不重要。
BizTalk 是 ESB 的一个示例,还有许多其他现成的程序可以使用。基本上,您的应用程序将消息传递给 ESB,然后它以可靠的方式处理将该消息发送到其他系统以及编码返回的任何响应。
这也意味着您可以将其他应用程序与端点的多种类型的更改隔离开来。当然,如果新的端点需要额外的信息,那么您就必须修改调用者。然而,如果他们改变的只是机制,那么一个好的 ESB 将能够处理这些变化而不影响您的应用程序。
关于wcf - 在其他 Web 服务之上构建 Web 服务是否明智?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/165747/