【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做項目 (14)附資料庫、發佈項目

来源:http://www.cnblogs.com/yuangang/archive/2016/07/29/5717557.html
-Advertisement-
Play Games

聲明:本系列為原創,分享本人現用框架,未經本人同意,禁止轉載!http://yuangang.cnblogs.com 希望大家好好一步一步做,所有的技術和項目,都毫無保留的提供,希望大家能自己跟著做一套,還有,請大家放心,只要大家喜歡,有人需要,絕對不會爛尾,我會堅持寫完~ 如果你感覺文章有幫助,點 ...


聲明:本系列為原創,分享本人現用框架,未經本人同意,禁止轉載!http://yuangang.cnblogs.com

希望大家好好一步一步做,所有的技術和項目,都毫無保留的提供,希望大家能自己跟著做一套,還有,請大家放心,只要大家喜歡,有人需要,絕對不會爛尾,我會堅持寫完~

如果你感覺文章有幫助,點一下推薦,讓更多的朋友參與進來,也是對本人勞動成果的鼓勵,謝謝大家!由於還要工作,所以基本都是犧牲午休時間來寫博客的,寫博客呢不是簡單的Ctrl+C、Ctrl+V,我是要挨著做一遍的,這也是對大家負責,所以有些時候更新不及時,或者問題沒有及時解答,希望大家諒解,再次感謝大家!!

因為我引用了許多以前積累的類庫,所以有些東西是重覆的(後來更新),有些東西是過時的,包括我寫的代碼,希望大家不要純粹的複製,取其精華去其糟粕>_<。

索引

【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做項目 目錄索引

簡述

總結一

整個系列其實還包括項目管理、考勤簽到、郵件、內部聊天等等,這個東西是做不完的,如果繼續還有新聞系統、靜態生成等等等等....

其中,靜態頁生成在我的博客中可以找到,三種方式:

第一種 就是類似網上的很多CMS一樣 採用標簽替換,但這種方式是不推薦的,特別是在我們.Net中,標簽解析是十分龐大和困難的;

第二種 是使用RazorEngine 解析我們的cshtml頁面,這種使用十分簡單,直接讀取地址生成html就行了;

第三種 也是我使用的,解析html模板(Razor語法的html模板)然後通過RazorEngine 解析,這個是十分簡便的,RazorEngine 會直接識別html中的語法。

 

。。。。我想,很多朋友已經等不急了。。。並且,後面的什麼項目管理啊、郵件啊之類的 都是業務邏輯,不斷的重覆我們的東西,使用到的基本都講過了,所以也是沒有很大的必要性。

 

所以,我們分為兩章來總結一下這個系列:

第一章總結完,我會分享整個資料庫和已發佈之後的程式供大家測試和抽取UI

第二章總結完 我會把程式源碼分享給大家。

為什麼第一章不分享源碼呢?因為我還沒有整理好,比如倉儲類實際上沒有UnitOfWork,對性能是十分不好的,我要改,很多朋友無數次的要完整的東西,所以先把發佈之後的程式和資料庫給大家,就當開胃菜,整理好之後全部分享。分享之後的源碼僅供大家參考,請不要直接拿來使用,因為很多東西比如DDD的設計、UnitOfWork 都是沒有完全實現的,大家可以關註

【無私分享:ASP.NET CORE 項目實戰】目錄索引 這個系列,在這個系列中我們會重構我們的思想,並且修改基礎操作類(重新開發,沒有在本系列中沒有看懂倉儲類庫Repository的可以重點看下),實現對架構和性能的追求。

 

 

好了,廢話不多說。

首先呢,我們來講下依賴註入(DI):

在我們這個系列中,我們是通過Spring.net 來實現的(在Asp.net Core中已經底層支持【無私分享:ASP.NET CORE 項目實戰(第二章)】添加EF上下文對象,添加介面、實現類以及無處不在的依賴註入(DI)),大家最有印象的應該就是xml的配置。我們來看下Web.config:

 

 

我們重點看下 Spring配置指向,這裡有算是兩類指向,一類是webpage的指向(我們的應用程式層webpage),一類是Service的指向(我們的應用服務介面層)

 

 

我們建了很多xml文件,例如 ComService.xml、MailService.xml ,創建這些xml的目的其實跟我們建文件夾是一樣的,就是為了分類管理,建一個也是可以的,並不是一定要建這麼多。

包括webpage\config下的xml 這些作為Spring配置的xml 都應該修改為“嵌入的資源 ”

 

 

我們來分別講下webpage/config 和 service\config 裡面的xml,這裡用通俗容易理解的方式講下,希望大家不要扣字。

我們先來看下service\config 裡面的xml,我們以Service.xml為例:

 

 

我們看下格式:

<object id="Service.Permission" type="Service.ServiceImp.PermissionManage,Service" singleton="false"></object>

<object id="定義一個唯一的名字" type="介面實現類,Service" singleton="false"></object>

名字自己定義一個就可以,沒有什麼特別的規範,只是要唯一,我們在webpage\config 里要用到這個名字,兩者保持一致便可。

介面實現類就是命名空間+實現類的類名,以上面的(Service.ServiceImp.PermissionManage)為例,我們看下我們這個實現類:

 

 

這樣,Service\config 下麵的xml如何配置,大家知道如何使用了吧。那我們再來看下webpage\config 裡面的xml配置,我們以Controllers.xml為例:

 

 

我們看下格式:

<!--登錄控制器-->
<object type="WebPage.Areas.SysManage.Controllers.AccountController,WebPage" singleton="false">
<property name="UserManage" ref="Service.User"/>
<property name="UserOnlineManage" ref="Service.UserOnlineManage"/>
</object>

<!--登錄控制器-->
<object type="控制器,WebPage" singleton="false">
<property name="聲明的容器名稱" ref="在配置Service\config時定義的id"/>
<property name="聲明的容器名稱" ref="在配置Service\config時定義的id"/>
</object>

 

首先,我們添加一個object標簽 type 我們的控制器

<object type="WebPage.Areas.SysManage.Controllers.AccountController,WebPage" singleton="false">
</object>

然後,我們這裡需要用到兩個介面:一個是用戶管理,一個是用戶線上狀態

那麼我們添加兩個 property標簽:

<property name="UserManage" ref="Service.User"/>
<property name="UserOnlineManage" ref="Service.UserOnlineManage"/>

註意:這裡property 的屬性 name 的值 要跟控制器里聲明的容器的名稱一致

 

 

這樣,就實現了。然後,有朋友問,一定要這麼複雜的配置麽?其實,service\config里配置完,在webpage\config里不配置也是可以的,那麼不配置Controllers.xml 如何調用呢?細心的朋友可能已經發現了,我們在BaseCotroller控制器里就沒有使用xml配置,在webpages\Models\CommonHelper.cs中也沒有使用xml配置:

 

對於Spring的使用,詳細的講解和專業的術語如何表述,請大家移步度娘。

 

 

我們再來看下大家也是有很多問題的UserManage實現類:

//用戶登錄驗證

public Domain.SYS_USER UserLogin(string useraccount, string password) 這個應該沒什麼可講的,大家都一目瞭然。

//是否為超級管理員

 public bool IsAdmin(int userId) 這個就一點說明一下 return roles.ToList().Any(item => item.ID == ClsDic.DicRole["超級管理員"])  這裡是用到了字典(是不是比較雞肋),我們在應用類庫Common下的Enums.cs中有這麼一個

也是就判斷我們當前登錄用戶的ID是否等於我們定義的超級管理員的ID。

 

然後,我們再來看下 public Account GetAccountByCookie() 和 public bool Remove(int userId) 這兩個是一樣的,這兩個都調用了外部介面,我們看下我們這個類的開始部分

 

 

大家是不是在使用的時候會出現這麼一個錯誤:未將對象引用到實例?

包括在控制中,我們調用介面的時候,出現這個錯誤,大部分的原因就是:沒有註入。

控制器的註入我們上面剛剛講過了,我們看下介面調用外部介面是如何註入的。service\config\service.xml

 

大家發現了吧 我們在object標簽下 也添加了property標簽。上面我們講過了控制器如何不使用xml實現註入,這裡大家是否也可以嘗試一下。

 

 

好了,已發佈的項目和資料庫:百度網盤

 

網盤已失效,再發第二次,希望大家抓緊:百度網盤

 

帶密碼啊?是的,娛樂一下,單數樓層留下郵箱,密碼發給你。o(*≧▽≦)ツ  大家抓緊,網盤會失效的。

 

說明:大家可以直接放到IIS里架起來,資料庫在App_Data\DataBase 裡面。

資料庫連接需要修改兩個地方:① web.config 裡面的資料庫連接   ② log4net.config 裡面的資料庫連接 (我們的日誌不是存在txt里是存到資料庫里的)

還有,這個是單點登錄,如果不需要,請修改config\website.config 找到 <add key="IsSingleLogin" value="True"/> 改為False

不好意思,忘了說登錄賬號和密碼了,admins   Yuan19880212

 

 

原創文章 轉載請尊重勞動成果 http://yuangang.cnblogs.com


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 開篇 每一個版本的.net都會引入一些新的特性,這些特性方便開發人員能夠快速實現一些功能。雖然.net版本一直在更新,但是新版本對舊版本的程式都是相容的,在這一點上微軟做的還是非常好的。每次學一個新內容,第一次接觸的方法在腦海裡占的位置還是比較重要的,從剛開始接觸.net的多線程編程是使用Threa ...
  • Ajax製作智能提示搜索[js效果,後續博客園會更下麵顯示的部分,只是一個簡單的搜索結果,真正的大型網站用的是lucene全文搜索引擎。 歡迎關註博客園wangwangwangMax, 新浪:NewITdog, 微信公眾號:wangwangwangMax ...
  • 初入碼田--ASP.NET MVC4 Web應用開發之一 實現簡單的登錄 初入碼田--ASP.NET MVC4 Web應用開發之二 實現簡單的增刪改查 2016-07-29 在次之前,需要一臺電腦(~ ̄▽ ̄)~,以及Visual Studio 2013或者更高版本,SQL Sever資料庫(暫時不用 ...
  • 當我們在後臺得到一個字元串後比如字元串內容是:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 我們要在每兩個或者多個加入一個逗號或者一個分號時候,這個時候很多人都想的是迴圈,這個確實也不錯,但是在迴圈的基礎上呢,大家都知道C#中有一個字元 ...
  • 目錄: 1.判斷是否為空或者null 2.普通包含模糊查詢 1)以某字元串開頭的模糊查詢 2)以某字元串結尾的模糊查詢 3)包含某字元串的模糊查詢 3.精確到字元串對應位數字元的模糊查詢(*重點) linq大家肯定用過,對於其中的模糊查詢肯定也有所瞭解 提起linq的模糊查詢首先大家想到的肯定是 C ...
  • 初入碼田--ASP.NET MVC4 Web應用之創建一個空白的MVC應用程式 初入碼田--ASP.NET MVC4 Web應用開發之一 實現簡單的登錄 2016-07-29 一、創建M002AdminDemo.cs 右鍵【Models】-->添加-->類 二、創建Vm002新增管理員視圖模型.cs ...
  • 向空項目添加 ASP.NET Identity 的基本步驟。 ...
  • 前言: 1、最近維護公司的一個舊項目,是Socket通訊的,主要用於接收IPC(客戶端)發送上來的抓拍圖像,期間要保持通訊,監測數據包併進行處理。但是看之前那人寫的代碼個人覺得並不是很適合自己,於是就重寫了,不過項目暫時棄置了,為了以後能夠方便使用,也方便更多像我一樣還是渣渣程式員的人,記錄一些心得 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...