基于消息的软件架构模型演变
目录
系列主题:基于消息的软件架构模型演变
系列主题:基于消息的软件架构模型演变
一、NServiceBus的特性
1、高性能和可扩展性
可以广泛应用于许多业务领域,可扩展性和性能都经过了实战检验。
2、具有自动重试的可靠性集成
通过配置机制提供基于消息通讯的的最佳实践方案,能够识别错误响应并自动重试。
3、工作流和后台任务调度
通过Saga来完成长时间运行的流程定义和管理功能,提供强大而灵活的工作流功能。
5、通过发布/订阅来减少耦合
提供了发布/订阅机制。可扩展、可配置、易于理解和易于使用。
6、易于扩展和配置
多个灵活的扩展点和配置选项,NServieBus可以根据用户需求对各个特性进行自定义配置。
7、支持广泛的消息传输技术
提供了MSMQ, RabbitMQ, SQL Server, Windows Azure Queues,Windows AzureService Bus消息传输机制,当然你也可以自定义或者选择由 区开发的消息传输方案。
二、.NET平台下其他ESB介绍
1、Biztalk
在微软的世界里,BizTalk Server一直被用来解决异构平台上应用程序之间数据交换的复杂集成问题。BizTalk同样提供了发布/订阅模式实现松耦合的架构。有时候你需要将现有的代码和一个运行在不同技术和协议下的历史遗留程序集成,这是一个经典的企业应用程序集成(Enterprise Application Integration-EAI)的场景。在这种场景之下,可以在业务服务之间使用NServiceBus,在这些服务的边界之内,你可以使用BizTalk与现有的历史遗留应用进行集成。
2、 新建一个类型为Console Application的客户端:NBus.Practice.GreetingClient,客户端会命令服务端输出“Hello World”。
安装nuget包:
1 | Install-Package NServiceBus |
3、 初始化一个Bus,然后给服务端发出命令。
NServiceBus提供了多个Host方案,应用程序自己Host或者使用NServiceBus.Host程序来Host应用程序。当然你还可以将NServicBus程序Host在一个Windows服务中。这个客户端我们选择Host在客户端自身当中。
运行结果:当我们在客户端中按”Enter”键,服务端会收到消息并输出“Hello World”。
8、刚才服务端处理完GreetingCommand并发布了GreetingEvent事件,我们接下来新建一个类型为Console Application的事件订阅者:NBus.Practice.GreetingSubscriber。
事件订阅者跟之前一样需要创建并启动一个bus。
9、新建一个Congratulation.cs来处理GreetingEvent消息:
1 2 3 4 5 6 7 | public class Congratulation:IHandleMessages<GreetingEvent> { public void Handle(GreetingEvent message) { Console.WriteLine( "Received greeting event id:{0}, time{1}, congratulations, you have learned NServiceBus." ,message.Id,message.Times); } } |
10、订阅者的消息路由如何配置/p>
1 2 3 | < MessageEndpointMappings > < add Messages="NBus.Practice.GreetingMessage" Endpoint="Nbus.Practice.HelloWorld.Server" /> </ MessageEndpointMappings > |
这句配置的含义是:订阅EndPoint为Nbus.Practice.HelloWorld.Server且消息定义在程序集为NBus.Practice.GreetingMessage中的消息。
由此可见根据程序的角色不同,配置文件的配置具有不同的含义。
11、在事件的发布/订阅模式中,订阅者可以是一个或多个,我们将新建第二个订阅者来展示此功能。新建一个类型为Class library的程序集: NBus.Practice.GreetingAnotherSubscriber。
这次的程序之所以要换成Class library是因为我们本次要使用NServiceBus.Host来Host此程序。
1 | Install-Package NServiceBus.Host |
NServiceBus会为项目自动添加一个EndpointConfig.cs文件,我们将在此文件中配置bus:
1 2
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!
软件测试–概念篇
上一篇
2018年7月9日
使用高通QXDM工具抓取Modem Log的操作方法(独家!)
下一篇
2018年7月9日
|