2

我正在阅读 WCF 和服务总线主题,但我没有在某些主题中使用服务总线。检查此使用服务总线的图像:

http://ecn.channel9.msdn.com/o9/learn/Azure/Labs/IntroServiceBus/Lab.html/html/images/4a0aa8f8-f4d1-49b6-b950-cf954402c599.png

在上图中,您的服务位于防火墙后面,那么您显然需要一个服务总线。但是如果你想暴露你的服务,不就是简单地移除防火墙的解决方案吗?然后每个客户端都可以连接到您的服务。

我了解您不想为整个网络移除防火墙,但您可以使用 IIS 创建一个公开可见的网络服务器并在其上运行您的服务。还是我错过了什么?

4

3 回答 3

6

WCF 是一种设置和管理通信接口的方法。它不关心您的消息内容。

然而,服务总线的不同之处在于它负责消息路由。

您可以使用 WCF 和其他位构建服务总线,但 WCF 本身并不是服务总线。

于 2010-11-20T15:53:19.683 回答
5

服务总线可帮助您增强服务架构。

许多组织都有所谓的点对点或意大利面条式集成。情况不妙。服务总线将帮助您实现单点集成。例如,在您链接的图像(Azure 服务总线架构)中,通过将服务添加到 ESB,您可以使用访问控制统一服务身份验证,即使它们位于防火墙后面,而不是每个服务都负责对其自身进行身份验证。此外,即使服务的地址发生了更改,您也只需在一个地方(ESB)更改它,而不是所有引用它的应用程序。

服务总线可以做许多其他事情,包括验证服务消息,在它们不满足您的要求时对其进行增强,将它们从普通的旧 XML 转换为 SOAP,路由消息,增强消息等。

于 2010-11-21T12:55:44.620 回答
2

服务总线是一种中继服务,因此所有客户端都指向云。黑客将攻击云中的中继服务,而不是您的 WCF 服务。中继服务负责所有安全方面。

为了准确回答您的问题,并非所有 WCF 服务都托管在服务总线上,您的解决方案可能就足够了。这取决于您的需求和现有的基础设施。

我强烈推荐 Juval Lowy 的这篇文章

文章摘录:

中继服务是驻留在云中的服务,其工作是协助连接,将客户端调用中继到服务。这种中继解决方案确实需要客户端和服务内部网都允许连接到云,但由于云构成客户端和服务的中立区域,大多数环境都允许调用 Internet。首先,服务和客户端都必须建立连接并针对中继服务进行身份验证。此时,中继器还会记录服务所在的位置以及如何最好地回调它。当客户端调用中继服务时,中继服务将调用(客户端消息)转发给该服务。虽然序列看起来很简单,但实际上它涉及大量复杂的网络编程,消息传递和标准知识、安全专业知识等。对于绝大多数应用程序来说,这样的解决方案简直是遥不可及。这正是 Microsoft .NET 服务总线旨在填补的空白。它是一种现成的中继服务,在 Microsoft 数据中心托管和管理。.NET 服务总线充当云中的外围网络,提供单一位置来管理客户端和服务的凭据。.NET Service Bus 是服务的前端;它封装并将服务与潜伏在互联网上的恶意调用者隔离开来,负责抵御从拒绝服务到重放攻击的各种攻击,同时掩盖实际服务的身份和真实位置。 连接到常规 Windows Communication Foundation (WCF) 服务和使用中继服务之间的主要区别在于托管。在中继的情况下,服务必须连接到 .NET 服务总线,对自身进行身份验证,并在客户端发送其请求之前侦听来自中继服务的调用。这意味着您要么必须显式启动主机,要么将 NT 服务用作主机,并且您无法从 Windows 激活服务 (WAS)(或 IIS)中的主机中受益,因为 WAS 只会在第一个请求进入后启动主机,这永远不会发生,因为主机一开始就没有连接到 .NET 服务总线。.NET 服务总线通过提供一组专用绑定和行为来支持对 WCF 友好的编程模型。总的来说,除了对编程模型的一些细微改动之外,使用中继服务与使用任何其他 WCF 服务没有什么不同。这 。

于 2013-11-06T01:03:31.157 回答