浅谈快速开发框架的分层(WinForm)
对于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)的更多相关文章
- 力软信息化系统快速开发框架 web端+winform端
力软信息化系统快速开发框架是一套集权限管理+快速开发+动态接口+通用组件+动态UI于一体的全新.net信息化快速开发框架.力软信息化系统快速开发框架的使用,大大地缩短了开发周期,提高了软件质量,同时也 ...
- ASP.NET快速开发框架不得不做的几个功能、高大上档次后台管理UI界面
俗话说磨刀不误砍柴工,确实,一早上花一个小时去磨刀一天下来肯定能多砍很多柴.我们做软件开发也是同样的道理,有套好开发框架在手里,开发也是事半功倍.那么一套MVC快速开发框架至少得具有哪些功能才能帮我们 ...
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
- ABP开发框架前后端开发系列---(14)基于Winform的ABP快速开发框架
前面介绍了很多ABP系列的文章,一步一步的把我们日常开发中涉及到的Web API服务构建.登录日志和操作审计日志.字典管理模块.省份城市的信息维护.权限管理模块中的组织机构.用户.角色.权限.菜单等内 ...
- [技术]浅谈OI中矩阵快速幂的用法
前言 矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中,矩阵的运算是数值分析领域的重要问题. 基本介绍 (该部分为入门向,非入门选手可以跳过) 由 m行n列元素排列成的矩形阵列.矩阵里的 ...
- 简单说下 Winform 的分页快速开发框架必须要实现的几个功能之一
简单说下 Winform 的分页快速开发框架必须要实现的几个功能之一 分页非为前端分页 和 后端分页,前端分页只有适用于B/S,B/S的呈现速度远远不如C/S,而C/S则没有这个问题,所以分页必然是 ...
- 浅谈范德蒙德(Vandermonde)方阵的逆矩阵的求法以及快速傅里叶变换(FFT)中IDFT的原理
浅谈范德蒙德(Vandermonde)方阵的逆矩阵与拉格朗日(Lagrange)插值的关系以及快速傅里叶变换(FFT)中IDFT的原理 标签: 行列式 矩阵 线性代数 FFT 拉格朗日插值 只要稍微看 ...
- Java线上问题排查神器Arthas快速上手与原理浅谈
前言 当你兴冲冲地开始运行自己的Java项目时,你是否遇到过如下问题: 程序在稳定运行了,可是实现的功能点了没反应. 为了修复Bug而上线的新版本,上线后发现Bug依然在,却想不通哪里有问题? 想到可 ...
- Winform 快速开发框架,上位机开发,工控机程序开发,CS程序开发
1.当客户让你做个CS程序时,当你手上一穷二白,所有都要重复造轮,你是不是很烦. 2.但如果有一个通用的,快速开发框架,就可以把你从这些基础的工作解救出来,你专注做业务就好了. 3.本人其中一个项目的 ...
随机推荐
- JS难点--面向对象(继承)
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #a5b2b9 } 继承 让一个对象拥有另一个对象的属性或者 ...
- mybatis xml中使用where 条件中的in方法
<select id="queryCount" resultType="cn.bnsr.edu_yun.view.FileView"> SELECT ...
- LeetCode 80. Remove Duplicates from Sorted Array II (从有序序列里移除重复项之二)
Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For exampl ...
- LeetCode 1. Two Sum (两数之和)
Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...
- Oracle官方非托管Odac驱动与Oracle官方托管odac驱动
方便自己,方便他人,记一次连接oracle的经历,使用 [Oracle官方非托管Odac驱动,Oracle.DataAccess.Client]连接数据库的时候程序会报错,找了很久都不知道是什么原因, ...
- Akka(34): Http:Unmarshalling,from Json
Unmarshalling是Akka-http内把网上可传输格式的数据转变成程序高级结构话数据的过程,比如把Json数据转换成某个自定义类型的实例.按具体流程来说就是先把Json转换成可传输格式数据如 ...
- GoldenGate 传统抽取进程随 DataGuard 主备快速切换的方案(ADG 模式)
环境描述: 1.节点描述 节点 IP 节点描述 11.6.76.221 GG 抽取端 / DG 节点,数据库版本号为 Oracle-11.2.0.3,与 11.6.76.222 组成 DataGuar ...
- Oracle-1 - :超级适合初学者的入门级笔记,CRUD,事务,约束 ......
Oracle 更改时间: 2017-10-25 - 21:33:49 2017-10-26 - 11:43:19 2017-10-27 - 19:06:57 2017-10-28 - ...
- ORM框架SQLAlchemy与权限管理系统的数据库设计
SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用对象关系映射进行数据库操作,即:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果. 执行流 ...
- elasticsearch地理空间操作简单操作
创建索引库 PUT http://localhost:9200/geo { "mappings": { "poi": { "properties&qu ...