这篇是入门文章,适合不了解或稍微有些了解MVC和ORM的人(比如我自己…)
距离上一篇已经相差2年了,以后要督促自己多写博客,记录一些心得。今天我写一些关于dtcms的进阶学习方法以及他的弊端以及如何避免,后面还会说到现在我在用,并且觉得好用的东西。
所谓进阶学习方法呢,其实就是对dtcms源码的分析,可能分析的不够好哈,大家多多包涵。
进阶1
dtcms模板是如何生成aspx文件的呢?我觉得这部分写的真是太好了,赞一个(还是开源的不错更赞)!大家可以查看common类库下,PageTemplate.cs源文件:
很明显,这里定义了模板里的替换规则,大家可以进到dtcms后台,生成模板那里打调试,就能进到这里。知道了这个那就好办了,如果你想自己定义比如foreach标签语法,就可以到下面自己定义拉:
很多的字符串解析,大家可以学习一下,这基本就是模板的生成原理拉。
进阶2
大家在添加功能的时候不免会创建一些数据表,因为dtcms使用的是三层架构,这里推荐使用一些三层架构自动生成工具来做,能够帮你生成dal,dll,model层,免去不少工作,记得刚开始的时候,最烦的就是增加表和修改字段,因为这意味着我要把这个表相关的dal,dll,model里,都要修改一遍。这个是最烦的,最主要的你看这里:
这里每一个文件,如果你细看的话,基本每一个文件里的代码都是一样的,对数据库进行连接,提供增删查改方法。但是写这么多不光代码显得笨重,也很烦啊。
不过这也是三层架构必须做的事情。
可能你会想,有没有好的办法去避免这种重复呢?有的,如果你已经发现了dtcms,包括这种.net webform aspx和cs文件耦合性非常高的问题(奶奶滴,拖控件要拖吐了!),那么我推荐你,放弃dtcms。
进阶3
我推荐大家使用MVC,MVC倡导的是视图界面分离(不必拖空间啦),最大的好处是什么呢?我的后台表示层(反正我瞎起个名):
就是这种页面,可以呢,使用其他前台模板,比如layui,一个对后台开发友好的前台模板,移步去看看把。因为使用MVC你可以把逻辑判断写到controller里,这个很方便,大大提高了开发效率哟!(当然,我默认你已经会基本的html,js,ajax操作,那么交互对你来说应该很简单,layui开发文档很全面)。
那你会想,那我不是还是要写dal,bll,model层么?这些数据库操作不是必须写的么?对的,但是你可以使用三方orm(其实本质就是把model层给你写好,dal层都给你封装好了,我是用的是petapoco(以下简称poco),十分轻量,安装的话使用nuget),这样你只要多写一层泛型方法,之后所有的什么dal.cs ,dll.cs, model.cs 就直接可以使用了!像这样封装一层泛型方法(基于poco):
泛型是什么?其实就是在编译的时候确定对象类型,比如T Get<<>>(object id)这个方法,表示的意思就是返回一个类型,这个类型是你调用的时候确定的,比如你可以这么调用(等会再看里面的方法体), 某个类 person = Common.Get<<某个类>>(“1”);这样就取出了person的model。就可以var name = person.name ; (如果这个类有这个属性的话)。
peco很轻,做的事情不少,包含上面方法体里的代码(代码的意思是,第一行:建立数据库连接,第二行:根据主键取出一条数据,第三行:返回实体),主要做了:生成数据库对应的实体,生成数据库底层操作并封装成poco对应的方法(如果对方法不了解,可以百度poco)。
总之,使用MVC,可以随心所欲选择前端流行框架,(奶奶滴,总算不用脱控件了,看起来没那么lou,哈哈),数据处理方面可以随心所欲,更加关注业务逻辑,不用再写和封装dal,dll,model了(当然,简单封装poco,写个泛型类还是必须的)。
这样能极大地提高我们工作效率,当然,前提是业务需求不复杂,比如你7,8个表连接,那poco做会很难受。举个更好的例子,MVC可以使用过滤器,等等高级特性,这样你就可以自己封装个权限管理,对于每个controller,action都可以进行控制,这是我喜欢MVC的原因(马丹,语言不够图片来凑,看不懂的话说的不对的话,下面拍砖,哈哈):
在每个controller上面写个特性[Authorize]就能对权限进行判断了!(不太熟MVC的话,可以底下评论,看情况,我会写MVC教程的)
所以现在呢,我是大部分工作都是这么写的,其实我写的很少,每个项目架构:数据库建表,MVC,layui,poco,这几种搭完,基本写个控制器就可以了,所以从头开发一个项目,我建议大家可以使用我这种架构,开发会很快(不吹不黑,确实很快的,下面这个项目大概1周开发周期左右,当然没算需求设计和之后的功能修改,只是初步的系统,我使用了github上一位前端大神基于layui封装的前台页面,这就是前后分离的好处):
罗罗索索写了不少,希望大家真的能学到一些东西,欢迎指责!(目前正在搞EF,据说不错,试试,可以跟我评论沟通)
.net MVC5+Petapoco+ORM+layui框架选择及入门
最新推荐文章于 2024-09-28 11:53:24 发布