【新书推荐】《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,一经查实,立即删除!

相关文章

蓝桥杯2016初赛-有奖猜谜-模拟

题目描述 小明很喜欢猜谜语。最近,他被邀请参加了X星球的猜谜活动。 每位选手开始的时候都被发给777个电子币。 规则是:猜对了,手里的电子币数目翻倍,猜错了,扣除555个电子币, 扣完为止。 小明一共猜了15条谜语。战果…

linux6.5dns装什么,CentOS6.5安装DNS服务

1,安装软件包yum install -y bind2,备份配置文件cp /etc/named.conf /etc/named.conf_bak3,编辑配置文件vim /etc/named.conf//// named.conf//// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS// server as a c…

【在路上2】快递的运单轨迹

通达系早期的扫描数据高度类同,业务员从商家或散客收件之后,PDA做一次揽收操作。业务员或承包区把快件送到网点,晚上由网点派车统一送到转运中心,此时网点做一次发件扫描,转运中心做一次到件扫描。转运中心分拣后发出&…

蓝桥杯2017初赛-正则问题

题目描述 考虑一种简单的正则表达式:只由 x ( ) | 组成的正则表达式。 小明想求出这个正则表达式能接受的最长字符串的长度。 例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是6 输入 输入一个由x()|组成的正则表达式。输入…

linux apache找不到woff2,使服务器Nginx(或者Apache)支持woff2等字体文件

为了在前端正确地显示字体,浏览器必须使用正确的http header来接受字体文件。如果服务器没有设置要求的头信息,那么有些浏览器就会在控制台报错或者直接不能显示。可能你的服务器已经配置好了,你无须再动任何东西。如果没有配置好&#xff0c…

.NET Core验证ASP.NET密码

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

蓝桥杯2017初赛-9数算式-dfs

题目描述 观察如下的算式:9213 x 85674 789314562 左边的乘数和被乘数正好用到了1~9的所有数字,每个1次。 而乘积恰好也是用到了1~9的所有数字,并且每个1次。 请你借助计算机的强大计算能力,找出满足如上要求的9数算式一共有多少…

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初赛-分巧克力-二分

题目描述 **儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足&#…

蓝桥杯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;且它的市场份额…

c语言学生成绩查询课设报告,C语言课设报告(学生考试成绩查询程序)【荐】.doc...

C语言课设报告(学生考试成绩查询程序)【荐】.doc学生考试成绩查询程序学号&#xff1a;********姓名&#xff1a;*****完成日期&#xff1a;****年月通过键盘输入学生的考试信息&#xff0c;包括&#xff1a;学号、姓名、课程名称、学分、考试分数(一个学生应考数门课程&#x…

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

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

蓝桥杯第四届初赛-买不到的数目-数论

题目描述 小明开了一家糖果店。他别出心裁&#xff1a;把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。 小朋友来买糖的时候&#xff0c;他就用这两种包装来组合。当然有些糖果数目是无法组合出来的&#xff0c;比如要买 10 颗糖。 你可以用计算机测试一下&#xff0c;…

【在路上4】在派件时效分析中剥离有效因素

昨天提到&#xff0c;即使有了末端派件时效的初步分析&#xff0c;也免不了各种各样数之不尽的主观客观因素&#xff0c;以至于进入困境。此时此刻&#xff0c;让我们重头再来&#xff0c;这个项目的核心目标是什么&#xff1f;---找到末端派件效率底下的关键点&#xff0c;并给…

c语言程序设计7.4思考题答案,C语言程序设计习题集及答案(7)

2 下面函数的功能是将一个整数字符串转换为一个整数&#xff0c;例如&#xff1a;\1234\转换为1234&#xff0c;请填空使程序完整。int chnum(char *p) { int num0,k,len,j; lenstrlen(p);for( ; 【3】 ; p){ k 【4】 ; j(--len); while( 【5】 ) kk*10; numnumk; }return (num…

蓝桥杯2018初赛-猴子分香蕉-模拟(易错)

题目描述 5只猴子是好朋友&#xff0c;在海边的椰子树上睡着了。这期间&#xff0c;有商船把一大堆香蕉忘记在沙滩上离去。 第1只猴子醒来&#xff0c;把香蕉均分成5堆&#xff0c;还剩下1个&#xff0c;就吃掉并把自己的一份藏起来继续睡觉。 第2只猴子醒来&#xff0c;重新把…