我的雇主是特定市场的软件供应商。我们的客户使用Web服务将我们的系统与其他人集成我们使用Microsoft技术,我们的Web服务在ASP.NET和WCF中实现。
现在是审查我们当前服务的时候了,并为未来的集成提出了公司标准。我正在阅读“企业集成模式”,我也一直在寻找nServiceBus和Mass Transit。这些可能会简化合同版本控制和单元测试等问题,但它们似乎对提供内部服务总线最有用,而不是将服务暴露给外部客户端。
我们的客户在许多不同的平台上,并要求我们的服务符合标准。这可能对不同的人意味着不同的东西,但我认为可以安全地假设他们想要访问用WSDL描述的Web服务。
在这种情况下,WCF是否可行?
答案 0 :(得分:2)
WCF是Microsoft平台上最符合标准的堆栈。好的一点是,对于不同的客户来说,它“开箱即用”非常灵活,如果有些事情会让你感到悲伤,那么大多数都可以通过自定义行为进行更改而不会有太多麻烦。
答案 1 :(得分:1)
我通常建议的另一种方法是在消息代理之间进行AMQP的集成。那就是你可以使用推送范式而不是轮询范式(相比之下,它非常强大且可扩展)!
您可以在本地设置自己的代理,例如RabbitMQ。然后,您可以让您的集成合作伙伴设置一个。 (简单:just download it)。
如果您的合作伙伴正在从同一个数据中心进行集成,那么您将保存以假设很少网络拆分 - 这意味着您可以共享代理。另一方面,如果您在不同的网络上,则可以在federation mode 中设置代理。 (运行rabbitmq-plugins enable rabbitmq_federation
和point到其他经纪人)
现在您可以使用例如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并启用it like this。< / p>
就是这样!享受!
Post scriptum:如果你想要一个可以帮助你管理所有基础设施作为副作用的冒险,你可以看一下puppet。 Puppet是服务器的配置和配置管理器;在这种情况下,您有兴趣使用puppet设置SSL。首先,为您的域订购一个通配符子域证书,然后使用该证书签署其他证书:您可以委派 - 请参阅rabbitmq指南,其中说明“现在我们可以生成我们的测试证书颁发机构将使用的密钥和证书“。 - 为证书生成证书签名请求而不是创建新权限 - 让RMQ将其用于SSL - 它将对互联网有效。