该公司刚刚完成HR系统升级,系统从单一公司实现使用更多的公司使用变更。在一个月的时间升级,虽然很苦,但他们自己的系统架构的感觉获益,有以下的详细的见解:

一、MVC还是非常重要

系统框架是五年前用delphi设计的。採用的基类加扩展类的模式来扩充新业务表单,表单内充满了业务逻辑。因为没有採用MVC模式。以至于我看完并改完了10万源码。还未包括108支SQL脚本写的报表。若採用了MVC模式。我想我仅仅要改M层就能够了,当系统越大。模式就越重要,不然,系统改动会将软件开发由智力劳动变成体力劳动。

在以后的开发中,我想仅仅要系统达到模块级了。就应该採用MVC模式设计。设计前要想清楚、看远一点。

二、分层设计非常重要

系统採用的是三层架构。这一点让我省了不了心,数据的提交(新增、改动、删除)封装在中间层,client仅仅要调用其方法就可以,採用的是client採用公文包方式,将变更的数据交给服务端,而不是一个client数据集相应一个服务端数据集的模式。提高了业务开发效率。

两层的系统已经无法适应有多分支机构的公司了,即使你如今的公司没有分支机构。也不要用两层模式了,由于外地办公的须要会非常快成为你面临的问题。我们能够採用citrix的虚拟应用、虚拟桌面或window的远程桌面来公布我们的两层应用,但从我们的实际使用效果来看,都不如用户直接使用本地程序的体验好。并且还会添加了布署成本。最好直接採用web系统来建立系统。

三、适度封装业务类非常重要

系统曾经非常多方法都封装在一个类中,时间久了,就忘记了这个类中有这种方法。可是若将业务分类创建。那须要相关类的方法时。就会非常自然的想到这种方法的类。这样降低了方法的反复开发。

四、版本号控制非常重要

尽管这次改动由我一个人完毕,但在我须要的时候,我能够将某些功能交给其它同事来完毕,版本号控制给了我一个团队协同开发的选择。

五、存储过程与函数的选择

在改动大量存储过程时发现。里面有很多的insert into #tmp exec myprocedure的语句。若能将这样的语句改成insert into #tmp select xxx from dbo.fn_xxxx()的方式,存储过程代码会变得更易于阅读,调用更方便。所以在开发SQL脚本时。能用函数实现的,且返回数据集不是太大(多大算大,不超直播5000笔吧),表值函数作为我的第一选择。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

大约HR升级版的设计为组汇总的更多相关文章

  1. 寻找丢失的微服务-HAProxy热加载问题的发现与分析 原创: 单既喜 一点大数据技术团队 4月8日 在一点资讯的容器计算平台中,我们通过HAProxy进行Marathon服务发现。本文记录HAProxy服务热加载后某微服务50%概率失效的问题。设计3组对比实验,验证了陈旧配置的HAProxy在Reload时没有退出进而导致微服务丢失,并给出了解决方案. Keywords:HAProxy热加

    寻找丢失的微服务-HAProxy热加载问题的发现与分析 原创: 单既喜 一点大数据技术团队 4月8日 在一点资讯的容器计算平台中,我们通过HAProxy进行Marathon服务发现.本文记录HAPro ...

  2. [iOS UI设计笔记整理汇总]

    8.UIsearchbar放到Navigationbar 上(意思是建个View作为titleview) //此处调用的是第三方封装的SearchBar,也可以自定义. self.searchBarW ...

  3. 100个iOS开发/设计面试题汇总

    常见问题 你昨天/这周学习了什么? 你为什么热衷于软件开发? 你对哪一种控制系统比较熟悉? 是否参与过GitHub项目? 是否参与过GitHub或其他同类型网站的iOS开源项目? 请描述一下你的iOS ...

  4. lr_场景设计之组场景、nmon监控

    1.组场景常用于回归 ,可以设置成一个脚本后多久运行下一个脚本: Real-world Schedule和Basic schedule的区别:根据官方文档,这两种模式下,场景中的每个虚拟用户组(可看成 ...

  5. 2019新版UI设计面试题汇总(附答案)

    问题一.Android手机的常用设计尺寸有_________.怎么适配ios和安卓. 答案:安卓320 X 480是常规模拟器.但现在的开发都是用360x640做一倍率.480 X 800(1.5倍率 ...

  6. .NET开源工作流RoadFlow-表单设计-单选按钮组

    单选按钮组即:<input type='checkbox'/>控件: 绑定字段:与数据表的某个字段绑定. 数据源: 1.数据字典:在下面字段项中选择对应在数据字典项. 2.自定义:自己输入 ...

  7. 100个iOS开发/设计面试题汇总,你将如何作答?

    原文: http://www.csdn.net/article/2015-01-19/2823604-ios-interview-questions 常见问题 你昨天/这周学习了什么? 你为什么热衷于 ...

  8. RS报表设计采用Total汇总过滤出错

    错误信息: DMR 子查询计划失败,并产生意外错误.: java.lang.NullPointerException 如图 原因是在RS过滤器中添加了: total([门诊人次] for [明细科室] ...

  9. 电子技术经典资料汇总:PCB设计篇

    电子技术经典资料汇总:PCB设计篇,下面的链接是一个一个的文件下载的,也是压缩包的内容,只不过我把他们给汇总成了一个压缩包,方便大家下载,还有更多电子技术必备基础资料,通信无线类的,C语言篇的,关于电 ...

随机推荐

  1. ./startup.sh: Permission denied

    今天在Linux上部署项目,之前报过这个错误,通过下面方式攻克了.如今发出来备份一下: LINUX权限-bash: ./startup.sh: Permission denied 运行./startu ...

  2. net搭建热插拔式web框架

    net搭建热插拔式web框架(重造Controller) 由于.net MVC 的controller 依赖于HttpContext,而我们在上一篇中的沙箱模式已经把一次http请求转换为反射调用,并 ...

  3. C++ do while 0 使用和含义

    /* do while 0 的使用方法和意义 */ //近期在非常多代码里都看到do while 0的身影. 乍一看,这不是没有做不论什么事情吗?为什么还要这样写.难道这是多此一举的吗?当然不是. / ...

  4. apache本地多域配置(wampserver本地多域配置)

    当我们在当地发展.通常在浏览器中输入 http://localhost/项目目录名 测试Web文件,你有没有想过在本地浏览器中,输入自己设定的名字进入项目目录,名相关的问题. 比方我想配置一个主域名w ...

  5. 【Nginx】如何应对HTTP组态

    相同的配置项可以在相同的时间内发生的多个块.例如HTTP片.server片.location片.阻断取之于在配置项值. 处理HTTP配置项分下面4个步骤: 创建数据结构用于存储配置项相应的參数 设定配 ...

  6. Go如何发送广播包

    发送网络数据包成三种方式,每间单播.组播.广播. 广播通俗地讲,就是让你的机器发送的数据包能够被同一个网络内的全部主机都接收到. 在解说怎样发送广播包之前.先来看看跟广播有关的知识: 我们都知道IP地 ...

  7. andriod 在windows配置环境

    andriod开发环境配置 个人信息:就读于燕大本科软件project专业 眼下大四; 本人博客:google搜索"cqs_2012"就可以; 个人爱好:酷爱数据结构和算法,希望将 ...

  8. HDU 1195 Open the Lock (双宽搜索)

    意甲冠军:给你一个初始4数字和目标4数字,当被问及最初的目标转换为数字后,. 变换规则:每一个数字能够加1(9+1=1)或减1(1-1=9),或交换相邻的数字(最左和最右不是相邻的). 双向广搜:分别 ...

  9. NSIS:获取硬盘中容量最大的分区盘符

    原文 NSIS:获取硬盘中容量最大的分区盘符 我们在安装一些在线视频软件比如迅雷看看时,会发现他们的安装程序会自动判断当前系统中容量最大的分区,以便在其中创建数据缓冲下载的文件夹,这种功能如果实现呢, ...

  10. Matlab中调用第三方Java代码

    搞了一天,才算搞定. 第一步:定位Matlab中Java环境的ext目录 新建一个M script文件,或者直接在Matlab的交互式命令行中输入: disp(java.lang.System.get ...