【新書推薦】《ASP.NET Core微服務實戰:在雲環境中開發、測試和部署跨平臺服務》 帶你走近微服務開發

《ASP.NET Core 微服務實戰》譯者序:https://blog.jijiechen.com/post/aspnetcore-microservices-preface-by-translator/html

「微服務」的概念在 2014 年正式提出以後,愈來愈多的團隊開始用它來設計本身的業務系統,各類微服務框架和開發過程管理方法也同時興起、不斷成熟。微服務設計方法清晰地定義了各個開發團隊的業務邊界,微服務框架以不一樣的方式實現了服務之間的協做與集成,根據康威定律咱們能夠推導這樣一種產品開發方法必然會映射到人員協做方式上去。還有同步興起的 DevOps 運動,它及時恰當地補齊了微服務開發過程當中的技術方法,讓微服務生態如虎添翼。git

通過幾年的積累,人們開始意識到,微服務從概念到實現,最後推廣到整個組織,這整個過程期間存在大量的挑戰:服務之間的依賴管理、大量服務實例的運維、單個服務的獨立部署,以及承擔不一樣角色的微服務在同一個生態系統中的身份認證等,都開始成爲微服務團隊須要直接面對的挑戰。與此同時,各種微服務框架也層出不窮,讓開始接觸微服務的開發人員眼花繚亂,既難以區分它們的優劣、作出合適的選型,又難以找到高效的學習路徑。github

在 .NET 技術領域,微服務的挑戰比起不少其餘技術棧有過之而無不及。.NET 技術在企業應用開發領域有着長久的運用,所以有大量的存量應用須要面向服務化改造。而 .NET Core 技術做爲新一代 .NET 技術方向,不管是這一技術生態自身的完整性,仍是基於它的微服務框架體系,都處於持續的完善之中。最後,在傳統的企業應用開發領域,並無廣泛採用持續交付等實踐,當時所開發的應用也難以知足雲原生應用所要求的諸多特性,所以改造過程難度較大。docker

所幸 .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,組織你們一塊兒來團購這本書,看狀況若是人多的話咱們是否能夠一塊兒組織一次團購活動。所以建立了一個團購微信羣。

clip_image002

相關文章
相關標籤/搜索