我的雇主是特定市场的软件供应商。我们的客户使用网络服务将我们的系统与其他系统集成。我们使用 Microsoft 技术,我们的 Web 服务是在 ASP.NET 和 WCF 中实现的。

现在是时候审查我们当前的服务集,并为未来的集成制定公司标准了。我正在阅读“企业集成模式”,并且还了解了一些 nServiceBus 和 Mass Transit。这些可能会简化合同版本控制和单元测试等问题,但它们似乎对于提供内部服务总线最有用,而不是向外部客户端公开服务。

我们的客户位于许多不同的平台上,并要求我们的服务符合标准。这对不同的人来说可能意味着不同的事情,但我认为可以安全地假设他们想要访问用 WSDL 描述的 Web 服务。

在这种情况下,WCF 是可行的方法吗?

有帮助吗?

解决方案

WCF是迄今为止微软平台上最符合标准的堆栈。这种做法的好处是,它为不同的客户非常灵活的“开箱即用”,如果有事情会让你悲伤,大多可以通过自定义行为改变没有太多的麻烦。

其他提示

我通常推荐的另一种选择是集成 AMQP 您的消息代理之间。也就是说,您可以使用推送范例而不是轮询范例(相比之下,轮询范例非常强大且可扩展)!

您可以在本地设置自己的代理,例如 RabbitMQ。然后您可以让您的集成合作伙伴设置一个。(简单的: 只需下载它).

如果您的合作伙伴从同一个数据中心进行集成,您可以假设很少 网络分裂 - 意思是你可以 分享经纪人. 。另一方面,如果您位于不同的网络上,则可以设置代理 联邦模式. 。(跑步 rabbitmq-plugins enable rabbitmq_federation观点 给其他经纪人)

现在您可以使用例如轨道交通:

ServiceBusFactory.New(sbc =>
{
    sbc.UseRabbitMqRouting();
    sbc.ReceiveFrom("rabbitmq://rabbitmq.mydomain.local/myvhost/myapplication");
    // sbc.Subscribe( s => s ... );
});

, ,就像不进行任何集成时所做的那样。

如果你看 http://rabbitmq.mydomain.local:55672/ 现在您将找到 RabbitMQ 的管理界面。MassTransit 为每种消息类型创建一个交换(将此类消息发送到该交换将分发给所有订阅者),您可以在其上放置授权规则。

授权规则可以采用每个用户正则表达式的形式,也可以集成到 LDAP 中。请参阅相关文档。

如果您要通过 WAN 并且没有 IPSec 隧道,您还需要 SSL - 该文档位于此处: http://www.rabbitmq.com/ssl.html 并且您启用 像这样.

就是这样!享受!

后记:如果您正准备进行一次冒险,作为副作用,它将帮助您管理所有基础设施,您可以看看 木偶. 。Puppet 是服务器的配置者和配置管理器;在这种情况下,您可能有兴趣使用 puppet 设置 SSL。首先,为您的域订购通配符子域证书,然后使用该证书签署其他证书:您可以将其委派 - 请参阅《 RabbitMQ指南》,其中指出“现在我们可以生成我们的测试证书授权使用的密钥和证书”。 - 为证书生成证书 - 签名重试,而不是创建新的权限 - 让RMQ将其用于SSL - 它对Internet有效。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top