小菜白话搭架子5:云平台上的那个Service Bus

说说Windows Azure上的那个Service Bug,

Service Bus:

多层次的云端程序组件之间的逻辑交互,通过Service Bus进行消息的转换与传递实现相互通信。从而实现企业级系统的分布式。

Service Bus存在于多层系统的中间层,不同于常见的直接消息传递(Tcp,Http)而是层之间通过消息将工作单元信息推送到Service Bus供给其他层领取处理。

Service Bus提供了队列与主题实现了消息的中转与传递。发送到队列中的消息均由一个接收方使用。主题支持发布/订阅模式,会为注册到主题中的每个订阅提供已发布的信息。

如图:

小菜白话搭架子5:云平台上的那个Service Bus_第1张图片

通信机制的多项优势:

异步消息传递,消息的创建者与使用者无需同时关联,Service Bus通过可靠方式存储消息,直到使用方准备好接收消息。

随着应用程序工作的时间增强,系统负荷会逐步增加,此时我们可以通过更多的辅助进程从队列中读取消息,辅助进程可采用拉的方式平衡负载,由于不同的辅助计算能力不同,于是可采用“竞争者使用模式”白话为“能者多劳”。

小菜白话搭架子5:云平台上的那个Service Bus_第2张图片

 

Service Bus的代码实现:

其实实现方法和之前微软系的Msmq, Wcf的消息传递方式较相似,当我们使用Widows Azure时,系统已为我们建立了相应的Service Bus管道了,我们需要做的就是将我们的工作信息单元当作消息传递到Service Bus中。

在应用程序中新建Service Bus的辅助类命名为QueueConnector.cs.

为了链接上Windows Azure为我们提供的Service Bus我们需要其为我们提供的Namespace,IssuerName,IssuerKey参数。

小菜白话搭架子5:云平台上的那个Service Bus_第3张图片

我们将QueueName定义为“OrdersQueue”,也就是说开辟的这一个Service Bus我们只是用来实现Orders的消息处理。

在类中添加初始化代码:

小菜白话搭架子5:云平台上的那个Service Bus_第4张图片

创建CreateNamespaceManager方法:

小菜白话搭架子5:云平台上的那个Service Bus_第5张图片

在Global.asax中实现对Initialize的调用:

目前我们已在应用程序中实现了对Windows Azure平台的Service Bus的使用的API。接下来就是在程序中如何调用这个API。

我们需要将逻辑实体序列化传递到Service Bus中。

小菜白话搭架子5:云平台上的那个Service Bus_第6张图片

本业务逻辑为创建新Message的逻辑执行之后将消息通过API传递到Service Bus中,并跳转到Submit的Action中。

使用Service Bus中的消息。

小菜白话搭架子5:云平台上的那个Service Bus_第7张图片

我们可以发现消息的传递类似于我们之前的Msmq,这样我们就实现了消息产生着与消息消费者之间的解耦,同时实现了消息的异步持久化。

之后我们需要在云端完善配置实现不同的角色与Service Bus之间的的联系。

 

 

 

你可能感兴趣的:(service)