繁体   English   中英

C#将SOAP请求重定向到另一个Web服务?

[英]C# Redirect SOAP request to another WebServices?

是否可以构建可以与一个或多个Web服务进行通信的Web服务(简称为A)?

一种SOAP代理?

Web服务A将基于服务器B和C中的其他Web服务来构建其功能

因此客户只会将请求发送给A,而A会在此处知道将请求发送给(B或C)

有可能建立这样的应用程序吗?

不知道我是否理解您的问题的含义,但是可以将服务引用添加到您的Web服务。 将请求发送到哪个Web服务,您可能必须编写代码;-)

如果我理解正确,则您的应用程序中包含3个组件:

  • 客户端应用
  • “前端” Web服务“ WS A”
  • 另外两个“后端” Web服务,“ WS B”和“ WS C”

所谓前端,是指Web服务是唯一公开给客户端的服务,换句话说就是“外观”。

如果正确,则可以从“ WS A”项目中引用“ WS B”和“ WS C”。 “ WS A”中的代码可以充当这些Web服务的客户端。 这通常称为SOA架构(面向服务的架构),其中每个服务都提供功能,并且可以彼此通信。

当您具有基础结构要求(例如委派客户端凭据)时,思考开始会有些困难,但是我认为这是实现所需目标的最干净的方法。

绝对有可能,并且它不是生存或绑定到SOAP Web Services的东西,因为这是应用程序实现的关注点。 您应该更加关心的是如何去做。

使用数据传输对象

经过多年的Web服务开发工作,我相信设计Web服务的最佳方法是遵循Martin Fowler的DTO模式 ,在该模式下,您可以使用特定于远程服务的DTO,使用客户端代理 (也称为Service Gateway)与Web Service进行通信( aka服务接口)。 从性能,SOA,可重用性的角度来看,这种Web服务的“消息样式”非常有用。 这构成了如何构建ServiceStack Web服务框架的基础。

WCF RPC方法

不幸的是,Microsoft的WCF SOAP Web服务框架实际上不鼓励使用此最佳实践约定,因为它们鼓励您通过坚持使用方法签名来定义Web服务来开发特定API的RPC方法调用 您当然仍然可以开发“基于消息的” api,但是这样做需要更多的努力,并且很少在其在线教程中进行演示。 在我看来,这导致了特定于客户端的API,该API鼓励了更多的远程方法调用,从而降低了性能。 有时,我真的希望微软会遵循行业专家发布的成熟做法,而不是他们通常为拖拽开发人员服务的主要动机。

异步调用多个Web服务

回到最初的问题,您将定义一个接受请求的Web服务,如果您很幸运所有代理Web服务共享相同的接口,则应该可以通过更改URL来在循环中使用相同的客户端代理 。每个服务端点。 我通常建议您异步触发每个请求(并在最后加入),以加快 “主Web服务”的执行时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM