请求响应的WCF或服务总线会话

时间:2014-07-22 17:49:04

标签: wcf servicebus azureservicebus

我正在使用On-Premise Service Bus 1.1进行流程之间的通信。

我需要在端点之间执行请求 - 响应方法,并且需要决定是否使用WCF或总线(WCF的服务总线中继当前不可用于内部部署)。

  • WCF最容易通过生成的客户端代理与IIS主机(或自我主机)的潜在复杂性以及调用该服务的客户端的版本进行通信。

  • 对于Service Bus,每个远程服务创建两个队列(即 userService,userServiceResponse)然后使用会话。使用不同命令的灵活版本控制。这些队列的管理可能会变得复杂。

  • 对于我的项目,所有内容都在同一个子网内,如果需要,WCF端点可以直接相互通信

为了帮助我决定使用哪种技术,我的问题是:

  1. WCF将通过请求 - 响应服务总线使用在哪里?

  2. 是否有任何要实现的Service Bus队列的库 请求 - 响应消息(或任何强大的代码示例)?

  3. 如果队列中有多个发布者,我们如何向特定发件人返回回复?我们有多个serviceReponse队列,还是可以使用单个返回队列?

2 个答案:

答案 0 :(得分:3)

服务总线消息对于该请求可以具有SessionID唯一的服务,其中服务将接收消息,对其执行某些操作并使用ReplyToSessionID中具有相同ID的消息进行回复。这允许请求方基于如此

的会话ID接收
MessageSession sessionReceiver = _queueClient.AcceptMessageSession(_mySessionID,TimeSpan.FromSeconds(5));
sessionReceiver.Peek();

我认为这里的一个重要问题是Sync vs Async,无论你是希望请求方等待响应(WCF)还是稍后再回来,检查响应是否已准备就绪,但是服务总线这是一个商业决策。

link或此MSDN article可能会帮助您开始使用Req / Rep for SB。

答案 1 :(得分:0)

我认为决定使用哪种技术不是商业决策。起初,这是一个技术问题。 我不会选择一个非常依赖于操作系统的产品,而且最糟糕的是,它还为时过早。我们可以创建耦合(OS x Bus)并跨越挖掘的字段。 但是,这只是个人意见,可能有偏见,因为我不是Azure SB专家。

我同意@Tom,您的决定与同步/异步模型更相关。

在决定这个问题之前,我经常回答一些问题:

  1. 我们可以预览请求/分钟的速率和客户数量吗?
  2. 服务的性质是什么?对数据库进行繁重的处理逻辑或简单查询?
  3. 如果您愿意,我可以列出其他人,但这两个人可以轻松地帮助您做出决定,迫使您进行广泛的思考。