大约HR升级版的设计为组汇总
该公司刚刚完成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升级版的设计为组汇总的更多相关文章
- 寻找丢失的微服务-HAProxy热加载问题的发现与分析 原创: 单既喜 一点大数据技术团队 4月8日 在一点资讯的容器计算平台中,我们通过HAProxy进行Marathon服务发现。本文记录HAProxy服务热加载后某微服务50%概率失效的问题。设计3组对比实验,验证了陈旧配置的HAProxy在Reload时没有退出进而导致微服务丢失,并给出了解决方案. Keywords:HAProxy热加
寻找丢失的微服务-HAProxy热加载问题的发现与分析 原创: 单既喜 一点大数据技术团队 4月8日 在一点资讯的容器计算平台中,我们通过HAProxy进行Marathon服务发现.本文记录HAPro ...
- [iOS UI设计笔记整理汇总]
8.UIsearchbar放到Navigationbar 上(意思是建个View作为titleview) //此处调用的是第三方封装的SearchBar,也可以自定义. self.searchBarW ...
- 100个iOS开发/设计面试题汇总
常见问题 你昨天/这周学习了什么? 你为什么热衷于软件开发? 你对哪一种控制系统比较熟悉? 是否参与过GitHub项目? 是否参与过GitHub或其他同类型网站的iOS开源项目? 请描述一下你的iOS ...
- lr_场景设计之组场景、nmon监控
1.组场景常用于回归 ,可以设置成一个脚本后多久运行下一个脚本: Real-world Schedule和Basic schedule的区别:根据官方文档,这两种模式下,场景中的每个虚拟用户组(可看成 ...
- 2019新版UI设计面试题汇总(附答案)
问题一.Android手机的常用设计尺寸有_________.怎么适配ios和安卓. 答案:安卓320 X 480是常规模拟器.但现在的开发都是用360x640做一倍率.480 X 800(1.5倍率 ...
- .NET开源工作流RoadFlow-表单设计-单选按钮组
单选按钮组即:<input type='checkbox'/>控件: 绑定字段:与数据表的某个字段绑定. 数据源: 1.数据字典:在下面字段项中选择对应在数据字典项. 2.自定义:自己输入 ...
- 100个iOS开发/设计面试题汇总,你将如何作答?
原文: http://www.csdn.net/article/2015-01-19/2823604-ios-interview-questions 常见问题 你昨天/这周学习了什么? 你为什么热衷于 ...
- RS报表设计采用Total汇总过滤出错
错误信息: DMR 子查询计划失败,并产生意外错误.: java.lang.NullPointerException 如图 原因是在RS过滤器中添加了: total([门诊人次] for [明细科室] ...
- 电子技术经典资料汇总:PCB设计篇
电子技术经典资料汇总:PCB设计篇,下面的链接是一个一个的文件下载的,也是压缩包的内容,只不过我把他们给汇总成了一个压缩包,方便大家下载,还有更多电子技术必备基础资料,通信无线类的,C语言篇的,关于电 ...
随机推荐
- Unity3d该物业(Attributes)整理
http://blog.sina.com.cn/s/blog_5b6cb9500101857b.html Attributes属性属于U3D的RunTimeClass,所以加上下面的命名空间是必须的了 ...
- PowerCmd(转)
PowerCmd 是一款Windows CMD 的增强工具,可以比普通CMD工具提供更多选项,例如: 1.多窗口集成,再也不见满屏的Cmd窗口: 2.命令日志记录,再也不怕命令滚动多快,有多少,我们都 ...
- PHP关联数组和哈希表(hash table) 未指定
PHP有数据的一个非常重要的一类,就是关联数组.又称为哈希表(hash table),是一种很好用的数据结构. 在程序中.我们可能会遇到须要消重的问题,举一个最简单的模型: 有一份username列表 ...
- 使用WSE实现Web Service安全----我的第一篇
原文:使用WSE实现Web Service安全----我的第一篇 WSE(Web Services Enhancements)是微软为了使开发者通过.NET创建出更强大,更好用的Web Service ...
- struts2移除标签button的id传统的价值观念问题
<!--显示数据列表--> <tbody id="TableData" class="dataContainer" datakey=" ...
- 写hive sql和shell脚本时遇到几个蛋疼的问题!
错误一: Hive的where后不能用字段的别名, 错误二: hive的groupby中不能用自己定义函数,否则报错(用嵌套select取代) 错误三: 运行:$ ./hive_game_operat ...
- JAVA学习课第五 — IO流程(九)文件分割器合成器
文件分割器 private static final int SIZE = 1024 *1024; public static void splitFile(File file) throws IOE ...
- App如何选择移动广告平台,开发者2 - 移动变现模式分析
开发人员社区的上述分析.它可能无法覆盖全部,但是,每一个开发者都需要根据自己的特点变现模式选择.继App流动性模式做了全面的分析. 游戏.广告.电商是互联网的三种变现模式,移植到移动互联网也相同适用. ...
- java并行体系结构
并行编程 线程通信 共享内存和消息传递 线程同步 控制不同线程的运行顺序 java并发 基于共享内存模型 指令重排序 编译器重排序 处理器重排序 cpu重排序 写缓存区(cache.寄存器) 内存屏障 ...
- Oracle存储过程的简单示例
---创建一个表 create table TESTTABLE ( id1 VARCHAR2(12), name VARCHAR2(32) ) select t.id1,t.name fro ...