对付B/S都是MVC好欠好 不久不多说了,横竖大家都这么用
这里简单说下C/S
首先常用的几种:
仿照B/S的MVC 也有人称之为 MVP
还有MVVM这种真心感受够够的了,固然也有其优势地址,这里不讨论孰优孰劣
。。。好吧刚吃过早饭脑子不想动,想不起来了,欢迎大神增补
分层的目的是为了实现高内聚低耦合,而我嘛就是想让代码都雅一点……
如何分层才华够对照快速地开发呢?好吧似乎两者根柢没有任何关系
没有吗?有吗?
可以说没有,但实际上应该是多几多少有点的(咋觉得像莫须有的赶脚)
以我的MyRapid为例,说下我的分层
首先是WCF实现C/S疏散,有人把C/S分隔也算一种分层(呵呵)
这里要涉及到分层了,有的人在处事端分层,WCF作为Control 下面可能有BLL, BLL再下面还有一个DAL,这种情况小我私家认为就会影响开发速度了,团队里面多小我私家同时在改削处事层,没经历过真心不知道有多痛苦,小心不能再小心了,每次改削必然要先更新到最新的,还要吆喝一下我改了哪个,有改削过的抓紧上传,要不该斗嘴了
所以说分层还是和开发效率有关系的……
我的解决方案是WCF写死,不动,WCF只有2个要领,读、写,比来增加了一个执行,其实用读也可以实现,读就是执行Sql并且返回数据表,写就是执行但是不返回(也可以返回int),执行就是执行后不管了,有点异步的意思(整体觉得有点SqlHelper再次封装的意思)
那么需要考虑的就是读写的参数问题了
这个时候先来一个前端UI,下面跟一个BLL,不才面一个DAL,DAL挪用的不再是SqlHelper而是WCF(WCF数据源是不是就是这个思路?没深入了解,嘿嘿)
这样在必然水平上解决了团队开发的版本斗嘴问题,固然也存在了业务逻辑袒露的危险,肯定BLL、DAL都放在了 客户端,在必然水平上牺牲了安适性,至于解决方案以后再说
再来说下DAL的优化,BLL小我私家没有发明优化的可能,却是发明不少毫无疑义的转接,前面挪用一个GET() 到了BLL BLL啥也不干直接调DAL的GET() 也有优化空间,不过都是代码生成器,实际上没什么优化价值
直接说DAL的优化,DAL说白了就是传Sql语句的,此刻用EF的话都不怎么需要了,我的框架没有用EF所以还是要说下(关于EF的优错误谬误欢迎百度,不久不多说了)
首先Sql的参数,有人喜欢拼接字符串,我是强烈阻挡的,参数化盘问的长处可以直接百度
如果使用参数化盘问这里涉及到一个空参数的问题,我的解决方案是
WHERE 1 = 1
AND ISNULL(A.Page_Name,‘‘) LIKE ‘%‘+ ISNULL(@cPage_Name,ISNULL(A.Page_Name,‘‘)) +‘%‘
可以看出如果是空的化会过滤失,,固然错误谬误也是有的,就是会多过滤一次筛选 可能会导致盘问速度下降,再实际测试时候没有发明问题,上百万级时没试过(待会尝尝)
代码也更都雅了 再VS里面是红彤彤的一大块 没有 sb.Append什么的
然后就可以将实体用反射传参过来了
根基就是这些 欢迎大神增补
浅谈快速开发框架的分层(WinForm)