NServiceBus 概况

NServiceBus 概况

NServiceBus 被设计用来组合面向业务的服务,它并不是用来替代诸如 WCF 一类的RPC技术。

NServiceBus 不只包含通信模块,像其他成熟的SOA和DDD项目一样,它使用了多种组合的方法和技术。

本篇文章探讨了 NServiceBus 和微软相关产品的相似点和不同点。

相比 BizTalk 更接近 WCF

当人们听到“服务总线”这个名词时,一般会描绘出如上图所示的画面,像 BizTalk 一样所有的通信都经过一个中央结点。这实际上描述的是一个代理的架构设计,而不是总线的架构设计。在总线架构中,物理实体并不是必须的。在这方面,NServiceBus 相比 BizTalk 与 WCF 更相似。

没有物理的 WCF 结点可以指向到网络拓扑结构中。NServiceBus 像 WCF 一样,是基础架构的一部分,运行进程内给定的应用程序代码。

就像你可以编写承载 WCF 的宿主进程并激活它一样,NServiceBus 也是如此。NServiceBus 中的总线是一个虚拟的概念,它指的是运行在各种应用程序之间的框架对象集合。你可以把它想象成运行在你的代码中的P2P网络,如下图:

有何不同?

[就像苹果与橘子的不同。]

NServiceBus 的设计原则使得它的鲁棒性可以经受住长期的考验。事实证明,经过无数的技术更迭,NServiceBus 所基于的消息队列不光是一个明智的实现选择,更体现了其最主要的架构思想。在 NServiceBus 的字典中不存在阻塞这个词。

作为一个通用的通信技术,WCF 并不强制使用消息队列模式。相反,NServiceBus 采用这种模式,这对架构的影响是极其深远的。

当依照 WCF 所支持的传统 RPC 技术进行系统开发时,虽然可以简单直接地使系统可以工作,但 RPC 原则在本质上会对系统的可扩展性和容错性造成阻碍。在这一点上,即使是增加更多的硬件,收效也是微乎其微的。虽然 WCF 并不强制开发者沿着这条路走下去,但它也不能阻止问题的发生。NServiceBus 可以让你从一开始就避免这些问题。

单向消息传递的可扩展性

在可靠性、可用性和可扩展性中,架构应该首先关注可靠性,毕竟一个产生不可靠结果的高可用性和可扩展性的服务也没有什么价值的。消息队列一个显著的价值就是它可以应对各种错误场景。

就算错过了几分钟的消息记录,内部的消息仍然不会丢失。

学习曲线

当花了一些时间适应后,使用 NServiceBus 编写代码是相当简单的,代码将比以前更加简短,当然也更加容易进行单元测试。一个金融服务领域的架构师这样说:

虽然熟悉关于消息传递的思想需要花费数个星期,但是我们的开发人员只需要一个星期就可以完成一个发布/订阅的解决方案,这确实的证明了 NServiceBus 让编码变的多么简单。我们才刚开始 NServiceBus 的旅程,但已经因为它所能提供的而感到兴奋了。——Charlie Barker

英文原文:http://docs.particular.net/nservicebus/overview

 
 
分类: NServiceBus
标签: NServiceBus

NServiceBus 概况的更多相关文章

  1. NServiceBus官方文档翻译(一)NServiceBus 概况

    NServiceBus 概况 NServiceBus 被设计用来组合面向业务的服务,它并不是用来替代诸如 WCF 一类的RPC技术. NServiceBus 不只包含通信模块,像其他成熟的SOA和DD ...

  2. 使用NServiceBus开发分布式应用

    系列主题:基于消息的软件架构模型演变 NServiceBus 是一个.Net平台下开源的消息服务框架,这类产品有时也被称作ESB(Enterprise Service Bus)--企业服务总线.NSe ...

  3. SOA、ESB、NServiceBus、云计算 总结

    SOA SOA 是通过功能组件化.服务化,来实现系统集成.解决信息孤岛,这是其主要目标.而更进一步则是实现更快响应业务的变化.更快推出新的应用系统.与此同时,SOA 还实现了整合资源,资源复用. SO ...

  4. NServiceBus 更换服务名及队列名称

    可以通过起动时的参数处理 NServiceBus.Host.exe /serviceName:”服务名称” /endpointName:”默认队列名称”

  5. NserviceBus+rabbitmq

    Ok so I figured this out after looking a bit at the code and the requirements for amqp URI and it sh ...

  6. JavaScript 2016年的概况

    国外的网站stateofjs.com根据超过九千位开发人员的问卷调查,发布了2016年JavaScript的年度概况报名. 注:本文翻译的部分可能存在不准确的情况,请以原文为准. 调查结果的报告目录结 ...

  7. NServiceBus 结合 RabbitMQ 使用

    参考官方教程: Step by Step Guide 新建4个项目: A Console Application named Client A Console Application named Se ...

  8. NServiceBus教程-持久化配置

    当配置在NServiceBus v5持久性,秩序是非常重要的.最后赢得持久性配置选项.我们看看一些例子. 示例1 在本例中最后一个配置选项将会覆盖前面的所有选项. v5.2 v5.0 编辑 var c ...

  9. NServiceBus教程-持久化

    NServiceBus的各种特性需要持久性.其中有超时.传奇和订阅存储. 四个持久化技术在NServiceBus在使用: RavenDB nHibernate 内存中 MSMQ 读到安装Raven D ...

随机推荐

  1. 国产与第三方库FFmpeg SDK

    一个.编译并安装第三方库 1. libfaac # tar -zxvf faac-1.28.tar.gz # cd faac-1.28 # ./configure --prefix=/opt/YOUR ...

  2. Linux 火狐浏览器安装Flash插入

    Linux系统安装完毕,找到Firefox浏览器和视频播放器不能总是提示安装Flash.而据火狐浏览器的提示Flash插件安装总是失败,能手动安装Flash插件啦. 到Flash官网:http://g ...

  3. c++界面设计皮肤工具

    1. 先进行软件界面设计,确定软件界面美术包装方案 2. 依据软件界面美术设计装方案制作对应的图片,图片格式请參见AUDK的帮助文档或皮肤工具SkinTool 的 Demo 3. 打开皮肤工具 Ski ...

  4. 大数据系列修炼-Scala课程01

    简介 由于本人刚毕业,也是从事软件开发相关的工作.想再学习一下关于大数据.移动互联网.云计算相关的技术.为我的未来打好基础.并且从零开始学习大数据相关的知识,脚踏实地的走好每一步,听行业前辈说毕业生刚 ...

  5. 经典算法题每日演练——第十一题 Bitmap算法

    原文:经典算法题每日演练--第十一题 Bitmap算法 在所有具有性能优化的数据结构中,我想大家使用最多的就是hash表,是的,在具有定位查找上具有O(1)的常量时间,多么的简洁优美, 但是在特定的场 ...

  6. 判断sqlserver对象是否存在

    --查看对象是否已经存在  --数据库是否存在     --if exists (select * from sys.databases where name = ’数据库名’)    --  dro ...

  7. TFTP server组态

    TFTP server组态 2014-10-31北京海淀区  张俊浩 一.TFTP(Trivial File Transfer Protocol,简单文件传输协议或称小型文件传输协议) 是一种简化的文 ...

  8. ASP.NET MVC 文件上传和路径处理

    ASP.NET MVC 文件上传和路径处理总结 目录 文件的上传和路径处理必须解决下面列出的实际问题: 1.重复文件处理 2.单独文件上传 3.编辑器中文件上传 4.处理文章中的图片路径 5.处理上传 ...

  9. Android_开发人员经常使用的颜色

    Android开发中经常要用一些个性化的颜色,然而茫茫的RBG颜色对比表,往往给人眼花缭乱的感觉,更别说从中轻易选出一两种比較惬意的颜色,以下我就总结一下开发中经常使用到的比較绚丽的颜色. 以下是经常 ...

  10. .NET Framework 各版本区别

    .NET Framework 各版本区别 .NET Framework 1.1 自1.0版本以来的改进:自带了对mobile asp .net控件的支持.这在1.0版本是以附加功能方式实现的,现在已经 ...