3

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

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

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

在这种情况下,WCF 是要走的路吗?

4

2 回答 2

2

WCF 是迄今为止 Microsoft 平台上最符合标准的堆栈。好消息是它对于不同的客户“开箱即用”非常灵活,如果有什么事情让你很伤心,大部分都可以通过自定义行为来改变,而不会有太多麻烦。

于 2009-12-23T03:38:30.103 回答
1

我通常推荐的另一种方法是在消息代理之间通过AMQP进行集成。那就是您可以使用推送范例而不是轮询范例(相比之下,它非常强大且可扩展)!

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

如果您的合作伙伴正在从同一个数据中心进行集成,那么您可以假设很少有网络分裂——这意味着您可以共享代理。另一方面,如果您在不同的网络上,您可以将代理设置联合模式。(运行rabbitmq-plugins enable rabbitmq_federation指向另一个代理)

现在您可以使用例如 MassTransit:

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 是服务器的配置者和配置管理器;在这种情况下,您会对使用 puppet 设置 SSL 感兴趣。首先,为您的域订购一个通配符子域证书,然后使用该证书签署其他证书:您可以委托它 - 请参阅 rabbitmq 指南,其中指出“现在我们可以生成我们的测试证书颁发机构将使用的密钥和证书。” - 为证书生成证书签名请求,而不是创建新的授权 - 并让 RMQ 将其​​用于 SSL - 它将对 Internet 有效。

于 2012-05-03T09:51:21.420 回答