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

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系統下)。
相關文章
相關標籤/搜索