当前位置: 首页 > news >正文

信息系统,分层不要过多,静态方法也可以考虑适当多用

   又是很多年前,我们公司第一次用C#.NET 写程序,大家积极性都非常高,研究技术也热火朝天,当时公司里有几个高手,的确不服不行的那种,在当时的环境下什么分层什么的搞得特精通,连WebService等时髦的技术,没几下都搞明白了,公司按最牛X的技术方式,最合理的分层结构,设计了崭新的系统,大家都觉得非常满意,怎么讲都有道理。

 

   结果所有的层加在一起,好像有5-6层吧,一层套一层,中间全部是用WebService桥接,所有的方法,都通过调用WebService来访问,大部分处理逻辑也都写在服务器端,就拿现在的技术准来讲,也不差到哪里去的。

   大家开发了好几个月,东西是出来了,但是中间发生了很多事情:

   1. 大部分程序员,都无法深入理解技术架构,只是照葫芦画漂,根本没深入体会人家的用意。

   2. 当时没有众多成熟的第三方组件好选择,很多页面上的控件都自己做,效率比较低。

   3. 写了N多的接口,每个层都有,有一个地方有变化,至少要修改5-6个地方,累得要死,天天改来改去的。

   4. 中间调用了WebService,程序一运行慢得要死,比原来的VB程序还要慢很多很多。

   5. 崭新用了C#语言,大家用法也不熟练,做出来的东西不稳定,错误很多,一直无法通过测试,修改个没完。

   6. 新开发的东西又无法端时间成熟,上市销售,老的系统又需要维护升级,有限的开发人员又被拆分成了2波队伍,谁都想学新技术,都想放弃VB的老系统。

 

   结果几个月下来,新系统没能成功上线、老系统又没能集中精力持续改进,给公司造成了重大经济损失,几十万以上甚至几百万的损失吧,最终公司元气大伤。

我想说明的意思是

   1:玩新技术是要有代价的、有风险的。

   2:准确的定位决策能让一个公司发展壮大,错误的决策能让一个公司破查。

   3:写程序不要分过多的层,除非是有必要。

   4:客户要啥,我们做啥,只要能满足了客户的要求,越简单越好,虽然是最笨的最简单的饿,但是往往是最见效的。

   5:客户花钱想购买的东西,往往不是开发人员天天在开发的东西,也不是开发人员天天在着迷的完美系统架构,客户就想要个好菜刀而已不是原子弹。

 

   很早的时候,由于对C#的语法,经验也不够深入,都做了很多接口,方法什么的虽然都是可替代的,但是都是动态方法,非Static的,也没有什么单一实例什么的,程序的运行速度总体上来讲就会很慢,我这几年也经常比较,为什么我的系统总是感觉运行速度慢?

   static 的方法,在不影响并发问题、不存在并发冲突的情况,明显会速度快很多很多,反复new一个类,自动回收一个类的整体速度,还是没有Static来得快,以前排斥 static 的方法,整个系统里技术没有一个static的方法,几年后,再看看手上的代码,不时的会碰到 static 方法了,也不怎么排斥 static 了。

 

   工作累了,就想到什么写点儿什么,免得忘记了,烂在肚子里了。

 

   一个公司往往狂热技术研究时往往离走向下坡路不远了,公司里天天都有人在学习技术,离走下坡路也不远了,我们的研究技术应该依附于客户的需求推动时,离客户的实际需求不过分遥远时,才能派上最大的经济价值。

   客户是我们的衣食父母,能满足客户的要求,有客户在需求,技术成果才能变成RMB,有了RMB就可以更安心去研究技术,我们为客户服务,客户为我们支付RMB,也就这么回事,你天天在研究没人愿意购买的,没市场的东西,就像是在月球研究原子弹一样,研究出来了,谁要?干啥用?月球上没潜在客户啊。

   

相关文章:

  • Larbin初试
  • 老板十本必读财经图书
  • 一款纯css3实现的超炫3D表单
  • ASP中一个“对象关闭时,不允许操作。”的诡异问题……
  • 超出打开游标的最大数异常的解决
  • sendmail配置文字版本(RHCE区域有图文版)
  • 人生在世,注定要受许多委屈
  • 封装类库总结录
  • 细说设计模式之模板方法
  • 黄聪:OLAP与OLTP介绍
  • 无线局域网密码破解
  • jfinal 使用druid
  • windows8 概念版视频
  • OC--内存管理总结
  • Flex调用swf内方法
  • hexo+github搭建个人博客
  • canvas 绘制双线技巧
  • Docker容器管理
  • docker容器内的网络抓包
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Spring Cloud Feign的两种使用姿势
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 聊聊directory traversal attack
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 设计模式 开闭原则
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 算法-图和图算法
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • #ifdef 的技巧用法
  • #每日一题合集#牛客JZ23-JZ33
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (C)一些题4
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (七)理解angular中的module和injector,即依赖注入
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)winform之ListView
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .md即markdown文件的基本常用编写语法
  • .NET Core引入性能分析引导优化
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET 常见的偏门问题
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .net6Api后台+uniapp导出Excel
  • .NET委托:一个关于C#的睡前故事
  • .sh 的运行
  • [Android]Tool-Systrace
  • [AutoSar]BSW_Com02 PDU详解