解析微軟微服務架構eShopOnContainers

來源:互聯網
上載者:User
為了推廣.Net Core,微軟為我們提供了一個開源Demo-eShopOnContainers,這是一個使用Net Core架構開發的,跨平台(幾乎涵蓋了所有平台,windows、mac、linux、android、ios)的,基於微服務架構的,運行在容器中的小型應用,其不僅展示了.Net Core的跨平台性,更展示了VS2017的強大,所有代碼都在VS2017下開發。從名字上可以看出,這是一個運行在容器上的電子店鋪應用,利用Docker的跨平台性,使我們可以“build once, run anywhere”。

一、介紹

eShopOnContainers是基於微服務架構和Docker容器的一個簡單的.Net Core的應用。目前微服務架構如火如荼,docker技術也發展迅速,微軟在這時推出這個Demo,其用意可想而知,雖說這個Demo還不能完全應用到生產環境,但對於我們開發人員來說,可是非常好的學習資料,無論你是稍作修改還是利用架構重新開發,學習這樣一個Demo都是非常有必要的,這讓我想起以前學習BlogEngine.Net。

二、架構

我們看下微軟提供給我們的架構圖

從左至右我們看到有2個虛線框,左邊是各個用戶端應用,右邊是假設在Docker上的web應用、微服務應用和資料庫。

在Demo中,微軟根據不同功能分別搭建了多個service,而且在設計這幾個service的時候,微軟又使用了不同的方式來實現,如所示:

以上是微軟在Demo中展示的四種services,你還可以使用不同的架構,不同的資料庫完成你的微服務搭建,這就是微服務為何如此流行的原因了。我可以利用任何語言,任何資料庫都能搭建我的服務,無論我的調用端使用的何種語言,何種系統。

三、原始碼

這套架構在Github上開源,地址:https://github.com/dotnet-architecture/eShopOnContainers

我們可以通過git把原始碼clone下來:

我們看到裡面有3個sln,建議用vs2017開啟,如果你安裝了完整版,你可以開啟eShopOnContainers.sln,不過一般對於初學者來說,我們還是開啟eShopOnContainers-ServicesAndWebApps.sln解決方案。

可以看到在解決方案中已經涵蓋了webapp和service app,我們的教程也是以這個solution為準。

四、必要環境:

之前說過我們的應用是跨平台的,可以運行在任何支援Docker的作業系統之上,但在我們開發調試的時候,我們需要相應的環境才能進行調試(當然你也可以使用iisexpress進行調試)

1、64bit Windows 10 Pro

2、開啟Hyper-V(微軟的虛擬機器)

3、安裝Docker for Windows

如果我們是win10之前的版本,我們雖然可以安裝Docker Toolbox,但是沒辦法利用VS2017進行Docker調試,運行時會報錯,為了這教程,我決定把我電腦升級到Win10,這樣才能更好的展示。

如果你想在之前的系統下進行調試運行,除了安裝Docker Toolbox外,您還需要安裝:

1、NodeJS

2、Bower

Docker for Windows 在win10或者server 2016上有2種類型的容器,Linux container 和Windows Container,這裡我們只需要使用Linux Container即可(預設)。我們的教程只針對Services和WebApp,微軟建議設定Docker的使用記憶體是4096M(4G)和CPU 3,如果你要運行完整版(包含手機用戶端),那你需要為Dockere配置16G記憶體。

我個人建議的話,你最好有台專門放資料庫的機器,否則一個mssql-linux-sql docker都需要4G記憶體,不用說還需要搭建一個redis。

我們在學習的時候,我們不一定要使用Docker進行調試,利用iis express也可以,用哪種方式不重要,重要的是學習。

五、學習步驟:

本系列講解的都是以ServicesAndWebApps.sln代碼為準,我們將先從微服務學習,再看web部分的代碼結構。大致的順序如下:

1、Identity service

2、Catalog Service

3、Ordering Sevice

4、Basket Service

5、WebApp Mvc

6、WebSPA

寫在最後:

前段時間比較忙,但一直非常關注.Net Core的發展,在之前的builder大會上,2.0的驚豔亮相,徹底讓我相信微軟會不惜餘力的發展.Net,也使我等.Net Developer感覺到春天到了,至此為天下所有.Net Developer致敬,我們等了10年啊。

為什麼挑這個架構來說呢,因為這是微軟寫的,很有教學意義,而且現在微服務和Docker概念越來越火,目前的公司是基於服務做的(還沒有到達微服務概念),在部署、開發、維護、擴充上都有很多不便,所以這個學習對我來說非常重要。

第一篇比較偏廢話些,後面會圍繞代碼和架構和設計模式進行講解,歡迎大家訂閱。最後來一張

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.