索引html
簡述web
整個系列其實還包括項目管理、考勤簽到、郵件、內部聊天等等,這個東西是作不完的,若是繼續還有新聞系統、靜態生成等等等等....數據庫
其中,靜態頁生成在個人博客中能夠找到,三種方式:架構
第一種 就是相似網上的不少CMS同樣 採用標籤替換,但這種方式是不推薦的,特別是在咱們.Net中,標籤解析是十分龐大和困難的;框架
第二種 是使用RazorEngine 解析咱們的cshtml頁面,這種使用十分簡單,直接讀取地址生成html就好了;post
第三種 也是我使用的,解析html模板(Razor語法的html模板)而後經過RazorEngine 解析,這個是十分簡便的,RazorEngine 會直接識別html中的語法。性能
。。。。我想,不少朋友已經等不急了。。。而且,後面的什麼項目管理啊、郵件啊之類的 都是業務邏輯,不斷的重複咱們的東西,使用到的基本都講過了,因此也是沒有很大的必要性。測試
因此,咱們分爲兩章來總結一下這個系列:url
第一章總結完,我會分享整個數據庫和已發佈以後的程序供你們測試和抽取UIspa
第二章總結完 我會把程序源碼分享給你們。
爲何第一章不分享源碼呢?由於我尚未整理好,好比倉儲類實際上沒有UnitOfWork,對性能是十分很差的,我要改,不少朋友無數次的要完整的東西,因此先把發佈以後的程序和數據庫給你們,就當開胃菜,整理好以後所有分享。分享以後的源碼僅供你們參考,請不要直接拿來使用,由於不少東西好比DDD的設計、UnitOfWork 都是沒有徹底實現的,你們能夠關注
【無私分享:ASP.NET CORE 項目實戰】目錄索引 這個系列,在這個系列中咱們會重構咱們的思想,而且修改基礎操做類(從新開發,沒有在本系列中沒有看懂倉儲類庫Repository的能夠重點看下),實現對架構和性能的追求。
好了,廢話很少說。
在咱們這個系列中,咱們是經過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的使用,詳細的講解和專業的術語如何表述,請你們移步度娘。
//用戶登陸驗證
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實現注入,這裏你們是否也能夠嘗試一下。
好了,已發佈的項目和數據庫:百度網盤
網盤已失效,再發第二次,但願你們抓緊:百度網盤
額。。。上面都失效了,還有這麼多要的,最後發一次網盤:百度網盤
---- 統一回復 提取碼:z2qn
說明:你們能夠直接放到IIS裏架起來,數據庫在App_Data\DataBase 裏面。
數據庫鏈接須要修改兩個地方:① web.config 裏面的數據庫鏈接 ② log4net.config 裏面的數據庫鏈接 (咱們的日誌不是存在txt裏是存到數據庫裏的)
還有,這個是單點登陸,若是不須要,請修改config\website.config 找到 <add key="IsSingleLogin" value="True"/> 改成False
很差意思,忘了說登陸帳號和密碼了,admins Yuan19880212
原創文章 轉載請尊重勞動成果 http://yuangang.cnblogs.com