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

来源:http://www.cnblogs.com/hanyinglong/archive/2017/02/25/6442148.html
-Advertisement-
Play Games

1..NET Core基本介紹 a 作為一個.NET的開發者,在以前的開發中,我們開發的項目基本都是部署在windows伺服器上,但是在windows伺服器上的話某些比較流行的解決訪問量的方案基本都是先出現在linux上,而後才能遷移出現windows上,而且效率處理方面也不再一個級別。曾經讓.NE ...


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 ,由於本項目要承擔伺服器和功能變數名稱的費用,故而源碼收點辛苦費,還請見諒,所有拿到源碼的人都可以對源碼進行任意的操作,系統簡單截圖如下:   d 本項目源碼地址:http://www.chuxinm.com/Home/Detail?id=8c2e2aff9290446ababf9c5905fa2609                             本項目源碼地址:http://www.chuxinm.com/Home/Detail?id=8c2e2aff9290446ababf9c5905fa2609                                           下篇博客我將闡述如何將.NET Core項目部署到linux(Centos系統下)。      
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 昨天Boss在公司微信群發了此張圖片,"哪個水槽先灌滿",Insus.NET今天早上才有時間來研究一下: 如果你對此話題有興趣,你可以繼續討論和補充...... ...
  • 前述: 對資料庫操作的封裝,相信網路上已經有一大堆,ORM框架,或者是.NET本身的EF,都很好的支持資料庫操作。這篇文章是分享自己所思考的,對資料庫操作的簡單封裝。我對於這篇文章,認為被瀏覽者所關註重點的是怎麼分析設計資料庫操作封裝,代碼是其次。而且,這是我第一篇文章,為了想好怎麼實現花了些天,代 ...
  • 年前經常聊天的大佬群里有人寫了窗體的倒計時來計算下班時間和放假時間:) 簡直就是在嘲諷我這種沒有工作的人,哈哈哈 窗體的倒計時相當的沒有技術含量,主要是不夠炫酷,不能夠體現我們程式員的身份。 那什麼才叫炫酷?必須是控制台啊! 電視劇上黑客噼里啪啦噼里啪啦滾屏的畫面多炫酷! 所以,研究了一下怎麼樣在控 ...
  • 適用Zero版本:ASP.NET Core & Angular 2+ (aspnet-zero-core-3.1.0)。 該版本官方有兩個solution文件夾:Angular(前端) 和 aspnet-core(後臺服務)。 在開始以下步驟之前需要能夠成功發佈程式,對於後臺服務只要能運行即可,如有 ...
  • 註釋,是代碼中的一些“說明性文字”。註釋本身不會參與程式的編譯和運行,僅僅供程式員閱讀。 註釋分為:單行註釋、多行註釋、文檔註釋。 單行註釋的符號是2條斜線“//”,2條斜線右側的內容就是註釋,左側的代碼不會受影響。 多行註釋以“/*”開始,以“*/”結束,之間的內容就是註釋,可以包含多行。 文檔註 ...
  • OSS最新進度,包括OSS.Social,OSS.Http,新增微信支付項目OSS.PayCenter。 ...
  • 簡介 RabbitMQ:一個消息系統,基於 AMQP 系統協議,由 erlang 語言開發。 優點:健壯、使用簡單、開源和支持各種流行的語言等。 MQ(Message Queue):消息隊列的簡稱,是一種應用程式之間的通信機制。 作用:將部分無需立即回調獲取結果,並且耗時的操作,使用非同步處理的方式提 ...
  • 在開發商城系統的時候,大家會遇到這樣的需求,商城系統里支持多種商品類型,比如衣服,手機,首飾等,每一種產品類型都有自己獨有的參數信息,比如衣服有顏色,首飾有材質等,大家可以上淘寶看一下就明白了。現在的問題是,如果我程式發佈後,要想增加一種新的商品類型怎麼辦,如果不在程式設計時考慮這個問題的話,可能每 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...