索引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