聲明:本系列為原創,分享本人現用框架,未經本人同意,禁止轉載!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