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

又是很多年前,我们公司第一次用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,也就这么回事,你天天在研究没人愿意购买的,没市场的东西,就像是在月球研究原子弹一样,研究出来了,谁要?干啥用?月球上没潜在客户啊。

   

将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。

posted on 2010-04-28 17:56 不仅仅是通用权限设计 阅读(2574) 评论(33) 编辑 收藏

#1楼   回复  引用  查看     支持一下 哈哈

2010-04-28 18:00 | 天天       

#2楼[楼主]  回复 引用 查看   

@天天
谢谢

#3楼  回复 引用 查看   

以前我搞了N多层,现在不是很大的系统网站,俺就一层,无论开发维护感觉都比以前的N层快很多,爽很多
2010-04-28 18:05 | 型格小妖       

#4楼  回复 引用 查看   

这个问题有点象c++比c复杂这么多,强大这么多,但不是超大超复杂的系统,c比c++更受欢迎,更管用一样,所以c重回语言之巅,而c++高不成低不就的,简单就是好
2010-04-28 18:10 | 型格小妖       

#5楼  回复 引用 查看   

大多数类似的小公司都会遇到这种情况吧。
比如说动网、动易
2010-04-28 18:19 | yexuan       

#6楼  回复 引用 查看   

一个公司往往狂热技术研究时往往离走向下坡路不远了,公司里天天都有人在学习技术,离走下坡路也不远了...

这个要看是什么公司吧。楼主接触的大概就是这些公司。
2010-04-28 18:19 | kb小强       

#7楼  回复 引用 查看   

static方法对我来说就是:
放弃“完美的面向对象”, 而适当的插入“面向过程”。

其实这没什么, 连微软都给我们做了Colsole.WriteLine让我们用,
给我们做了int.parse来用, 我们有什么理由振臂高呼“纯面向对象”呢?

我记得以前有一篇《火星人的耳机》的文章, 提到的两派:
理论派和实际派。

对这类问题论述的很有趣,也很深刻。
2010-04-28 18:20 | Arthas-Cui       

#8楼  回复 引用 查看   

架构适合就行。
2010-04-28 18:35 | killkill       

#9楼  回复 引用 查看   

其实我觉得楼主虽然做了这么多年软件,但是大部分还是围绕着很小的一些系统,对架构的了解不够充分。任何架构有其适用的场景,有其要解决的问题和优点。打苍蝇就不需要大炮,只需要苍蝇拍就可以了,但是攻山头,就需要有门大炮作为火力支援了。简单的东西和复杂的东西都有存在的价值。

2010-04-28 19:10 | ocean       

#10楼  回复 引用 查看   

呵呵,很有道理
2010-04-28 19:10 | 温景良(Jason)       

#11楼  回复 引用 查看   

吉日这篇文章的后半部分不错,写得很有生活!
2010-04-28 19:13 | 卡通一下       

#12楼  回复 引用 查看   

怎么那么容易就损失几百万啊,有点夸大吧.
2010-04-28 19:20 | weicheng       

#13楼  回复 引用 查看   

引用weicheng:怎么那么容易就损失几百万啊,有点夸大吧.

所以我说后半部分不错呢!

呵呵!
2010-04-28 19:23 | 卡通一下       

#14楼  回复 引用 查看   

我做的东西,在数据访问层,业务逻辑层的方法,几乎都是静态的。哈哈。调用了方便。
2010-04-28 19:53 | ygcao       

#15楼[楼主]  回复 引用 查看   

1.每个月的房租有几万
2.每个月公司的开支有几十万。
3.接近有200个人,几十个开发人员,几个分公司,几十个业务员。

你说大半年的开支会多少钱?你算算看。

引用weicheng:怎么那么容易就损失几百万啊,有点夸大吧.

#16楼  回复 引用 查看   

吉日怎么不忽悠了?好无聊

2010-04-28 21:13 | assiwe       

#17楼  回复 引用 查看   

适用、简单、8-2原则……是系统架构、性能优化的黄金准则!

“static 的方法,在不影响并发问题、不存在并发冲突的情况,明显会速度快很多很多,反复new一个类,自动回收一个类的整体速度,还是没有Static来得快……”——除非是一个实时系统或是并发量极其超大的系统,大部分信息系统对使用static方法还是instance方法,在性能上的差别比起调用数据库操作、webservice来,可以忽略不计。

“写了N多的接口,每个层都有,有一个地方有变化,至少要修改5-6个地方,累得要死,天天改来改去的……”——创建接口的主要目的就是适应变化,减少因具体实现的变化而导致的更改。如果出现你所说的这种情况,并不是接口的错,而是接口没设计好。

“就像是在月球研究原子弹一样,研究出来了,谁要?干啥用?”——放心好了,本.拉丹要的。

楼主天天写文章乐此不疲,俺继昨天之后今天再来凑个热闹捧个场,呵呵
2010-04-28 21:45 | 恋恋风尘       

#18楼  回复 引用 查看   

支持一下,吉日的文章很实在!经验之谈!
2010-04-28 21:54 | 飞阿飞       

#19楼  回复 引用 查看   

楼主是武林高手这类的程序员,掌握的是高深的绝技,狭路相逢,克敌制胜。适合单打独斗,却不适合大军团作战。
2010-04-28 22:00 | 大一(4)班的天地       

#20楼  回复 引用 查看   

哥,想问一下,你的工作流是什么样子的,写篇文章出来
2010-04-28 22:11 | 贺爱平       

#21楼  回复 引用 查看   


热衷新技术,说明只是一个成长中的团队,成长是需要很大的代价的。

一般来说,一个项目用到新技术的比重应该不要太大,否则风险太多。

很多技术都是有适用范围的,不能说不适合你这个项目就一无是处,要抓住他们的适用范围可能就需要很多经验挫折才能发现。

接口就是为了减少不必要的,因为一般性的需求变化而改动设计的手段。
要是因为接口导致了更多的变化,只能说你们团队完全还没能力设计软件。
2010-04-28 23:06 | 诺贝尔       

#22楼  回复 引用 查看   

一个公司往往狂热技术研究时往往离走向下坡路不远了,公司里天天都有人在学习技术,离走下坡路也不远了
----------------------------
这句话我不爱听,应该是楼主说反了,公司本来就是要各司其职,技术部的不狂热技术,去搞销售的公司才真正走下坡路了。

你要信因果循环,不信佛会惩罚你的

2010-04-28 23:12 | Robin Zhang       

#23楼  回复 引用 查看   

1:玩新技术是要有代价的、有风险的。
项目本身就是有风险,风险也会伴随项目整个生命周期,关键看公司对风险的喜好和控制风险的能力
2:准确的定位决策能让一个公司发展壮大,错误的决策能让一个公司破查。
这是句正确的废话,以后吉日可以少说,说出来等于藐视大多数人智商
3:写程序不要分过多的层,除非是有必要。
这个也是句可要可不要的废话,说了等于没说
4:客户要啥,我们做啥,只要能满足了客户的要求,越简单越好,虽然是最笨的最简单的饿,但是往往是最见效的。
客户的需求不一定是对的,客户现在想要的和过去想要的差别会很大,如果客户能表达清楚他想要什么,咱么都可以回家了。
5:客户花钱想购买的东西,往往不是开发人员天天在开发的东西,也不是开发人员天天在着迷的完美系统架构,客户就想要个好菜刀而已不是原子弹。
这句最值得讨论,客户想要原子弹和想要菜单是收集需求时候确认的,没有哪个生产菜刀的公司会生产原子弹给客户,至少目前世界上没有这样一家公司。未来也不会有这样的公司,但一个完美的系统架构往往针对的不是一个产品,一个需求,产品往往是从原子弹上刮点铁皮下来做成的菜刀。
2010-04-28 23:25 | Robin Zhang       

#24楼  回复 引用 查看   

静态方法用泛型不方便。
2010-04-28 23:45 | xiaotie       

#25楼  回复 引用 查看   

简洁就是美
2010-04-29 00:07 | yi       

#26楼  回复 引用 查看   

有个问题比较的模糊:
架构分了那么多层,为什么还会出现:一改全身改的毛病?
2010-04-29 09:13 | 笨笨的猪       

#27楼  回复 引用 查看   

哈哈 我的理解:技术就像是人体的心脏。销售就是头脑,实施就是四肢。
缺一不可吧。
技术这东西看在什么公司了。我认为:在一般型公司新技术必须要了解(主要用于忽悠客户),至于用不用看机会。
在纯技术型公司中:技术是关键,特别是研发类型的呵呵呵呵呵。
愚见愚见嘿嘿嘿
2010-04-29 09:17 | 笨笨的猪       

#28楼  回复 引用 查看   

吉日老师,我恳请您,以后写就写些与技术无关的文章,大家聊做玩笑,在工作劳累之余乐呵乐呵就行了,别写技术的。
说实话,您的很多“技术”文章都经不起推敲,可以说是错误的,这样对一些初学者难免会造成误导。
你在博客上写写文章,放放广告没关系,但是误人子弟就不对了。
2010-04-29 11:26 | 横刀天笑       

#29楼  回复 引用 查看   

并不是只要是个实例方法,就是“动态方法”。非static,但是也非virtual的方法,和static方法没有区别,都是“静态”的。他们都有固定的地址,性能也没有不同(如果都使用IL指令call来调用的话)。至于new对象的性能,那还得牵扯到更深远的话题。

LZ我觉得你不了解static方法和非static方法的原理,经验固然是有用的,但随随便便得出结论完全不符合科学精神。讨论技术时,我们不仅需要经验,也需要科学严谨的态度。当别人指出你的错误的时候,你应当有责任审视自己的观点和文章。如果你只看一些吹水回复,不真正参与技术讨论,那就表示你完全没有这个诚意,大家也就觉得你这里没有任何讨论技术的气氛。这样没有任何好处,是吧。要是你打心眼里不屑对技术细节的讨论,那还不如对技术只字不提呢。
2010-04-29 11:47 | 装配脑袋       

#30楼  回复 引用 查看   

引用横刀天笑:
吉日老师,我恳请您,以后写就写些与技术无关的文章,大家聊做玩笑,在工作劳累之余乐呵乐呵就行了,别写技术的。
说实话,您的很多“技术”文章都经不起推敲,可以说是错误的,这样对一些初学者难免会造成误导。
你在博客上写写文章,放放广告没关系,但是误人子弟就不对了。

哈哈哈哈哈哈,有趣
2010-04-29 17:24 | Nero.Pang       

#31楼  回复 引用 查看   

吉日的文章我从来都只看评论。
2010-04-29 18:22 | 钧梓昊逑       

#32楼  回复 引用 查看   

今天天气还可以,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值