【新书推荐】《ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务》 带你走近微服务开发...
《ASP.NET Core 微服務實戰(zhàn)》譯者序:https://blog.jijiechen.com/post/aspnetcore-microservices-preface-by-translator/
“微服務”的概念在 2014 年正式提出之后,越來越多的團隊開始用它來設計自己的業(yè)務系統(tǒng),各種微服務框架和開發(fā)過程管理方法也同時興起、不斷成熟。微服務設計方法清晰地定義了各個開發(fā)團隊的業(yè)務邊界,微服務框架以不同的方式實現(xiàn)了服務之間的協(xié)作與集成,根據(jù)康威定律我們可以推導這樣一種產(chǎn)品開發(fā)方法必然會映射到人員協(xié)作方式上去。還有同步興起的 DevOps 運動,它及時恰當?shù)匮a齊了微服務開發(fā)過程中的技術方法,讓微服務生態(tài)如虎添翼。
經(jīng)過幾年的積累,人們開始意識到,微服務從概念到實現(xiàn),最后推廣到整個組織,這整個過程期間存在大量的挑戰(zhàn):服務之間的依賴管理、大量服務實例的運維、單個服務的獨立部署,以及承擔不同角色的微服務在同一個生態(tài)系統(tǒng)中的身份認證等,都開始成為微服務團隊需要直接面對的挑戰(zhàn)。與此同時,各類微服務框架也層出不窮,讓開始接觸微服務的開發(fā)人員眼花繚亂,既難以區(qū)分它們的優(yōu)劣、做出合適的選型,又難以找到高效的學習路徑。
在 .NET 技術領域,微服務的挑戰(zhàn)比起很多其他技術棧有過之而無不及。.NET 技術在企業(yè)應用開發(fā)領域有著長久的運用,因此有大量的存量應用需要面向服務化改造。而 .NET Core 技術作為新一代 .NET 技術方向,無論是這一技術生態(tài)自身的完整性,還是基于它的微服務框架體系,都處于持續(xù)的完善之中。最后,在傳統(tǒng)的企業(yè)應用開發(fā)領域,并沒有普遍采用持續(xù)交付等實踐,當時所開發(fā)的應用也難以滿足云原生應用所要求的諸多特性,因此改造過程難度較大。
所幸 .NET Core 作為全新的 .NET 技術,它不僅完全開源、跨平臺,更面向云原生開發(fā)進行了大量而細致的優(yōu)化。它完全模塊化,不依賴特定操作系統(tǒng),同時其文件系統(tǒng)、網(wǎng)絡和配置等基礎功能模塊對跨平臺、命令行等現(xiàn)代化輕量級開發(fā)所要求的特性提供了優(yōu)秀的支持。正是由于 .NET Core 作為基礎開發(fā)平臺天然適合云原生開發(fā),因此基于 ASP.NET Core 開發(fā)微服務也天然具有這些優(yōu)勢。
本書“麻雀雖小,五臟俱全”,它從 .NET Core 開發(fā)環(huán)境安裝開始,緊接著詳細介紹了持續(xù)交付、API 優(yōu)先和測試驅(qū)動等重要開發(fā)方法和思想。本書探討了人們對微服務的各種理解,以實際項目從各方面體現(xiàn)出本書作者對微服務的全方面詮釋,引導讀者在直觀的體驗中建立自己的理解;同時,本書還主張把微服務和云原生實踐結合運用,書中通過解析十二因子應用的各項特性,并分析它們在本書示例項目中的體現(xiàn),讓讀者對微服務和云原生的結合更為體系化。在本書的講解過程中,每當遇到可能存在不同做法的場景,作者總是詳細論述各項考量、仔細比較各種可能的做法,引發(fā)讀者思考;同時,本書還大量探討了傳統(tǒng)應用開發(fā)中的典型做法,以及在微服務和云原生開發(fā)時應該采納的新方法,仔細解析其中緣由,為存量應用的改造提供了直接指導。
在本書英文原版寫作時,.NET Core 還處于早期的 1.1 版本,而現(xiàn)在中文版翻譯期間,.NET Core 的最新版已經(jīng)是 2.2 版了。為了讓讀者在基于最新版 .NET Core 練習書中的示例項目時更為順暢,譯者對書中所涉及的示例代碼進行了升級。在升級過程中,部分代碼需要經(jīng)過改寫才能與新版本的運行時或者依賴模塊配合工作。讀者在使用書中的代碼時,請自行將書中所涉及的 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 與譯者取得聯(lián)系。
本書中文版的引進必將為 .NET 技術領域的微服務實踐和云原生技術的普及做出重要貢獻。在此,譯者特此感謝清華大學出版社的大力支持,感謝張善友老師為本書譯文提出的寶貴建議,感謝曾一起共事的翻譯小組 WorkSharp 的同事們、特別是劉夏先生的指導,感謝社區(qū)中關注本書的各位熱心人士的激勵和幫助。最后,最需要致以真誠感謝的,是時常關心我的翻譯工作、提醒我及時休息的父母;以及忍受我用幾個月的業(yè)余時間來翻譯、卻仍然要在翻譯時隨時提供參謀的愛人張圣奇:是你們無限的耐心和持續(xù)的支持才讓本書的翻譯工作得以順利完成。
以下是我寫的推薦:
幾乎所有的當代軟件工程都專注于縮短產(chǎn)品的上市時間。微服務是一種以服務為導向的演進式體系結構模式, 它優(yōu)雅地消除了組織摩擦, 讓團隊和工程師們擁有在不斷地進行交付、迭代和改進時所需的自主權。可以預見,云原生時代的應用都是以微服務的形式出現(xiàn)。
關于微服務,有不少書籍堪稱經(jīng)典。但結合最新的Web框架ASP.NET Core來講解微服務的書籍卻不多。本書完整的介紹了使用ASP.NET Core進行微服務開發(fā)時的思路、步驟和工具,是一本不可多的必讀手冊,本書由于成書較早,其示例代碼所基于的.NET Core版本略顯陳舊,譯者的努力一定程度上彌補了這一問題。最重要的是,書中用大量篇幅講述的關于開發(fā)功能強大且具有高伸縮性和韌性的微服務的思想不會過時的。另外,本書還關注使用ASP.NET Core實現(xiàn)云原生模式,以及要讓應用成為云原生生態(tài)中的好公民需要關注的方方面面。這些在具體技術框架之外的經(jīng)驗與思考,更是彌足珍貴。
微服務開發(fā)并非只是將代碼物理分離,開發(fā)過程中還要面對與微服務開發(fā)模式一同到來的服務集成、團隊協(xié)作等一系列新挑戰(zhàn)。相對于單體應用,開發(fā)人員之所以選擇微服務,一個很重要的原因就是想通過一種能將服務獨立地、快速地部署上線的能力。本書講解了ASP.NET Core是如何通過與容器技術的無縫兼容輕松提供這一能力的。微服務的職責單一,這意味著服務之間需要相互調(diào)用才能完成多個任務,或者各方合力才能完成較大的任務。服務間的依賴與集成也是一項不可忽視的基本議題。基于事件集成,以及借助服務發(fā)現(xiàn)機制為相互依賴的服務提供靈活調(diào)度是兩項常見的服務集成方法,本書對這兩種方法都進行了完整介紹。由于各個后端服務未必直接面對用戶,因此微服務系統(tǒng)中的安全認證也與直接面對用戶的系統(tǒng)有所不同,本書深入講解了幾種常見的安全機制,供開發(fā)者根據(jù)實際情況選用。
與本書基于ASP.NET Core開發(fā)微服務的主題相呼應,ASP.NET Core本身就是一系列的模塊化組件,可添加到現(xiàn)有應用中。同時,由于ASP.NET Core提供自宿主Web服務器對REST風格接口的支持非常友好,自身量級足夠輕量并且性能強勁,因此ASP.NET Core自然適合作為微服務開發(fā)的基礎框架。有了優(yōu)秀的框架,接下來我們要考慮的是,如何避免再次陷入用一項新技術繼續(xù)開發(fā)“新版本的一溜單體應用”。本書通過實際項目的深入演練,以及同步的理論講解,讓讀者在面對微服務生態(tài)構建過程中的各種場景時,能做好充分準備。
不過我個人認為,這本書還是缺少了一部分關于微服務生態(tài)系統(tǒng)的內(nèi)部編排的內(nèi)容, 容器是微服務部署的最佳方式,容器作為現(xiàn)代基礎設施上一種更細粒度的抽象,能有效降低占用空間和縮短啟動時間、同時由于它提供了一種新的組件重用性級別,所以能輕松地集成到整個開發(fā)生態(tài)系統(tǒng)中(例如持續(xù)集成和交付生命周期),微服務生態(tài)治理包括調(diào)度(包括部署、復制、擴展、復活、重新調(diào)度、升級、降級等)、資源管理(內(nèi)存、CPU、存儲空間、端口、IP、鏡像等)和服務管理(即使用標簽、分組、命名空間、負載均衡和準備就緒檢查將多個容器編排在一起)。
一直以來,在我運營的“dotnet跨平臺”公眾號和各種線上線下場合,我與很多朋友探討和分享過微服務開發(fā)相關的經(jīng)驗。曾有很多朋友關心,有沒有微服務相關的入門材料。這本書借助實際項目,系統(tǒng)地梳理了微服務開發(fā)的脈絡,給初學者提供了行之有效的學習素材。所以本書的引進是以見值得高興的事情。
書籍目錄如下:
第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開發(fā)控制臺應用
1.4 開發(fā)第一個ASP.NETCore應用
1.4.1 向項目添加ASP.NET包
1.4.2 添加Kestrel服務器
1.4.3 添加啟動類和中間件
1.4.4 運行應用
1.5 本章小結
第2章 持續(xù)交付
2.1 Docker簡介
2.1.1 安裝Docker
2.1.2 運行Docker鏡像
2.2 使用Wercker持續(xù)集成
2.3 用Wercker構建服務
2.3.1 安裝Wercker命令行工具
2.3.2 添加wercker.yml配置文件
2.3.3 運行Wercker構建
2.4 使用CircleCI持續(xù)集成
2.5 部署到dockerhub
2.6 本章小結
第3章 使用ASP.NETCore開發(fā)微服務
3.1 微服務的定義
3.2 團隊服務簡介
3.3 API優(yōu)先的開發(fā)方式
3.3.1 為什么要用API優(yōu)先
3.3.2 團隊服務的API
3.4 以測試優(yōu)先的方式開發(fā)控制器
3.4.1 注入一個模擬的倉儲
3.4.2 完成單元測試套件
3.5 創(chuàng)建持續(xù)集成流水線
3.6 集成測試
3.7 運行團隊服務的Docker鏡像
3.8 本章小結
第4章 后端服務
4.1 微服務生態(tài)系統(tǒng)
4.1.1 資源綁定
4.1.2 服務間模型共用的策略
4.2 開發(fā)位置服務
4.3 優(yōu)化團隊服務
4.3.1 使用環(huán)境變量配置服務的URL
4.3.2 消費RESTful服務
4.3.3 運行服務
4.4 本章小結
第5章 創(chuàng)建數(shù)據(jù)服務
5.1 選擇一種數(shù)據(jù)存儲
5.2 構建Postgres倉儲
5.2.1 創(chuàng)建數(shù)據(jù)庫上下文
5.2.2 實現(xiàn)位置記錄倉儲接口
5.2.3 用EFCore內(nèi)存提供程序進行測試
5.3 數(shù)據(jù)庫是一種后端服務
5.4 對真實倉儲進行集成測試
5.5 試運行數(shù)據(jù)服務
5.6 本章小結
……
第6章 事件溯源與CQRS
第7章 開發(fā)ASP.NETCoreWeb應用
第8章 服務發(fā)現(xiàn)
第9章 微服務系統(tǒng)的配置
第10章 應用和微服務安全
第11章 開發(fā)實時應用和服務
第12章 設計匯總
ASP.NET Core微服務實戰(zhàn):在云環(huán)境中開發(fā)、測試和部署跨平臺服務?已經(jīng)在京東上線,京東連接:?https://item.jd.com/12611071.html
組織大家一起來團購這本書,看情況如果人多的話我們是否可以一起組織一次團購活動。因此創(chuàng)建了一個團購微信群。
如果你掃碼無法進入微信群,請加微信geffzhang,我拉你入群。
總結
以上是生活随笔為你收集整理的【新书推荐】《ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务》 带你走近微服务开发...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在 Blazor WebAssembly
- 下一篇: 【在路上2】快递的运单轨迹