ASP.NET Core 技术内幕与项目实战读后感

前几天拿到了杨中科老师的新书《ASP.NET Core 技术内幕与项目实战》,迫不及待的“两”口气读完了。用一句话来总结,这是一本写给.NET开发者的非常实用接地气的好书,感觉有必要自发为这本书宣传一波。

6d73d18e40dcdcbc61a8a3d088e2efe8.jpeg

杨老师在 .NET 开发者社区中的知名度非常高,很多年前就发布了一系列的 .NET 学习教程,造福了众多开发者。我自己也写blog,深知要把技术讲的通俗易懂是非常有难度的。而杨中科老师的视频在社区中非常流行,全网几十万粉丝,也算技术社区的网红了,证明杨老师在技术培训领域的深入功底。去年我提名了杨老师申请微软MVP奖项,很顺利就通过了,这也是微软对杨老师多年来对技术社区贡献的一种肯定,其实这个奖项早就应该给了。

得知杨老师在写书之后,一直期待这本书的问世。没想到这本书竟然花了三年时间,但算上作者已经近18年的开发经验,可谓“十年磨一剑”。这本书结合了作者多年来的软件开发实战经验,非常适合已经入门的 .NET 开发者作为进阶提高的必读书目。接下来谈一下我对本书的看法。

语言通俗生动,不枯燥。

技术书往往容易陷入繁杂的理论细节而让读者感到枯燥。特别是涉及到某个细节或者原理的时候,用一些特别高大上的名词会非常拗口。而这本书的用词非常通俗易懂,而且贴合生活实际。如本书讲解 DDD 应用,书中讲到:

DDD并不是一个技术,而是一种架构设计的指导原则。……DDD就像烹饪中餐时“盐少许、油少许”一样让人难以捉摸。……不同的人对DDD的理解及对DDD概念落地的理解有所不同,并不存在绝对的错与对,在情况A下成功的DDD实战经验放到情况B下可能就会失败。正如古人所说“橘生淮南则为橘,生于淮北则为枳”,读者不要在众多的对DDD解读的文章中迷失,也不要执着于寻找根本就不存在的“DDD最佳实践”,而要认证聆听各方的解读,并且根据项目的自身情况来个性化地实现DDD的落地。

这种形象化的比喻在书中比比皆是,非常容易让读者理解作者想要传达的意图。我想可能是因为杨老师已经出版了多本技术类的书籍,想来写作已经是驾轻就熟了。

深入原理——How 和 Why

技术书籍的写作,有一点是不要照抄文档。因为官方文档对各个 API 怎么使用已经有了详细的讲解。那为什么还需要书呢?因为文档只是告诉开发者这个技术怎么用,往往很少去解释为什么。而这本书解释了很多技术背后的原理,适用哪些场景,以及各自的优缺点,有哪些需要注意的问题。比如 IQueryable 这个接口,我们都知道 IQueryableIEnumberable 是不同的,那底层的具体实现有何区别?在书中详细解释了 IQueryable 是如何调用 DateReader这个底层方法来进行查询的,并通过几段代码演示了底层查询的过程,还讲解了在哪些场景下应该使用 IQueryable。这种层次的剖析不但可以让读者知道怎么使用它,还可以更加深入的了解为什么要这么做。

由浅入深,循序渐进

很多技术的发明或应用,并不是突然出现的,而是为了解决某个问题。比如说到缓存,我们都知道缓存可以提高性能,缓存又有不同的类型,比如客户端缓存和服务端缓存。那具体到不同的缓存类型,是为了解决什么问题呢?本书详细解释了问题的场景,并一步步引导读者去理解为什么要使用缓存。从HTTP支持的客户端缓存开始,然后到服务器端的响应缓存,而服务器端的缓存由单机的内存缓存开始,逐步去解决分布式缓存的问题。然后又遇到缓存穿透和缓存雪崩等问题,最后还提供了一个封装分布式缓存操作的实际案例,这一步步的问题+解决方案的方式,让读者跟随作者思路对如何应用缓存有了更深入的理解,从而可以应用到自己实际的项目中。

贴合实际,不拘泥于教条

本书我感觉最大的一个特点,就是非常接地气。理论是必须的,但理论不是教条,而应该根据实际情况灵活应对。在读到本书中关于 RESTful 的章节时,我感觉书中描述的实践其实并不是非常符合 RESTful 的定义,特别是在路由中使用动词的设计。但书中提到了:

REST 概念是用来指导我们设计接口的,而不是给开发带来麻烦的,不能因为要通过 RESTful 风格而影响开发进度及系统的稳定。……因此在进行项目开发的时候,需要根据项目特点、公司人员等多方面情况,确定一个符合项目情况的定制版 RESTful 规范。……

这种思路我是非常支持的。国外提出的某些理论,并不一定是要严格遵守的规范。只要团队内部有统一的认识,能够支持项目的开发,就可以成为良好的实践。书中对错误处理的 “200 派” 和 “4xx 派”也进行了相当精彩的描述,可以说这些内容都是来源于作者丰富的一线经验,而不是仅仅局限在某些理论中。

引纲挈领,以实际项目支撑

书中讲述了很多作者多年来的实战经验,更难为可贵的是,这些经验不是停留在泛泛的文字之中,作者甚至开发了多个 NuGet 包,并概要介绍了实现的关键代码。这说明作者完全不是空口无凭的理论派,而是具有丰富经验的实战派。比如用于 EF 批量操作的包、管理分布式缓存的包、读取数据库配置的包等等,这些都是已经发布到 NuGet 的开源项目,完全经得起实际应用的考验。更令我佩服的是,最后的项目案例章节中,完整讲述了作者开发的英语学习网站的技术细节,这是一个真正在运行的项目,据我所知已经有很多用户了。这种案例,当然比简单的图书管理系统或订单管理系统更有说服力。

其他

我也在写一本关于 ASP.NET 的书,但我感觉很难比杨老师写的更好。这本书也给我指明了方向,就是如何写一本让读者读得进、读得懂、读完大有收获的书。特别是本书关于 DDD 的章节,写的非常通俗易懂,我读了之后也感觉颇有收获。如果硬要说本书的不足,我感觉可能是因为本书重点关注开发的原因,对程序部署、监控、日志等内容涉及不多,比如如何容器化、如何实现 CI/CD、如何利用云原生平台等,其实严格说这些属于 DevOps 的范畴,值得写另一本书了。这可以算我鸡蛋里挑骨头吧。8-)

广告

最后再打个硬广,如果您对杨老师的书感兴趣,或者想与杨老师直接交流,或者只想听听什么是 DDD,那么机会来了,7月28日晚7点(新西兰时间)我们CITA NZ(新西兰华人 IT 协会)将邀请杨中科老师做一期讲座,名为“接地气的 DDD (领域驱动设计)实战指南”,线上活动,欢迎大家参加。在本公众号回复 DDD 即可获取报名链接。

这本书已经在各大电商上架,推荐 .NET 开发者快快下单吧!点击下方京东链接可直接下单。纯自发广告,杨老师请尽快付我广告费“少许”,谢谢。2c57b934fe7a19613fad0b25b1308c96.png

👇👇👇

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

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

相关文章

avalon2学习教程15指令总结

avalon的指令在上一节已经全部介绍完毕,当然有的语焉不详,如ms-js。本节主要总结我对这方面的思考与探索。 MVVM的成功很大一语分是来自于其指令,或叫绑定。让操作视图的功能交由形形式式的指令来代劳。VM,成了一个大管家。它只一…

【ArcGIS错误异常100问】之002:Error 000735 简化容差:值是必需的(简化线、简化面工具)

测试环境: 操作系统:windows7ArcGIS版本:10.2结果:通过测试 文章目录1. 错误提示2. 问题分析3. 解决办法4. 问题验证1. 错误提示 在ArcGIS中使用简化面或者简化线工具时,点击确定会提示Error 000735:简化容…

.NET桌面开发的一些思考

在22日,我在公众号上发布了一条短文字,内容如下:其实在.NET开发大军中,还有一股力量,那就是桌面程序的开发者们。他们很少发声,可能技术成熟,可能太企业化了,也可能我没关注到。最近…

【ArcGIS错误异常100问】之003:属性表中文乱码解决办法总结

测试环境: 操作系统:windows7ArcGIS版本:10.X、Pro结果:通过测试 文章目录1. 错误提示2. 原因分析3. 解决方法4. 问题验证1. 错误提示 如图所示,安装完ArcGIS Pro后,由于计算机系统和应用软件字符编码的问…

大型网站架构演化(二)——应用服务和数据服务分离

随着网站业务的发展,一台服务器逐渐不能满足需求:越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足。这时就需要将应用和数据分离。应用和数据分离后整个网站使用三台服务器:应用服务器、文件服务器和数据库服…

再不自动化就晚啦!优云教你4步打造基于CentOS的产品镜像

随着Linux程序的增多,软件的安装过程中经常出现如下问题: 1、硬件配置类似或者相同时,批量安装系统和软件,希望实现自动化安装,减少安装时间和人为出错。 2、工程实施人员在不同客户现场进行系统和软件安装(硬件配置不…

【ArcGIS错误异常100问】之004:ArcGIS表转Excel超了65535限制解决办法

测试环境: 操作系统:windows7ArcGIS版本:10.2 文章目录1. 错误提示2. 原因分析3. 解决方法1. 错误提示 如下图,当矢量shp图斑数目过多,文件超过了65535条记录时,利用ArcGIS的表转Excel工具处理成Excel文件…

[转]硬核 | Redis 布隆(Bloom Filter)过滤器原理与实战

在Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?中我们说到可以使用布隆过滤器避免「缓存穿透」。 码哥,布隆过滤器还能在哪些场景使用呀? 比如我们使用「码哥跳动」开发的「明日头条」APP 看新闻,如…

Senparc.Weixin.Sample.MP源码剖析

Senparc.Weixin.Sample.MP是微信公众号样例的.NET6源码,项目配置文件appsettings.json的修改和微信公众号测试环境的搭建参考:微信公众号调试与Natapp环境搭建。接下来从项目结构,项目应用和项目源码3个角度来进行讲解。一.项目结构角度项目代…

mock.js使用

一、Mock.js入门 1. 什么是mock.js? Mock.js (官网http://mockjs.com/)是一款模拟数据生成器,旨在帮助前端攻城狮独立 于后端进行开发,帮助编写单元测试。提供了以下模拟功能: 1,根据数据模板生成模拟数据…

【ArcGIS微课1000例】0042:ArcGIS自带取色器工具的妙用

在ArcGIS中作图时,通常要进行颜色对照填充,输入特定的RGB值,本文介绍ArcGIS自带取色器工具的妙用,及第三方颜色拾取工具。 文章目录 一、ArcGIS自带取色器二、第三方取色器工具一、ArcGIS自带取色器 很多人可能不知道,ArcGIS中自带取色器工具,如下图所示。 当然了,自带…

微信.NET SDK-Senparc资料整理

微信生态系统包括微信公众号、小程序、微信支付、微信开放平台、企业微信、小游戏等,官方提供了很多的API接口。Senparc是目前使用最广泛的微信.NET SDK,同时支持支持.NET Framework 4.5/.NET Core 2.x/.NET Core 3.x/.NET 5/.NET 6。由于在微信生态开发…

7 种提升 Spring Boot 吞吐量神技

目录 二、增加内嵌Tomcat的最大连接数 三、使用ComponentScan()定位扫包比SpringBootApplication扫包更快 四、默认tomcat容器改为Undertow(Jboss下的服务器,Tomcat吞吐量5000,Undertow吞吐量8000) 五、使用 BufferedWriter 进…

【ArcGIS微课1000例】0043:ArcGIS缩略图的创建及应用

缩略图通常出现在地图文档中,便于在启动页面中快速打开指定的地图文档,提高效率。 文章目录一、缩略图预览二、缩略图创建一、缩略图预览 打开ArcMap软件,弹出启动窗口,在最近打开的文档中,可以看到两类,一…

JSP简单登录系统

Login登陆界面 <body> 登陆 <% session.invalidate();%> <form action"TestPW.jsp" method"post">用户名<input type"text" name"username"> 密码<input type"password" name"password&quo…

手动从0搭建ABP框架-ABP官方完整解决方案和手动搭建简化解决方案实践

本文主要讲解了如何把ABP官方的在线生成解决方案运行起来&#xff0c;并说明了解决方案中项目间的依赖关系。然后手动实践了如何从0搭建了一个简化的解决方案。ABP官方的在线生成解决方案源码下载参考[3]&#xff0c;手动搭建的简化的解决方案源码下载参考[4]。一.ABP官方在线生…

Java捕获并处理线程失败抛出的异常

使用 UncaughtExceptionHandler 示例代码如下&#xff1a; Thread.UncaughtExceptionHandler handler new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread th, Throwable ex) {System.out.println("Uncaught exception: " ex);} }; Th…

【ArcGIS微课1000例】0044:ArcGIS使用山体阴影显示DEM的3种方法

本文讲解了ArcGIS使用山体阴影显示DEM的3种方法:“影像分析”窗口、使用山体阴影效果和山体阴影效果工具的不同之处。 文章目录 一、“影像分析”窗口二、使用山体阴影效果三、山体阴影工具一、“影像分析”窗口 使用山体阴影显示 DEM 的方法有两种。最简单并且最具交互效果的…

区块链每日投资指南(0129)-证监会副主席表示数字货币需要监管

上一周的走势依然是工作日下跌&#xff0c;周末拉升的结局。这主要原因依然是&#xff0c;周末不上班。最终政策出炉之前&#xff0c;市场恐怕还将继续震荡。下周的工作日恐怕会重演下跌的节奏。但是经过了17号&#xff0c;23号&#xff0c;26号三次筑底来看&#xff0c;如果政…

蓝绿发布、滚动发布、灰度发布,有什么区别?

在项目迭代的过程中&#xff0c;不可避免需要”上线“。上线对应着部署&#xff0c;或者重新部署&#xff1b;部署对应着修改&#xff1b;修改则意味着风险。目前有很多部署发布的技术, 这儿将常见的做一个总结。 上面所说难免有些抽象, 举一个情景例子, 加入你是微博项目负责…