对于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)的更多相关文章

  1. 力软信息化系统快速开发框架 web端+winform端

    力软信息化系统快速开发框架是一套集权限管理+快速开发+动态接口+通用组件+动态UI于一体的全新.net信息化快速开发框架.力软信息化系统快速开发框架的使用,大大地缩短了开发周期,提高了软件质量,同时也 ...

  2. ASP.NET快速开发框架不得不做的几个功能、高大上档次后台管理UI界面

    俗话说磨刀不误砍柴工,确实,一早上花一个小时去磨刀一天下来肯定能多砍很多柴.我们做软件开发也是同样的道理,有套好开发框架在手里,开发也是事半功倍.那么一套MVC快速开发框架至少得具有哪些功能才能帮我们 ...

  3. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  4. ABP开发框架前后端开发系列---(14)基于Winform的ABP快速开发框架

    前面介绍了很多ABP系列的文章,一步一步的把我们日常开发中涉及到的Web API服务构建.登录日志和操作审计日志.字典管理模块.省份城市的信息维护.权限管理模块中的组织机构.用户.角色.权限.菜单等内 ...

  5. [技术]浅谈OI中矩阵快速幂的用法

    前言 矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中,矩阵的运算是数值分析领域的重要问题. 基本介绍 (该部分为入门向,非入门选手可以跳过) 由 m行n列元素排列成的矩形阵列.矩阵里的 ...

  6. 简单说下 Winform 的分页快速开发框架必须要实现的几个功能之一

    简单说下 Winform 的分页快速开发框架必须要实现的几个功能之一 分页非为前端分页  和 后端分页,前端分页只有适用于B/S,B/S的呈现速度远远不如C/S,而C/S则没有这个问题,所以分页必然是 ...

  7. 浅谈范德蒙德(Vandermonde)方阵的逆矩阵的求法以及快速傅里叶变换(FFT)中IDFT的原理

    浅谈范德蒙德(Vandermonde)方阵的逆矩阵与拉格朗日(Lagrange)插值的关系以及快速傅里叶变换(FFT)中IDFT的原理 标签: 行列式 矩阵 线性代数 FFT 拉格朗日插值 只要稍微看 ...

  8. Java线上问题排查神器Arthas快速上手与原理浅谈

    前言 当你兴冲冲地开始运行自己的Java项目时,你是否遇到过如下问题: 程序在稳定运行了,可是实现的功能点了没反应. 为了修复Bug而上线的新版本,上线后发现Bug依然在,却想不通哪里有问题? 想到可 ...

  9. Winform 快速开发框架,上位机开发,工控机程序开发,CS程序开发

    1.当客户让你做个CS程序时,当你手上一穷二白,所有都要重复造轮,你是不是很烦. 2.但如果有一个通用的,快速开发框架,就可以把你从这些基础的工作解救出来,你专注做业务就好了. 3.本人其中一个项目的 ...

随机推荐

  1. 用 eclipse 创建一个简单的 meaven spring springMvc mybatis 项目

    下面是整体步骤: 1: 先创建一个Maven 项目: 选择跳过骨架: 因为要搭建的是 web 项目  所以这个地方选择 war 包; 点击完成 这样就完成 Maven项目的搭建: 接下俩 先把 Mav ...

  2. 基于8211lib库对s57电子海图的解析和存储

    电子海图是为适用航海需要而绘制的包含海域地理信息和航海信息的一种数字化的专题地图,符合国际标准的电子海图数据统称为S-57电子海图.本文主要在S-57电子海图数据的理论模型和数据结构的基础上,实现对S ...

  3. SQL Server Alwayson概念总结

    一.alwayson概念 “可用性组” 针对一组离散的用户数据库(称为“可用性数据库” ,它们共同实现故障转移)支持故障转移环境. 一个可用性组支持一组主数据库以及一至八组对应的辅助数据库(包括一个主 ...

  4. Android 6.0 双向通话自动录音

    package com.example.hgx.phoneinfo60.Recording; import android.content.BroadcastReceiver; import andr ...

  5. 使用bitset实现毫秒级查询(二)

    在上一篇中我们了解了bitset索引的基本用法,本篇开始学习bitset索引更新及一些复杂查询. 1.bitset索引更新   因为我们的数据是在系统启动时全部加载进内存,所以当数据库数据发生变化时要 ...

  6. [hihoCoder]矩形判断

    #1040 : 矩形判断 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 给出平面上4条线段,判断这4条线段是否恰好围成一个面积大于0的矩形. 输入 输入第一行是一个整数T ...

  7. Java基础总结--面向对象1

    ---面向对象的概念---1.面向过程与面向对象的区别面向过程:是一种思维习惯,解决一个问题的时候靠的是一个个方法调用--核心是动作面向对象:是一种更接近生活中解决问题的思维习惯,解决特定的问题靠对象 ...

  8. LeetCode 485. Max Consecutive Ones (最长连续1)

    Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: [1, ...

  9. 微信小程序用setData修改数组或对象中的一个属性值

    在page中有如下数组 data: { info:[ { name:"yuki", tou:"../img/head.jpg", zGong:130, gMon ...

  10. SeaJS之shim插件:解决非cmd规范的插件与sea的区别

    SeaJS 中的模块默认都遵守 CMD 规范,但现实中已存在大量普通 JavaScript 类库,比如 jQuery.Underscore 等.使用 shim 插件,可以将这些普通 JS 文件转换成 ...