【新书推荐】《ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务》 带你走近微服务开发...

《ASP.NET Core 微服务实战》译者序:https://blog.jijiechen.com/post/aspnetcore-microservices-preface-by-translator/

“微服务”的概念在 2014 年正式提出之后,越来越多的团队开始用它来设计自己的业务系统,各种微服务框架和开发过程管理方法也同时兴起、不断成熟。微服务设计方法清晰地定义了各个开发团队的业务边界,微服务框架以不同的方式实现了服务之间的协作与集成,根据康威定律我们可以推导这样一种产品开发方法必然会映射到人员协作方式上去。还有同步兴起的 DevOps 运动,它及时恰当地补齐了微服务开发过程中的技术方法,让微服务生态如虎添翼。

经过几年的积累,人们开始意识到,微服务从概念到实现,最后推广到整个组织,这整个过程期间存在大量的挑战:服务之间的依赖管理、大量服务实例的运维、单个服务的独立部署,以及承担不同角色的微服务在同一个生态系统中的身份认证等,都开始成为微服务团队需要直接面对的挑战。与此同时,各类微服务框架也层出不穷,让开始接触微服务的开发人员眼花缭乱,既难以区分它们的优劣、做出合适的选型,又难以找到高效的学习路径。

在 .NET 技术领域,微服务的挑战比起很多其他技术栈有过之而无不及。.NET 技术在企业应用开发领域有着长久的运用,因此有大量的存量应用需要面向服务化改造。而 .NET Core 技术作为新一代 .NET 技术方向,无论是这一技术生态自身的完整性,还是基于它的微服务框架体系,都处于持续的完善之中。最后,在传统的企业应用开发领域,并没有普遍采用持续交付等实践,当时所开发的应用也难以满足云原生应用所要求的诸多特性,因此改造过程难度较大。

所幸 .NET Core 作为全新的 .NET 技术,它不仅完全开源、跨平台,更面向云原生开发进行了大量而细致的优化。它完全模块化,不依赖特定操作系统,同时其文件系统、网络和配置等基础功能模块对跨平台、命令行等现代化轻量级开发所要求的特性提供了优秀的支持。正是由于 .NET Core 作为基础开发平台天然适合云原生开发,因此基于 ASP.NET Core 开发微服务也天然具有这些优势。

本书“麻雀虽小,五脏俱全”,它从 .NET Core 开发环境安装开始,紧接着详细介绍了持续交付、API 优先和测试驱动等重要开发方法和思想。本书探讨了人们对微服务的各种理解,以实际项目从各方面体现出本书作者对微服务的全方面诠释,引导读者在直观的体验中建立自己的理解;同时,本书还主张把微服务和云原生实践结合运用,书中通过解析十二因子应用的各项特性,并分析它们在本书示例项目中的体现,让读者对微服务和云原生的结合更为体系化。在本书的讲解过程中,每当遇到可能存在不同做法的场景,作者总是详细论述各项考量、仔细比较各种可能的做法,引发读者思考;同时,本书还大量探讨了传统应用开发中的典型做法,以及在微服务和云原生开发时应该采纳的新方法,仔细解析其中缘由,为存量应用的改造提供了直接指导。

在本书英文原版写作时,.NET Core 还处于早期的 1.1 版本,而现在中文版翻译期间,.NET Core 的最新版已经是 2.2 版了。为了让读者在基于最新版 .NET Core 练习书中的示例项目时更为顺畅,译者对书中所涉及的示例代码进行了升级。在升级过程中,部分代码需要经过改写才能与新版本的运行时或者依赖模块配合工作。读者在使用书中的代码时,请自行将书中所涉及的 GitHub 仓库地址由 https://github.com/microservices-aspnetcore 替换为 https://github.com/microservices-aspnetcore-zh ,在使用 Docker 镜像的方式运行示例项目时,将书中的 Docker 镜像由 dotnetcoreservices 前缀替换为 dotnetcoreserviceszh。如果使用翻译版的代码遇到问题,请在这些 GitHub 仓库中提交 issue,译者将乐意为读者解答各类常见问题。

限于译者水平等各方面原因,本书在翻译时难免留下一些纰漏与错误,如承蒙读者指正,则译者将倍感荣幸,其他读者也将一起获益。请访问本书中文版代码仓库 https://github.com/microservices-aspnetcore-zh 或者使用电子邮件 jijie.chen@outlook.com 与译者取得联系。

本书中文版的引进必将为 .NET 技术领域的微服务实践和云原生技术的普及做出重要贡献。在此,译者特此感谢清华大学出版社的大力支持,感谢张善友老师为本书译文提出的宝贵建议,感谢曾一起共事的翻译小组 WorkSharp 的同事们、特别是刘夏先生的指导,感谢社区中关注本书的各位热心人士的激励和帮助。最后,最需要致以真诚感谢的,是时常关心我的翻译工作、提醒我及时休息的父母;以及忍受我用几个月的业余时间来翻译、却仍然要在翻译时随时提供参谋的爱人张圣奇:是你们无限的耐心和持续的支持才让本书的翻译工作得以顺利完成。

以下是我写的推荐:


几乎所有的当代软件工程都专注于缩短产品的上市时间。微服务是一种以服务为导向的演进式体系结构模式, 它优雅地消除了组织摩擦, 让团队和工程师们拥有在不断地进行交付、迭代和改进时所需的自主权。可以预见,云原生时代的应用都是以微服务的形式出现。

关于微服务,有不少书籍堪称经典。但结合最新的Web框架ASP.NET Core来讲解微服务的书籍却不多。本书完整的介绍了使用ASP.NET Core进行微服务开发时的思路、步骤和工具,是一本不可多的必读手册,本书由于成书较早,其示例代码所基于的.NET Core版本略显陈旧,译者的努力一定程度上弥补了这一问题。最重要的是,书中用大量篇幅讲述的关于开发功能强大且具有高伸缩性和韧性的微服务的思想不会过时的。另外,本书还关注使用ASP.NET Core实现云原生模式,以及要让应用成为云原生生态中的好公民需要关注的方方面面。这些在具体技术框架之外的经验与思考,更是弥足珍贵。

微服务开发并非只是将代码物理分离,开发过程中还要面对与微服务开发模式一同到来的服务集成、团队协作等一系列新挑战。相对于单体应用,开发人员之所以选择微服务,一个很重要的原因就是想通过一种能将服务独立地、快速地部署上线的能力。本书讲解了ASP.NET Core是如何通过与容器技术的无缝兼容轻松提供这一能力的。微服务的职责单一,这意味着服务之间需要相互调用才能完成多个任务,或者各方合力才能完成较大的任务。服务间的依赖与集成也是一项不可忽视的基本议题。基于事件集成,以及借助服务发现机制为相互依赖的服务提供灵活调度是两项常见的服务集成方法,本书对这两种方法都进行了完整介绍。由于各个后端服务未必直接面对用户,因此微服务系统中的安全认证也与直接面对用户的系统有所不同,本书深入讲解了几种常见的安全机制,供开发者根据实际情况选用。

与本书基于ASP.NET Core开发微服务的主题相呼应,ASP.NET Core本身就是一系列的模块化组件,可添加到现有应用中。同时,由于ASP.NET Core提供自宿主Web服务器对REST风格接口的支持非常友好,自身量级足够轻量并且性能强劲,因此ASP.NET Core自然适合作为微服务开发的基础框架。有了优秀的框架,接下来我们要考虑的是,如何避免再次陷入用一项新技术继续开发“新版本的一溜单体应用”。本书通过实际项目的深入演练,以及同步的理论讲解,让读者在面对微服务生态构建过程中的各种场景时,能做好充分准备。

不过我个人认为,这本书还是缺少了一部分关于微服务生态系统的内部编排的内容, 容器是微服务部署的最佳方式,容器作为现代基础设施上一种更细粒度的抽象,能有效降低占用空间和缩短启动时间、同时由于它提供了一种新的组件重用性级别,所以能轻松地集成到整个开发生态系统中(例如持续集成和交付生命周期),微服务生态治理包括调度(包括部署、复制、扩展、复活、重新调度、升级、降级等)、资源管理(内存、CPU、存储空间、端口、IP、镜像等)和服务管理(即使用标签、分组、命名空间、负载均衡和准备就绪检查将多个容器编排在一起)。

一直以来,在我运营的“dotnet跨平台”公众号和各种线上线下场合,我与很多朋友探讨和分享过微服务开发相关的经验。曾有很多朋友关心,有没有微服务相关的入门材料。这本书借助实际项目,系统地梳理了微服务开发的脉络,给初学者提供了行之有效的学习素材。所以本书的引进是以见值得高兴的事情。

书籍目录如下:

第1章 ASP.NETCore基础
1.1 核心概念
1.1.1 CoreCLR
1.1.2 CoreFX
1.1.3.NETPlatformStandard
1.1.4 ASP.NETCore
1.2 安装.NETCore
1-3开发控制台应用
1.4 开发第一个ASP.NETCore应用
1.4.1 向项目添加ASP.NET包
1.4.2 添加Kestrel服务器
1.4.3 添加启动类和中间件
1.4.4 运行应用
1.5 本章小结
第2章 持续交付
2.1 Docker简介
2.1.1 安装Docker
2.1.2 运行Docker镜像
2.2 使用Wercker持续集成
2.3 用Wercker构建服务
2.3.1 安装Wercker命令行工具
2.3.2 添加wercker.yml配置文件
2.3.3 运行Wercker构建
2.4 使用CircleCI持续集成
2.5 部署到dockerhub
2.6 本章小结
第3章 使用ASP.NETCore开发微服务
3.1 微服务的定义
3.2 团队服务简介
3.3 API优先的开发方式
3.3.1 为什么要用API优先
3.3.2 团队服务的API
3.4 以测试优先的方式开发控制器
3.4.1 注入一个模拟的仓储
3.4.2 完成单元测试套件
3.5 创建持续集成流水线
3.6 集成测试
3.7 运行团队服务的Docker镜像
3.8 本章小结
第4章 后端服务
4.1 微服务生态系统
4.1.1 资源绑定
4.1.2 服务间模型共用的策略
4.2 开发位置服务
4.3 优化团队服务
4.3.1 使用环境变量配置服务的URL
4.3.2 消费RESTful服务
4.3.3 运行服务
4.4 本章小结
第5章 创建数据服务
5.1 选择一种数据存储
5.2 构建Postgres仓储
5.2.1 创建数据库上下文
5.2.2 实现位置记录仓储接口
5.2.3 用EFCore内存提供程序进行测试
5.3 数据库是一种后端服务
5.4 对真实仓储进行集成测试
5.5 试运行数据服务
5.6 本章小结
……
第6章 事件溯源与CQRS
第7章 开发ASP.NETCoreWeb应用
第8章 服务发现
第9章 微服务系统的配置
第10章 应用和微服务安全
第11章 开发实时应用和服务
第12章 设计汇总

ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务 已经在京东上线,京东连接: https://item.jd.com/12611071.html

组织大家一起来团购这本书,看情况如果人多的话我们是否可以一起组织一次团购活动。因此创建了一个团购微信群。

如果你扫码无法进入微信群,请加微信geffzhang,我拉你入群。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Core验证ASP.NET密码

.NET Core验证ASP.NET密码随着 .NETCore的持续更新和完善,越来越多的机构已经选择或者升级为 .NETCore。但由于技术不完全相同,不可能所有应用/数据库都能无缝迁移,因此 ASP.NETCore和传统 ASP.NET之间多少会存在一些挑战,需要更多…

linux下I2C驱动发送IO时序,I2C驱动情景分析——怎样控制I2C时序

内核版本:linux-3.4.2源程序: linux-3.4.2\drivers\i2c\busses\I2c-s3c2410.c这次要解决的问题是:如何配置soc的I2C模块,输出想要的时序波形?关于Linux里I2C驱动的架构,在转载的文章讲得相当透彻(《linu…

蓝桥杯2017初赛-外星日历-数论

题目描述 某星系深处发现了文明遗迹。他们的计数也是用十进制。 他们的文明也有日历。日历只有天数,没有年、月的概念。 有趣的是,他们也使用了类似“星期”的概念,只不过他们的一个星期包含了9天,为了方便,这里分别记…

ubuntu14.04安装linux公社,Ubuntu 14.04下安装IT++

Ubuntu 14.04 下安装 IT(itpp)(官方二进制包安装版)温馨提示:虽然没有尝试,不过直接运行最后一步应该也可以成功。另外,既然有简单的方法,不到破不得以还是不要尝试麻烦的方法了。1、安装 FFTW3sudo apt-get install libfftw3-dev…

.NET CORE(C#) WPF 值得推荐的动画菜单设计

微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏。.NET CORE(C#) WPF 值得推荐的动画菜单设计阅读导航本文背景代码实现本文参考源码1. 本文背景YouTube上老…

蓝桥杯2017初赛-k倍区间-前缀和

题目描述 给定一个长度为N的数列&#xff0c;A1, A2, … AN。 如果其中一段连续的子序列Ai, Ai1, … Aj(i < j)之和是K的倍数&#xff0c;我们就称这个区间[i, j]是K倍区间。 你能求出数列中总共有多少个K倍区间吗&#xff1f; 输入 第一行包含两个整数N和K。(1 < N, K …

【在路上3】大数据离线分析快递的派件时效

【在路上1】快递物流大数据的由来【在路上2】快递的运单轨迹几乎人人都用过快递&#xff0c;如果说用户最在意什么&#xff1f;那必然是谁家送得快&#xff01;这也是整个快递物流行业被诟病最多的地方。都知道顺丰送得快&#xff0c;但价格摆在那里&#xff0c;且它的市场份额…

DevExpress作为企业赞助商加入.NET基金会

.NET基金会是一个独立的非营利组织&#xff0c;于2014年成立&#xff0c;旨在围绕 .NET 不断增长的开源技术集合&#xff0c;促进开放开发和协作。它是商业和社区开发人员的论坛&#xff0c;通过促进开放性&#xff0c;社区参与和快速创新来增强.NET生态系统的未来。要使.NET 基…

如何快速融入团队(八)

作者&#xff1a;邹溪源&#xff0c;长沙资深互联网从业者&#xff0c;架构师社区特邀嘉宾&#xff01;一感慨时间流逝&#xff0c;韶华易老似乎是我们与生俱来的焦虑&#xff0c;仿佛每当过年的时候总会感觉&#xff0c;呀&#xff0c;我这一年似乎什么都没干呀。你看&#xf…

Docker:使用本地卷和tmpfs挂载

卷是为Docker容器保留数据的首选方法。在本文中&#xff0c;将展示如何创建和使用卷来实现持久性&#xff0c;以及如何使用tmpfs来实现临时存储。最简单的说&#xff0c;创建和安装由本地目录支持的卷如下所示&#xff1a;# make host directory mkdir -p /data# create docker…

ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程

基础教程之导出Pdf收据说明本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出要点导出PDF数据自定义PDF模板导出单据如何批量导出单据导出特性PdfExporterAttributeOrientation&#xff1a;方向(横向或纵向)PaperKind&#xff1a;纸张类型&#xff08;默认A4&#xff09;…

宅家过年 | 程序员消遣活动指南

点击上方蓝字关注“汪宇杰博客”导语大家新年好&#xff01;今年的春节由于病毒疫情不适合外出写代码了&#xff0c;那么程序员宅在家里可以干些啥呢&#xff1f;我给大家推荐一些能抱着电脑一边取暖一边消遣的好项目。命令行版星球大战你有没有看过 ASCII ART 版的《星球大战》…

angular 构建可以动态挂载的配置服务

angular 构建可以动态挂载的配置服务Intro在 angular 中可以指定 environment 来区分不同环境下的配置&#xff0c;然而 environment 中的配置会在打包时是固定的&#xff0c;想要像挂载 asp.net core 里的 appsettings.json 的配置文件一样挂载 environment 是做不到的&#x…

关于KN95口罩:可以使用多久?要不要呼吸阀?怎么佩戴?

再说一遍&#xff1a;为啥要戴口罩&#xff01;冠状病毒在人与人之间传播&#xff0c;通常是在某人接触到感染者的分泌物的时候。病毒的传染力直接影响了传播途径。目前流行的新型冠状病毒的传播途径尚不清楚&#xff0c;但是按照以往的经验&#xff0c;接触到感染者咳嗽或打喷…

android 拼音搜索汉字,android开发之使用拼音搜索汉字

国庆回了趟家&#xff0c;昨天真不想走&#xff0c;离家近的感觉太好。唉&#xff0c;不扯这些&#xff0c;说说今天的正事吧。上篇博客中介绍了自定义AutoCompleteTextView &#xff0c;但是用到了一个很蹩脚的技术&#xff0c;就是我们事先把每个汉字的拼音当作一个字段输入进…

从壹开始【学代码】|| 我开发中的用到的几个框架

本文梯子一、单层小Demo&#xff0c;开发小页面利器二、通用仓储三层模型&#xff0c;简单又封装性好三、通用权限框架开发全家桶&#xff0c;开箱即用服务子项目四、Blog.Core去Service层版本五、DDD-Lite 思想进行开发项目六、领域驱动设计&#xff0c;半落地项目七、企业级论…

C#的未来:简化参数空值验证

乍一看&#xff0c;提案#2145 似乎是 C# 8 可空引用类型特性的逻辑扩展。其基本思想是&#xff0c;开发人员不需要再显式地向接受非空参数的方法添加参数空值检查。然而&#xff0c;人们对于这个特性的争议很大。本文试图说明这些选项以及它们的利弊&#xff0c;以便读者能够得…

android一键截图代码,偷偷告诉你ADB命令葵花宝典【一键截图和录屏】

先导预告作为一名测试工程师&#xff0c;每天可能都会面临从不同的设备导出截图或视频的工作&#xff0c;有些可能是bug截图或bug回放视频&#xff0c;有些截图可能是提供给PM或UI验收等等。 常规操作是iOS设备可以借助于iTools等工具导出&#xff1b;而安卓设备可能需要从设备…

【C# 调用 Go 语言】0x1 Hello Golang

C# 和 Golang 都不是世界上最好的语言。在不同的业务场景下&#xff0c;C# 和 Golang 各有所长。如果要编写一个网络程序&#xff0c;显然 Golang 更擅长&#xff0c;而如果要编写一个桌面 GUI 程序&#xff0c;那么 C# 简直不要太爽。我们完全可以将两者用在同一个项目中&…

云原生时代, 选择.NET Core

在容器、Kubernetes、DevOps&#xff0c;以及微服务等技术的推动下&#xff0c;2020年云原生势不可挡。 .NET Core 也非常契合 云原生对应用运行时的不同需求&#xff0c;.NET Core和kubernetes 同年诞生发展&#xff0c; 2018年kubernetes 已经奠定了在容器编排领域的王者地位…