Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf 建议在其他web服务之上构建web服务吗?_Wcf_Web Services_Wsdl_Design Patterns_Gateway - Fatal编程技术网

Wcf 建议在其他web服务之上构建web服务吗?

Wcf 建议在其他web服务之上构建web服务吗?,wcf,web-services,wsdl,design-patterns,gateway,Wcf,Web Services,Wsdl,Design Patterns,Gateway,我继承了这个非常奇怪的代码库,他们在一堆内部web服务上构建了一个外部web服务,只是为了使用WS-Security、WS-Encryption等添加身份验证/授权。在这项服务开始不到一个月,我已经感受到了通过严格的WSDL耦合易失性组件的痛苦,特别是考虑到其中一些组件使用WCF,而另一些组件选择首先使用WSDL。在不同级别管理生成的代理和包装的各种版本是一场噩梦 我承认设计过于复杂,本来可以做得更好,但我的问题是: 您是否曾经构建一个web服务只是为了在一系列服务上提供一个跨领域的关注点 作

我继承了这个非常奇怪的代码库,他们在一堆内部web服务上构建了一个外部web服务,只是为了使用WS-Security、WS-Encryption等添加身份验证/授权。在这项服务开始不到一个月,我已经感受到了通过严格的WSDL耦合易失性组件的痛苦,特别是考虑到其中一些组件使用WCF,而另一些组件选择首先使用WSDL。在不同级别管理生成的代理和包装的各种版本是一场噩梦

我承认设计过于复杂,本来可以做得更好,但我的问题是:

  • 您是否曾经构建一个web服务只是为了在一系列服务上提供一个跨领域的关注点
  • 作为web服务处理程序,这会更好地实现吗
最后

  • 您会将其归类为Web服务网关模式吗

如果您将服务公开给外部世界,如果您需要加强安全性,我也看到过类似的实现。检查一下。

我一年前就看到了这个东西。当团队花了几个月的时间构建了4个web服务时,我几乎哭了,其中2个只是简单地包装了其他内部服务,使用WCF和一些严重的加密。他们包装内部数据的唯一原因是更改返回的潜在错误号

那么,我会故意这么做吗?没有

它会像其他任何东西一样得到更好的实施吗?是的

我会把它归为WTF模式吗?当然

更新:

我刚刚记住的一件事是,有一个称为“企业服务总线”的体系结构,它的目的是为其他SOA系统提供一个公共接口。这样,不同的应用程序对其端点机制(WCF、WSE 1/2/3、RESTful等)使用什么并不重要

BizTalk是ESB的一个示例,可以使用许多其他现成的程序。基本上,您的应用程序会将消息传递给ESB,并以可靠的方式将该消息发送到其他系统,以及将任何响应编组回ESB


这也意味着您可以将其他应用程序与端点的许多类型的更改隔离开来。当然,如果新的端点需要额外的信息,那么您必须修改呼叫者。但是,如果它们只是在改变机制,那么一个好的ESB将能够在不影响应用程序的情况下处理这些更改。

对不起,我不太清楚。我们有一个WS-I服务,而不是一堆WS-I服务。一路都是WS,别无选择!:(公平地说,他们也有服务版本控制;但这仍然是一个令人讨厌的问题。好吧,ESB模式更适合异步操作。当您寻找面向公众的web服务的确定性时,总线上的排队要么会使用户体验或API复杂化,要么两者都复杂化!@dexterous:有点正确。您通常使用当您需要有保证的消息传递,需要完成长时间运行的流程,或者需要在调用应用程序之外管理复杂的交互时,使用ESB。这并不一定意味着API会变得更复杂。也许我应该用更好的措辞。ESB会使上述情况变得更复杂因为API的设计/意图是同步的。