是否可以构建一个可以与一个或多个Web服务进行通信的Web服务(我们称之为A)?
是一种SOAP代理吗?
webservice A将基于服务器B和C中的其他Web服务构建它的功能
所以客户只会向A发送请求,而A会知道将请求发送到(B或C)
是否可以构建这样的应用程序?
答案 0 :(得分:1)
不知道我是否理解了您的问题,但是可以向您的网络服务添加服务引用。 要将请求发送到哪个webservice,您可能需要编写代码; - )
答案 1 :(得分:1)
如果我理解正确,您的应用中有3个组件:
by frontend,我的意思是Web服务是唯一暴露给客户端的服务,换句话说就是“Facade”。
如果这是正确的,您可以从“WS A”项目中引用“WS B”和“WS C”。 “WS A”中的代码可以充当这些Web服务的客户端。这通常被称为SOA体系结构(面向服务的体系结构),其中每个服务都提供功能,并且可以相互通信。
当您拥有基础架构要求(例如委派客户端凭据)时,认为开始有点困难,但我认为这是实现您想要的最干净的方式。
答案 2 :(得分:1)
这绝对是可能的,它不是生活或绑定到SOAP Web服务的东西,因为这是一个应用程序实现问题。你应该更关心的是你将如何去做。
使用数据传输对象
花了很多年时间开发Web服务我相信设计Web服务的最佳方法是遵循Martin Fowler's DTO pattern使用客户端代理使用特定于远程服务的DTO进行通信的地方>(也称为服务网关)到Web服务(也称为服务接口)。从性能,SOA,可重用性的角度来看,这种Web服务的“消息风格”非常棒。这构成了我的ServiceStack Web服务框架的构建基础。
WCF RPC方法
不幸的是,Microsoft的WCF SOAP Web服务框架有效地阻止了这种最佳实践约定,因为它们鼓励您通过坚持使用方法签名来定义Web服务来开发特定于API的RPC方法调用 。当然,你仍然可以开发“基于消息”的api,但是需要付出更多的努力才能在他们的在线教程中进行演示。在我看来,这导致了一个客户端特定的API,它鼓励更多远程方法调用,因此性能较差。有时候我真的希望微软遵循行业专家公布的成熟做法,而不是他们为拖拉开发者提供服务的主要动机。
异步调用多个Web服务
回到原来的问题,您将定义一个接受请求的Web服务,如果您很幸运,您的所有代理Web服务共享相同的界面,您应该能够使用相同的客户端代理在每个服务端点的更改网址的循环中。我通常建议您从异步(并在最后加入)中解除每个请求,以加快“主Web服务”的执行时间。