倒退的历史?——某MIS项目手记(3):服务器控件惹谁了?

  生活就是折腾

  你折腾我~~~~

  我折腾你~~~~

  自己折腾自己

    当学生的时候被老师折腾,工作之后被项目负责人折腾,当了负责人之后被甲方折腾,而当上甲方——还是遥远的梦想。

    网络的普及催生了分布式技术(分布式计算、分布式数据库、分布式××……),于是我们开始学C/S,但C/S有肢端肥大的固疾,于是我们又开始学B/S,而B/S烦躁的提交啊提交导致的页面跟着刷新啊刷新完全把S当成神,把B当白痴的“中央集权”式处理又有矫枉过正之嫌,于是出现了Ajax,又要开始学了……

    感觉这就像是一个无止境的阴谋,我们就被那些吃屎的顶级公司们牵着鼻子转啊转,大把大把的扔出血汗钱去买他们的软件,他们的书,听说打折还会疯狂的去抢购,赚取虚无的消费者剩余,得到贪到小便宜时丑陋的满足感,而把实在的生产者剩余拱手送给那些公司。这里我又想到另一个相同道理的事情:杀毒软件厂商的存在靠的就是病毒的猖獗,他们深知“飞鸟尽,良弓藏;狡兔死,走狗烹”的道理,所以大部分所谓“高危病毒”都是他们自己制造出来的。现实中的制药业大概也有类似的情况吧,所以如果哪天你看到新浪头条出现“某某药品(非常著名的那种)含有致某某病成分”,然后没过多久又出现“对抗某某病的新药已经研制成功”的消息时请不要奇怪。

    唉,人类就是这样,自己折腾自己。别往歪处想,我可不是悲观主义者,人类照这样发展下去迟早会走恐龙的老路,不过我这辈子是肯定看不到那个悲壮的结局了,所以还要继续忍辱负重被折腾下去,如果幸运天屎再次降临的话,兴许还能让我折腾折腾别人,比如那些该去吃屎的公司,呵~

    哎呀呀,这次牢骚发多了,不好意思,其实本来这次也没想写多少技术内容,上一篇飞进来苍蝇的影响还没有完全消除。本人平生最讨厌两样东西——苍蝇和烟卷。

    好了好了,言归正传。


    第三篇:服务器控件惹谁了?

    写完这个题目我就后悔了,但是上一篇的末尾已经作了预告,再改名字毕竟不好,有违诚信原则。不过在开头我就不得不再次强调一下:我不是分层分工的崇拜者,不是存储过程的崇拜者,也不是服务器控件的崇拜者。服务器控件也应该是在该用、好用的地方用,这当然要具体情况具体分析,哪也没有那么绝对的事情,就像个税起征点,1500块钱“一刀切”显然违背国情民意,呃……跑题了。

    前面说了,我们这个项目用的是ASP.NET+Oracle9i,页面上的工作用Star Ocean的话说就是对数据库的“增删查改”。本科时我们的项目也是这个模式,也同样是ASP.NET,但除了页面上一些特效和美工是用Javascript写的以外,剩下的逻辑处理全部使用服务器控件,在behindcode里面完成。当时刚学,也不太懂,觉得用ASP.NET嘛,怎么能不用服务器控件呢?不用服务器控件还不如用ASP来做,嗯,那时的想法就是这么的纯真。虽然做出来之后随便点个按钮页面就要提交并刷新也确实挺烦躁的,不过也没觉得多严重,或许先进的具有划时代意义的新一代Web开发技术做出来的东西就是这个样子吧。

    但这次不一样了,而且是完全反了过来:我在已有的项目中一个服务器控件也没找到。我奇怪的就此事向同事询问。他说:开始时他们也会用一用服务器控件,但后来负责人说了,用服务器控件老提交老提交,烦死了,所以全组统一,让服务器控件全部消失!

    所以现在项目中BS传递消息的方式就是传统的<form>中的submit,或者某个js块中的window.open(…);消息在服务器的处理呢,就是在Page_Load里面,通过判断submitid来确认是谁发过来的消息,然后进行处理。而且收发消息有个基本的原则就是尽量减少与服务器交互的次数。比如说一个功能流程是以若干个“下一步”的方式与用户交互的,那么这里的原则就是每次“下一步”之后,都不向服务器提交,而是将用户所做的一切都攒在客户端,当流程走到“完成”的时候,再一起扔给服务器,当流程较长的时候,最后一步向服务器的提交使用事务。

    说实话,我也说不太出来这种方式有什么特别大的缺点,而且我也不知道这种在Page_Load里面通过submitid来判断消息来源的做法到底是创举?是伎俩?还是普遍使用的方法?前两篇文章所带来的巨大争议已经让我彻底认识到自己已经与当今MIS开发的前沿差距甚远,所以这里的和以后的很多问题本人都不敢妄下结论,但有一点可以肯定:没有绝对最优的方法,只有在一定条件下相对最优的方法,脱离特定条件谈最优是没意义的。

    服务器控件和HTML控件什么时候该用谁在MSDN中有个大致的原则,这里就不列出来了。就我个人感觉,使用服务器控件带来最大的好处就是程序中结构更加清晰了,模块的职责更加明确了,编程方式也简单了。在一些场合,比如无论是否使用服务器控件都需要提交给服务器处理的地方,使用一下它还是合理的。但如果就连选择籍贯省市的下拉框都要用服务器控件来提交一下,同时刷新页面的话,那的确很恶心。

    由此我想到其实ASP.NET在客户端与服务器之间作负载均衡方面不是很让人满意,需要开发人员自己根据需要进行调整。如果能在Web应用开发技术中有一个基本的负载均衡机制,那就好多了,不知道现在基于ASP.NETMIS项目中有没有考虑过这个方面问题的。也许加入了AjaxAtlas)的ASP.NET2.0能让人兴奋一下,拭目以待吧。

    写完了。

    是不是觉得这么有个性的题目下面配上一篇如此平淡无奇的随笔非常不协调,看过之后有种被骗的感觉?嗯,我也有同感。但我也的确没想透过这些文章表达自己对MIS项目开发中某种技术特别有见地的观点,只是把日志总结一下以备自己和需要的人查考。

    今天开始冷了,是睡觉的绝好天气。1945II三个币之后上床呼呼……

还未完,仍待续

下篇预告:倒退的历史?——某MIS项目手记(4):你中有我,我中有你的JavascriptVB.NET(题目暂定)

posted on 2005-10-23 00:10  合金枪头  阅读(763)  评论(2编辑  收藏  举报