是否抽象出服务总线/分布式消息传递的存在?

| 我现在正在一个单一进程空间中的系统上工作;我们将其分为几个过程,最初是在同一台机器上运行,但最终要分布在多个单独的计算机上。我倾向于使用ESB(NServiceBus,Rhino ESB),或者使用WCF +队列滚动处理我的应用程序的发布/订阅和请求/响应方案。 但是,我在抽象上挣扎:我不希望各个组件知道它们正在通过总线进行通信。当前连接各种服务的API可以很好地转换为这种模型,但是我想在客户端和服务器端隐藏它。缺少为客户端和服务器编写许多自定义代理代码的方法,有没有更好的方法来解决此问题?我意识到WCF可以根据服务定义自动生成代理,但是我真的很喜欢从Rhino Servicebus获得的其他一些东西。 理想情况下,我希望能够仅使用IoC交换不同的实现(带有和不带有ESB /消息层)(知道在通过接口传递的内容方面必须遵守约定),但是我不确定该去哪里。我真的希望不必将当前接口上的每个方法调用都更改为自己的离散消息类。 有什么资源/模式/工具可以帮助我做到这一点吗?如果我不清楚,请提出问题。谢谢。     
已邀请:
可能没有一个解决方案/现成的组件可以为您提供帮助。 问题一: 基本问题可以通过ESB解决,因为它提供了位置透明性和服务聚合。常规的ESB在服务使用者和服务提供者之间协调/代理请求。 举一个简单的例子: Service_A取决于Service_B Service_C取决于Service_B Service_B取决于Service_D 在这种情况下,最好的改进方法是: 将由“ 0”和“ 1”公开的合同定义为服务“ 2”,“ 3”和“ 0”中的外部依赖项(可能是Web服务,尽管ESB支持多种协议),并通过ESB使用。 首先,在ESB中,将这些服务“ 0”和“ 1”路由到同一实例上。 如果将
Service_D
Service_B
分别迁移为
Service_Dx
和ѭ10migrate,则可以将ESB重新配置为路由到新位置。同样,ESB可以配置为基于一些参数集(例如,将测试数据发送到“ 0”,将生产数据发送到“ 10”)路由到“ 0”或“ 10”。 问题2: 国际奥委会的问题可能很难解决。可能没有必要。 我假定向客户注入服务位置的信息,而不是从已知位置进行消费。实际上,这会将配置传输到客户端。这样,对于添加到系统中的每个新客户端,都需要一个单独的配置控件。这可能会导致后勤问题。 请发布您的最终解决方案,非常有兴趣了解您的方法。     

要回复问题请先登录注册