NServiceBus官方文档翻译(一)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官方文档翻译(二)NServiceBus 入门
在这篇教程中我们将学习如何创建一个非常简单的由客户端向服务端发送消息的订单系统.该系统包括三个项目:Client.Server 和 Messages,我们将按照以下步骤来完成这个任务. 创建 Clie ...
- Spark官方文档翻译(一)~Overview
Spark官方文档翻译,有问题请及时指正,谢谢. Overview页 http://spark.apache.org/docs/latest/index.html Spark概述 Apache Spa ...
- Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)中一些知识点
Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Flume官方文档翻译--Flume 1.7.0 User Guide (unr ...
- Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)(二)
Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Logging raw data(记录原始数据) Logging the raw ...
- 蓝牙4.0——Android BLE开发官方文档翻译
ble4.0开发整理资料_百度文库 http://wenku.baidu.com/link?url=ZYix8_obOT37JUQyFv-t9Y0Sv7SPCIfmc5QwjW-aifxA8WJ4iW ...
- GreenDao官方文档翻译(上)
笔记摘要: 上一篇博客简单介绍了SQLite和GreenDao的比较,后来说要详细介绍下GreenDao的使用,这里就贴出本人自己根据官网的文档进行翻译的文章,这里将所有的文档分成上下两部分翻译,只为 ...
- Aircrack-ng官方文档翻译[中英对照]---Airdecap-ng
Aircrack-ng官方文档翻译---Airdecap-ng Description[简介] With airdecap-ng you can decrypt WEP/WPA/WPA2 capt ...
- Aircrack-ng官方文档翻译[中英对照]---Airmon-ng
Aircrack-ng官方文档翻译---Airmon-ng Description[简介] This script can be used to enable monitor mode on wire ...
- Aircrack-ng官方文档翻译[中英对照]---Aireplay-ng
Aircrack-ng官方文档翻译---Aireplay-ng[90%] Description[简介] Aireplay-ng is used to inject frames. Aireplay- ...
随机推荐
- vue-cli打包后,图片路径不对
在config文件夹下的 index.js 里面,查找build,在builid方法里面,添加一行:assetsPublicPath: './' 例: 在build文件夹下的utils.js里面,查找 ...
- BZOJ4145_The Prices_KEY
题目传送门 看到M<=16经典状态压缩的数据范围,考虑题目. 一道类似于背包的题目. 设f[i][j]表示前i个商店,物品购买状态为j. 先将f[i][j]加上w[i](到i的路费),转移一次, ...
- 【LNOI2014】LCA
题面 题解 考察\(dep[\mathrm{LCA}(i, x)]\)的性质,发现它是\(i\)和\(x\)的链交的长度. 那么对每个\(i\)所在的链打一个区间加标记,询问时算一下\(x\)所在的链 ...
- 4552: [Tjoi2016&Heoi2016]排序
4552: [Tjoi2016&Heoi2016]排序 链接 分析: 因为只询问一次,所以考虑二分这个数.显然是没有单调性的,但是我们可以二分所有大于等于mid的数中,是否有满足条件的x(而不 ...
- P3702 [SDOI2017]序列计数
P3702 [SDOI2017]序列计数 链接 分析: 首先可以容斥掉,用总的减去一个质数也没有的. 然后可以dp了,f[i][j]表示到第i个数,和在模p下是j的方案数,矩阵快速幂即可. 另一种方法 ...
- AGC 015 E - Mr.Aoki Incubator
E - Mr.Aoki Incubator 链接 题意: 数轴上有N个黑点,每个点都有一个方向向右的正速度v.当两个点在同一个位置上重合时,若其中一个是红色,另一个也变成红色.保证没有相同速度或初始坐 ...
- eclipse项目转移至IDEA与IDEA tomcat报错(idea自带tomcat版本太高)与war包部署到win服务器与idea提交git的总结
eclipse导出项目到idea时,不要导出target: idea打开eclipse项目后,出现junit找不到的问题,原因是jar包缺失,而maven配置的低版本的junit也显示找不到,解决办法 ...
- 【JUC源码解析】DelayQueue
简介 基于优先级队列,以过期时间作为排序的基准,剩余时间最少的元素排在队首.只有过期的元素才能出队,在此之前,线程等待. 源码解析 属性 private final transient Reentra ...
- vs2012 与 win7 不兼容的问题
Visual Studio 2012 与此版本的 Windows 不兼容 突然出现的,如下图: 这个是网上找的图,我的没来得及截图就修复了,基本一致,只是我的是win7 64位系统,所以安装位置那里是 ...
- idou老师教你学Istio:如何用 Istio 实现速率限制
使用 Istio 可以很方便地实现速率限制.本文介绍了速率限制的使用场景,使用 memquota\redisquota adapter 实现速率限制的方法,通过配置 rule 实现有条件的速率限制,以 ...