微服務(microservice)這個概念是2012年出現的,2014年3月Martin Fowler在他的個人網站(https://martinfowler.com/articles/microservices.html)中是這樣說到的:
The term "Microservice Architecture" has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services. While there is no precise definition of this architectural style, there are certain common characteristics around organization around business capability, automated deployment, intelligence in the endpoints, and decentralized control of languages and data.
“微服務架構”一詞在過去幾年中興起,描述的是將軟件應用程序設計為可獨立部署服務套件的特定方式。雖然沒有對這種架構風格的精確定義,但其具有一些共同的特性,如圍繞業務能力自動化部署、智能端點、對語言及數據的“去集中化”控制等等。
通俗的講,我們可以這樣認為:傳統系統的開發,我們將整個系統分為表示層、服務層、業務邏輯層、數據訪問層進行開發,但最終我們將這所有的代碼編譯在一起發布,這樣做也有它的優點,比如開發簡單、不存在分布式管理,但這樣也有缺點,比如:一個小的bug可能導致整個應用程序的崩潰、系統業務之間代碼耦合度高不易於維護、開發不靈活,若有新的業務需求只能往原有代碼上加邏輯,這樣對開發團隊成員要求高,若團隊成員更替頻繁,新成員必須先熟悉團隊的開發框架,很難適應這種開發模式、還有隨着系統業務增多,功能增加,數據量越來越大,更是無法滿足高並發下的業務需求;若我們采用微服務架構,那就將我們整個系統拆分為多個業務,將每個業務做成一個服務,服務之間采用HTTP(也可以使用消息隊列RoocketMQ,Kafaka)通信,而且每個服務可以采用不同的開發語言、使用不同的存儲方式,根據不同業務的並發需求,我們可以單獨對某個服務做集群部署,增強系統的負載能力,由於每個服務都是獨立部署的,每個服務的修改和部署對其他服務沒有影響,當然,微服務也有一些缺點,比如:代碼的重復,某些底層功能需要被多個服務所用,為了避免將“同步耦合引入到系統中”,有時需要向不同服務添加一些代碼,這就會導致代碼重復;開發人員需要考慮分布式系統的問題,如網絡延遲、異步機制、系統容錯性、分布式事務等;另外運維開銷及成本也會增加,微服務架構可能需要運行數十個獨立的服務,並可能需要支持多種語言和環境,對運維人員的要求也比較高。
小結:微服務架構有很多吸引人的地方,在擁抱微服務之前,我們要根據團隊的實際情況以及項目實際情況選擇是否適合采用該架構。
.NET Core是適用於 windows、linux 和 macos 操作系統的免費、開源托管的計算機軟件框架,是微軟開發的第一個官方版本,具有跨平台 (Windows、Mac OSX、Linux) 能力的應用程序開發框架 (Application Framework),未來也將會支持 FreeBSD 與 Alpine 平台,也是微軟在一開始發展時就開源的軟件平台 。
由於 .NET Core 的開發目標是跨平台的 .NET 平台,因此 .NET Core 會包含 .NET Framework 的類庫,但與 .NET Framework 不同的是 .NET Core 采用包化 (Packages) 的管理方式,應用程序只需要獲取需要的組件即可,與 .NET Framework 打包式安裝的做法截然不同,同時各包亦有獨立的版本線 (Version line),不再硬性要求應用程序跟隨主線版本。
.NET Core的優勢:
.NET Core 3.0現在支持了WPF和Windows Forms的開發,同時還支持UWP,WPF和Windows Forms三者間的混合開發,這為開發人員提供了靈活性,可以將UWP的現有接口引入Windows窗體和WPF中。
.NET Core 更適合跨平台的開發。 .NET Core 應用支持Windows,Linux和Mac OS。微軟很受歡迎的代碼編輯器 Visual Studio Code 支持Windows,Linux和Mac OS。VS Code還支持智能提示和調試,許多第三方代碼編輯器(如Sublime、Emacs和VI)也都是使用.Net Core開發的。
.NET Core支持微服務架構,它允許跨平台服務與.NET Core一起使用,包括使用.NET Framework、Java、Ruby或其他語言開發的服務。
.NET Core的模塊化,輕量級和靈活性,使在容器中部署.NET Core應用程序變得更加容易。而容器可以部署在任何平台包括雲,Linux和Windows上,. Net Core在Docker和Azure Kubernetes Service上都運行良好。
.NET Core每個版本之間的兼容性很好。你可以在同一台電腦上面同時運行不同版本的應用。