.NET Core跨平臺:使用.NET Core開發一個初心源商城總括

weixin_34162629發表於2017-02-25

1..NET Core基本介紹

  a 作為一個.NET的開發者,在以前的開發中,我們開發的專案基本都是部署在windows伺服器上,但是在windows伺服器上的話某些比較流行的解決訪問量的方案基本都是先出現在linux上,而後才能遷移出現windows上,而且效率處理方面也不再一個級別。曾經讓.NET的開發者非常無奈可又不得不遵循,隨著時間的推移,後來第三方公司開發了.NET可以依賴跨平臺的技術Mono,我們可以簡單地對其開發的程式實現跨平臺。關於Mono部署ASP.NET跨平臺的技術我曾經寫過一篇部落格,大家可以研究之(http://www.cnblogs.com/hanyinglong/p/5456757.html),後來微軟換了新的執行長(納德拉),微軟整個公司都開始轉型實現面向服務化的公司,而不是侷限在以前故步自封的地步中徘徊不前,而他的出現也推進了跨平臺的實現,在微軟將第三方公司的Mono收購之後,微軟創舉性的推出來ASP.NET Core跨平臺的技術,它的出現順應了現在開源的大趨勢,也使的大部分的程式設計師對這門技術充滿了期待和期望,所謂工欲善其事不必先利其器,下面我們簡單來說一下ASP.NET Core吧。
  b ASP.NET Core是一個新的開源和跨平臺的框架,用於構建網際網路的架構,ASP.NET Core應用可執行於.NET FrameWork之上,它對原來的ASP.NET MVC和WebAPI進行了重構,使其可以在windows、Mac、Linux上跨平臺開發和執行你的ASP.NET Core引用。
  c .NET Core為了跨平臺在架構上做了一些改變,這些改變在下面我們就能夠感覺到,他不在依賴於System.Web.dll,而是都基於顆粒化的包實現,我們在project.json中就可以看到他的引用,(在最新版的.NET Core下已經將project.json轉換成msbuild來實現),等穩定版出來之後我將會對這塊也去做一個瞭解,並且升級專案。
  d .NET Core官方網站:https://www.microsoft.com/net/core
  e 在.NET Core快速發展的時候,我們也開始學習使用.NET Core開發Web引用,當然我們的開發只是為了學習ASP.NET Core而去開發的商城,在開發這個商城中我們學到了很多東西,在這裡真心的感謝小夥伴們和我一起開發測試和完善(開發是我和波波以及阿偉,測試俊濤,前端KeyBaby(非專業))。我們的網址地址如下:http://www.chuxinm.com/ ,下面我就簡單介紹一下這個專案中所使用的東西以及架構,後面如果有機會我將會繼續闡述本專案中的技術點

2.初心源商城專案框架結構

  a ASP.NET Core是一個全新的框架,我們在使用Visual Studio 2015建立.NET Core專案如下圖所示,我們在建立的時候選擇一個空的專案架構之後,然後在空的專案架構基礎上在進行開發。
   

  

  b 當專案建立完成之後,我們發現專案資料夾的依賴和以前的只有一點不同,如下所示:大家基本都能夠理解這些資料夾下的資訊,如圖所示,下面我對系統架構做一個簡單的介紹
  
    b.1 Repository解決方案資料夾下的介面和實現類庫為倉儲,主要實現的功能就是對資料庫進行基本操作的封裝(增刪改查)以及擴充套件的運算元據庫實現。
    b.2 Service解決方案資料夾下的介面和實現類庫為服務,主要實現的功能就是對業務功能的封裝,所有的業務功能都在這一層,不允許在倉儲和控制器中處理業務,為了以後更方便的開放介面,如下圖所示:
      
    b.3 Pls.Entity類庫是實體類庫,所有生成資料庫的類庫以及對映檔案都在此類庫下面,用於生成資料庫(codefirst),以及介面的接收引數和相應引數實體都在其此類庫下。
    b.4 Pls.UnitOfWor類庫為工作單元的實現,主要是簡單封裝了一下工作單元的實現,使其實現統一的事務管理
    b.5 Pls.Utils類庫為公共類的實現,主要是簡單封裝了公共類、讀取配置檔案、郵件傳送、七牛雲的和redis的封裝方法實現。
    b.6 ProgrammersLiveShow為主專案,主要是.NET Core的MVC架構,因為現在整個專案前端和後端的管理都是在一個配置檔案下,沒有做讀寫分離,所以整個架構就如上圖所示(這裡計劃在後期的時候如果做讀寫分離,我們可以在建立一個ProgrammersLiveShowWebApi的專案提供服務)。

3.初心源商城專案主專案說明

  a 上面我們簡單介紹了本專案的框架結構,下面我們介紹一下主專案的簡單架構,使大家能夠簡單熟悉專案資料夾以及檔案的作用,下面簡單說明一下幾個不同的配置
    a.1 launchSettings.json 此檔案在Properties下,主要作用是ASP.NET Core的應用配置,用於應用啟動準備工作,包括環境變數,開發埠以及啟用某些驗證等,在此配置檔案中修改和開發者使用右鍵屬性修改之後提交的內容基本一致,支援同步更新。
    a.2 wwwroot資料夾下為一個存放靜態內容的資料夾,例如css、js、img等檔案。這樣做的好處就是做動態分離的時候非常方便,而且外部JS以及CSS的引用都可以使用bower.json實現,但是本專案很遺憾的配置bower.json未成功,這是因為在配置之後,手動配置引用JS的版本在載入的時候非常的慢,而且每臺機器載入的版本也有問題,不知道是什麼原因,如果大家知道,歡迎留言告訴我,所以在這裡我基本使用的是免費的CDN網站提供的JS路徑以及所有的包環境部署在專案中。
    a.3 autofac 依賴注入我們沒有使用.NET Core自帶的依賴注入,而是使用了AutoFac,對於依賴注入的選擇我選擇了AutoFac來注入。
    a.4 component元件配置,建立類並且繼承自ViewComponent,我非常喜歡這個功能,因為可以元件化配置,封裝很多公用的頁面模組來使用。
    a.5 document 本專案檔案配置說明,包括專案規範和資料庫檔案以及開發專案必讀等資訊。
    a.6 filter 自己寫的一些攔截器,做了許可權控制的攔截等資訊
    a.7 job 定時任務,我們使用的是Pomelo.AspNetCore.TimedJob定時外掛來實現購買之後7天內未回覆評價以及未支付訂單定時刪除實現。
    a.8 Startup.cs檔案為.NET Core的啟動入口檔案,專案啟動執行的時候編譯器會在程式集中自動查詢Startup.cs檔案讀取啟動配置,除了建構函式之外,他還可以定義Configure和ConfigureServices方法。
    a.9 nlog 日誌配置檔案,我們使用NLog.Extensions.Logging外掛來實現服務的配置
    a.10 appsettings.json 公共配置資訊的書寫,可以配置Sql連線字串以及其它公共資訊。
  b 專案中使用了很多的技術性的東西,上面只是簡單地列舉以及說明,後面如果有機會我將會再次深入的闡述內部所實現的作用。

4.初心源商城暫留疑問

  疑問1:我在使用bower.json管理JS檔案的時候,在配置檔案中配置了各種JS的版本之後,在本機器的依賴項中動態生成,在其它不同的機器獲取程式碼之後動態生成JS之後會發現有時候依賴的版本不對,解決了好長的時間,不知道什麼原因?
  疑問2:配置檔案的使用非常不方便,在以前的appsetting配置中我們可以很容易的呼叫到配置的資訊,而在.NET Core中配置檔案中配置之後,我們在其它類庫需要呼叫很麻煩,有沒有什麼更簡單的方法呢?

5.初心源商城使用的技術和部署的環境

  
  a 在專案一期開發中我們使用都了以上這些技術,後面二期三期我們會使用更多的技術來完善系統,關於以上技術如果誰有任何疑問或者學習可以加我QQ我們一起交流。
  b 原始碼管理我們使用的Git進行管理,部署在開源中國,方便多人共同開發
  c 本專案地址:http://www.chuxinm.com ,由於本專案要承擔伺服器和域名的費用,故而原始碼收點辛苦費,還請見諒,所有拿到原始碼的人都可以對原始碼進行任意的操作,系統簡單截圖如下:
           
    
      
 
 
                                      下篇部落格我將闡述如何將.NET Core專案部署到linux(Centos系統下)。
 
 
 

相關文章