【发布时间】:2014-07-26 06:34:34
【问题描述】:
我昨天了解了面向服务的架构,对此我有一个疑问。
为了与 Web 服务提供者通信,初始通信必须由服务消费者启动。那么这是否意味着一个 Web 服务提供者不能直接与另一个 Web 服务对话(因为它不是消费者)?
【问题讨论】:
标签: web-services soa
我昨天了解了面向服务的架构,对此我有一个疑问。
为了与 Web 服务提供者通信,初始通信必须由服务消费者启动。那么这是否意味着一个 Web 服务提供者不能直接与另一个 Web 服务对话(因为它不是消费者)?
【问题讨论】:
标签: web-services soa
我没有足够的信息来全面了解您所了解的内容。不过,我可以这么说:
那么这是否意味着网络服务提供者不能直接与另一个网络服务对话(因为它不是消费者)
这不是真的。程序可以(以编程方式)访问 Web 服务提供的数据。 Web 服务并没有真正意识到“消费者”是什么。它只能(以编程方式)查看客户端提供的数据(通常是浏览器数据、cookie、缓存等)。但这并不能阻止任何人打开 bash shell 并 curling 网站。
这将检索服务器静态提供的任何数据。请注意,数据可能会使用 JavaScript 进行模糊处理,以采取措施防止浏览器环境之外的任何程序访问其关键数据。
所以这个问题的答案是肯定的和否定的。
【讨论】:
您应该在https://softwareengineering.stackexchange.com/ 上提出这个问题,因为它与有关编程概念的问题更相关。
从技术和架构的角度来看,服务当然可以调用另一个。简单地说,它正在改变自己的角色,成为第二项服务的消费者。请注意,如果两个服务都以两种方式相互调用以完成单个客户端请求的任务,事情可能会变得混乱。尽管这种行为通常存在有效的场景,但如果两个服务都由同一个实体管理,那么是否不应该移动任务或合并服务是值得关注的,因为这可能是错误设计决策的标志。
【讨论】:
任何软件都可以与网络服务通信,只要它可以访问它。
【讨论】: