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.pswp.cn/news/284344.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284344.shtml
英文地址,請注明出處:http://en.pswp.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:簡化容…

mybatis中mysql轉義講解

本文為博主原創,未經允許不得轉載: 在mybatis中寫sql的時候,遇到特殊字符在加載解析的時候,會進行轉義,所以在mybatis中 寫sql語句的時候,遇到特殊字符進行轉義處理。 需要注意的是,轉義的字符為…

用Python執行js文件代碼并獲取返回結果

js代碼(myjs.js): /** Title: This is a file for ……* Author: JackieZheng* Date: 2022-04-12 09:24:13* LastEditTime: 2022-04-12 09:40:55* LastEditors: Please set LastEditors* Description:* FilePath: myjs.js*/function hello(…

.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個角度來進行講解。一.項目結構角度項目代…

解決java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor問題

hibernate整合spring當在spring配置文件中加入如下代碼 <!--2.配置事務屬性,需要事務管理器--><tx:advice id"txAdvice" transaction-manager"transactionManager"><tx:attributes><tx:method name"get*" read-only"t…

Packagist / Composer 中國全量鏡像

Packagist / Composer中國全量鏡像 本鏡像共緩存了 186695 個項目(package)、Millions 個(zip)安裝包。最后同步時間&#xff1a;2018/1/28 上午11:01:13 。Composer 最新版本&#xff1a;1.6.2 立即使用 贊助 Packagist 鏡像使用方法 還沒安裝 Composer 嗎&#xff1f;請往…

mock.js使用

一、Mock.js入門 1&#xff0e; 什么是mock.js? Mock.js &#xff08;官網http://mockjs.com/&#xff09;是一款模擬數據生成器&#xff0c;旨在幫助前端攻城獅獨立 于后端進行開發&#xff0c;幫助編寫單元測試。提供了以下模擬功能&#xff1a; 1,根據數據模板生成模擬數據…

面向對象——概念(成員變量、靜態變量、成員方法、靜態方法、垃圾回收機制、重載、包)...

靜態變量和成員變量的區別&#xff1a; 1、成員變量描述的是對象的特征&#xff0c;包含在對象之中。不同的對象成員變量彼此獨立。一個對象成員變量的改變&#xff0c;不會影響其他對象。 靜態變量獨立在對象之外&#xff0c;是所有對象共享的變量。靜態變量改變后會影響所有對…

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

在ArcGIS中作圖時,通常要進行顏色對照填充,輸入特定的RGB值,本文介紹ArcGIS自帶取色器工具的妙用,及第三方顏色拾取工具。 文章目錄 一、ArcGIS自帶取色器二、第三方取色器工具一、ArcGIS自帶取色器 很多人可能不知道,ArcGIS中自帶取色器工具,如下圖所示。 當然了,自帶…

第一輪復習完畢,kmp走起

//代碼via:http://blog.csdn.net/v_JULY_v/article/details/6111565 //簡單思路via:http://study.163.com/course/courseLearn.htm?courseId468002#/learn/video?lessonId1024414&courseId468002 1 #include<iostream>2 #include<string>3 #include<vecto…

微信.NET SDK-Senparc資料整理

微信生態系統包括微信公眾號、小程序、微信支付、微信開放平臺、企業微信、小游戲等&#xff0c;官方提供了很多的API接口。Senparc是目前使用最廣泛的微信.NET SDK&#xff0c;同時支持支持.NET Framework 4.5/.NET Core 2.x/.NET Core 3.x/.NET 5/.NET 6。由于在微信生態開發…

7 種提升 Spring Boot 吞吐量神技

目錄 二、增加內嵌Tomcat的最大連接數 三、使用ComponentScan()定位掃包比SpringBootApplication掃包更快 四、默認tomcat容器改為Undertow&#xff08;Jboss下的服務器&#xff0c;Tomcat吞吐量5000&#xff0c;Undertow吞吐量8000&#xff09; 五、使用 BufferedWriter 進…

Atitit.ati?orm的設計and架構總結?適用于java?c#?php版

Atitit.ati orm的設計and架構總結 適用于java c# php版 1. Orm的目標 1 1.1. 動態obj 1 1.2. Hb的api(meger,save,update,del) 1 2. Orm的概念 1 3. 動態obj 2 4. 參考 4 1. Orm的目標 1.1. 動態obj 1.2. Hb的api(meger,save,update,del) 2. Orm的概念 saveOrUpdate后的對象會納…