随笔-20  评论-493  文章-1  trackbacks-14
 

我不想再次引发争论,但我希望可以加强这方面的讨论。

边吃早饭边看新闻,看到了老赵(大家都这么称呼,比较亲切,我也这么称呼吧^_^)的一篇WebForms说几句话,以及一些ASP.NET开发上的经验(上) 不管我是不是被老赵纳入了“跟风”MVC的行列,还是有一些话想说。

首先还是强调一下个人立场,我不是老赵文章中说的一味反对Web Form,而只是去拥护MVC的人(如果暴露问题就属于反对的话,我之前几天说的MVC(CTP)的问题要远远多于Web Form)。对于我来说,目前对MVC也只是尝试,但是拥护MVC的情节是早就有的,至于对Web Form一些缺点的体会和归纳,是我长久以来得出的结果,和MVC的出现无关(当初TT.NET推荐我用ASP.NET1.1的时候,我花了一个多月了解和测试.NET1.1,其中一些缺点我当初就和他讨论过,用了.NET1.1几个月后我就已经在嚷着要MVC了)。

还有一点必须强调,我这里所说的Web Form MVC都是他们最基本的模式。

我这里要讲的也是符合我开发背景的,关于企业级系统的开发,没有任何贬低Web Form的用意,毕竟两者面向的开发对象有所差异。

一、       对于老赵文章内容的看法

我赞同老赵对于Web Form 的大部分看法。对于MVCWeb Form上面的一些差别,我建议老赵了解尝试了MVC(不一定是目前的ASP.NET MVC CTPScott讲的只是使用技术方面,并没有对MVC本身具体展开)之后再做讨论,不然很容易拿起石头砸自己的脚(比如老赵说的关于ViewState的观点,我完全赞同,并且ViewState也确实是在很多情况下可被取代的。但这也正是MVC赞同的,所以才会有MVCV的现行模式)。

当然有一个客观事实我们必须承认:每个人的开发背景不同,所以对于技术的需求和看法也是不同的。我们不应该对某项技术偏执的反对,但同时我们有暴露和讨论这些技术缺陷的责任,同时包括Web Form MVC暴露问题不等于反对,如果我反对一项技术,我根本不会去评论,因为我不是评论家,也不是喜欢靠挖苦别人来发泄自己不满的人。中国有句古话:爱之深,痛之切。

二、       我个人的一些体会

每个人的体会都是跟他的经历和环境有关,我也不例外。我上大学没有选择计算机专业,而选择了物流专业,因为我看中了物流+IT(e-c)这个方向,并且对于计算机特别Web方面,我是自信自学能力很强的。这也决定了我在之后的很长一段时间内,需要以企业级Web开发为中心(为什么是选择Web而不是Win Form,以后有机会我会具体谈谈)。

我下面来谈一谈为什么我更青睐MVC(或者说打接触ASP.NET一开始就期待MVC)的原因。这里我没有反驳老赵观点的意思(因为我们面对的需求可能不太一样),对于老赵的敬业我是发自内心敬佩的。

但这个问题上我很客观,还是要拿老赵的一句话作引子:“不如编写一个内置1000个动态Button控件的页面,然后部署到服务器上,我保证运行的飞快”。

这种测试在我所经历过的企业级的开发中,是行不通的(即使一些朋友做的外包的小工程(也可能是大系统中的一小部分)我们完全可以有理由相信这样的结果)。我觉得原因有这么几个:

1、企业级的发开更注重“安全”“可靠”和“使用效率”。“使用效率”可以理解为“用户直观体验”和“数据处理能力”的总合,然而对于Web来说,比单机软件更要多一条,就是“传输效率”。所以“运行的飞快”不是企业级系统追求的最主要目标,“运行的爬慢”也不是企业级系统最需要解决的瓶颈(这种系统往往硬件上的投入不成问题。只是往往,万事不会绝对)。

但是有一点似乎被很多人忽视了,就是一个程序员解左右不了的问题——B/S的实际传输速度。对于一般的网站而言,使用PostBack(包括cnblogs也有使用)和不使用PostBack的网页,信息流畅的情况下,差别微乎甚微。即使在网络条件十分差的情况下,当你执行了PostBackIE卡住(延时)了,你等待几秒钟,几十秒钟,甚至直到超时了,你刷新一下,一切又恢复平静。试问,对于企业级的系统,允许这样的情况屡次发生吗?

让我们来举一个例子(由于企内系统不一定每个人都熟知,我就举一个大家都能理解,但是不是最贴切的例子,因为技术上不能完全的等同,但流程和道理是相似的,并且是在我所学专业内,我可以十分负责地提供说明。特此说明,希望不要误导了大家):

比如我们经常会去超市购物,收银员拿着一个红外线扫描仪(扫描枪),对着条形码一刷,一般在1秒钟内你可以听到“嘀”的一声,等刷玩了,你就可以付钱走人了。一切看起来再普通不过,波澜不惊。但是你知道“嘀”的一声发出来之前发生了什么事吗?这是前台和后台的一次对话(就1件商品而言,并且是最普通的情况):

POS机(Point of sales):“我有商品需要卖出,这里是条码。(当然还可能有POS机编号之类的,这里不用考虑)”

服务器检查完条码正确、可用性,并搜索价格和库存:“可以出售,这里是价格”

POS机:“收到。”(嘀)

同时服务器需要扣除对应数量商品库存,处理账单(所有商品输入完之后),如果库存到达“预定周期”的存货底线,马上会发一条消息到采购部门,要求马上送货,从而拉动整条供应链开始运转(从这一点上来说,很有可能你这最后一“嘀”,一条生产线开始运转,一架飞机就马上从美国飞过来了,当然不只是为了你一个人,是不是很有成就感^_^,闲话)。

这个过程中,POS机和服务器的通讯,我们可以简单的看作前两句。因为服务器给POS传输结果是很快的,也是不可避免的,所以我们暂不考虑,我们来研究一下第一句话——“这里是条码。”

按照PostBack的思路,可以这么做:条形码输入在一个TextBox框中,由一个按钮负责回传,这时候可能会把另外的一些无关的控件信息也输入进去(这些控件可能同样不只是显示,有PostBack功能,所以ViewState不可避免)

按照MVC的思路,可以这么做:条形码输入在一个TextBox(input:text)框中,用一个按钮把EAN13=690xxxxxxxxxx , PosNo=xxxx 等等关键信息传入处理器即可。

换句话说,普通的Web Form 模式,在这里会产生比较多的数据量(老赵也提到了),并且需要服务器去重构并分析,而就一般MVC模式而言,可以直接对服务器发出一条指令(URL),几乎没有多余的信息。

如果一位服务员刷完条形码过了5秒钟还没听到“嘀”,或者干脆“超时”了,这对于超市来说意味着什么?

拿沃尔玛说,2005年的时候5139家分店每秒钟销售8126亿美元的商品(我怀疑资料上统计错了,但数量很大时肯定的),光POS机一个环节就要担负这一秒钟内的多少毫秒。熟悉工艺流程或者制造流程的人肯定知道,对于这种对把握时间精度的要求相当高的系统来说,延时哪怕1秒钟有多可怕。

PS:我之前已经说过这个例子不是最贴切的,所以大家千万不要以为POS就是这么工作的,也不要因此去追究POS环节的种种其他可能(事实上确实就是其他方式)。因为至少POS目前一般不会使用Web技术,一般的商店也只是局域内处理,速度差别一般人感觉不出来。因此大家也可以简单地理解为不同两个公司之间Web上订单的传递(实际还有很多其他更复杂的环节),他们可以是跨公司、跨城市甚至跨国的,并且数据传输是连续的,这时候数据传输越少,就越快、越不容易出错,而且可以直接提高“使用效率”(就象物流成本的降低直接作用于收益一样,它不是“生产”环节,而是额外的“成本制造者”)。这种情况下,一份订单发出去,结果你页面上持续半分钟一片空白或者干脆超时了,这样的系统是不合格的。而MVC结构“指令性”的URL,可以至少在数据传输这个方面很大限度去避免这种情况的发生。

我还是要再次说明一下,我这里完全是针对企业级的系统而言。

毕竟MVC的出现就是为了解决ASP.NET先前在企业级系统开放上的一部分弱势!

2、我刚才的例子还只是讲到了ViewState的一些情况,对于企业应用来说,其实还有更多的要求,比如——数据传输处理时尽可能少地依赖本地软件和第三方软件支持(Web范围内)。PostBack在这方面最大的不足就是,普遍情况下使用PostBack就必须使用js不信的话大家可以打开一个带PostBack的页面看一下,是不是有类似这样的代码:

function __doPostBack(eventTarget, eventArgument) {

    
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {

        theForm.__EVENTTARGET.value 
= eventTarget;

        theForm.__EVENTARGUMENT.value 
= eventArgument;

        theForm.submit();

    }


}

浏览器任何时候都支持js吗?

——非也!

心动不如行动,大家可以马上测试一下!打开你的浏览器(就IE吧,统一一点,我用的是IE7),工具>Internet选项>安全>把安全级别设到最高(别说一般人不会用,我这说的还真不是一般人,再说有这功能你也不能不让人家用对吧?),你现在重新打开PostBack页面,

还能用PostBack不?

——不能!

对于一个企业级系统来说,为了迎合PostBack之类的种种原本可被替换的功能,让客户冒着其他风险开放js功能(还不只是js方面的风险),这样的系统,这样的程序员,是不合格的!或许光这这些大大小小的“非独立性”,就促使了ASP.NET在企业级开发领域目前进展缓慢的局面。

哪怕是面向中小型客户,如果一个软件需要对方这边注意,那边注意(就比如不提供任何日期格式验证和自动选择,后台却要求一定要用户输入正确的日期格式),这样的软件大家会喜欢吗?当然这里大多都是电脑高手,这点问题都是小case,况且一般也不会用到,但对于你的客户来说,他们没有这种义务!特别是专注效率和可用性的企业级系统用户!

所以微软为了造就ASP.NET领域合格的,强大的(或许是很久以后的事),顺应企业级开发的框架,推出ASP.NET MVC(哪怕是别的,至少原始的Web Form架构不太适应)是

势在必行!

3、至于比较底层控件的效率,虽然我之前说对于我目前面对的系统不是最主要的考虑对象,但是也是必须考虑到的,还是引老赵的那句话来说:“不如编写一个内置1000个动态Button控件的页面,然后部署到服务器上,我保证运行的飞快”。

其实这种测试就我现在的中小企业级开发对象而言有点荒唐(没有贬义,老赵之前也没有对MVC面对的企业级开发现状有深入了解),就好像看一辆汽车是否超载的标准一定是要他发生车祸或者把地盘压断吗?

如果非要测试,这样的单线条的载入速度确实直观上难以判断,我觉得应该这么来:编写一个内置1000个动态Button控件的页面,另外加100100行的Gridview(使用ViewData),然后部署到服务器上,然后把这1000Button依次按一遍,记录总响应时间(传输时间+处理时间+IE显示延时,不计算鼠标等操作时间)。同样的显示内容我们用MVC做一遍,记录总响应时间。

这时候你还认为Web Form在这方面没有缺陷吗?当然我和老赵的例子都把数字夸张了,是为了达到比较直观的判断效果。但是即使是更少的控件,在一段时间的使用后(如1天、1周,还是针对企业级的系统而言,他面对的是更多的报表和复杂的页面处理和更多的终端同时运行),数据量可能会远远超过我们的测试条件。

我支持ASP.NET,支持Web Form,也支持MVC

就面向企业级开发而言,我支持MVC,放弃Web Form的选择,但不是为MVC的出现而放弃。在一定的条件下,我还会选择Web Form

毕竟没有一种结构是绝对完美、绝对适应任何环境的。一台全自动水洗洗衣机,放到黄土高原最缺水的地方,对当地人来说或许还没有夜壶来得重要。或许……

不同的框架开发出来的企业级应用能不能用?

大家都能用。

目前来看MVCWeb Form 哪个在前期开发速度更快?

Web Form

谁更适应企业级开发?

首推MVC


PS:

看到大家的评论我很感动,有这么多愿意讨论这个问题的人,实在是件好事!
但是希望大家务必前后联系起来看这篇文章,不要断章取义(特别是我举的POS的例子,似乎很多朋友都误解了)。

另外,我写这篇随笔,是为了大家能够更好地思考:在“企业级应用”上面,MVC和WebForm到底谁更适合。

39楼之后跟贴的朋友,如果你对MVC的存在有任何疑问,请先回答这么一个问题:MS推出MVC是为了什么?这样更有利于我们交流。谢谢大家!

http://szw.cnblogs.com/
研究、探讨ASP.NET
转载请注明出处和作者,谢谢!

posted on 2007-12-22 14:22 SZW 阅读(2988) 评论(147)  编辑 收藏 网摘 所属分类: ASP.NET MVC

评论:
#1楼  2007-12-22 14:30 | Zhuang miao      
好!精彩!帅!
  回复  引用  查看    
#2楼  2007-12-22 14:41 | 毁于随      
一天看了两篇这样的文章.爽.一直以来我以为.Net标榜的就是WinForm,WebForm,看来以后WebForm的同时还要加上MVC啦.
  回复  引用  查看    
#3楼  2007-12-22 14:45 | 老刀把子      
都是高人。 值得学习
  回复  引用  查看    
#4楼  2007-12-22 14:47 | 留恋星空      
学习,顺便说下,LZ的排版很好玩喔!
  回复  引用  查看    
#5楼  2007-12-22 14:56 | Jeffrey Zhao      
你没有听懂我的意思阿。
我不是说WebForms在执行上不会较MVC慢,我的意识是这种一定程度上的“慢”不会造成性能瓶颈,所以根本可以忽略。比如你说的1000个按钮和GridView,难道一个应用只有服务器端这部分处理,而没有数据库访问,外部服务访问吗?
再说PostBack,从你举的POS机的例子来看,你还是一定要用PostBack,而且说“普通的Web Form 模式,会产生较多的数据量”,但是我在文章中也说了,我们完全可以不用PostBack,我们什么都没有损失。指令式的请求,MVC可以做到,WebForms也可以做到。(我虽然没有写过,但是我了解过RoR和MonoRails的开发方式和实现方式,所以这些特点还是知道的,呵呵。不了解的可能只是对于真实项目里的开发体验,比如开发效率)
不要把PostBack和WebForms绑定起来,这完全可以分开考虑。
也就是说,如果只限于你这片文章里说的内容:
1、MVC能做到的,WebForms也能做到(可能有点绕,比如要配合URL Rewrite,还有自己写的一个组件,呵呵)。
2、WebForms的缺点,我完全可以避开,而且没有任何损失。//当然像禁用JavaScript之类的我就不去关心了,如果在这个前提下,世界上估计大部分的Web站点要挂了,呵呵。
  回复  引用  查看    
#6楼 [楼主] 2007-12-22 15:02 | SZW      
@Jeffrey Zhao
哈哈,我前面已经说过了,我就两者基本的框架和主要功能而言,我们不考虑替代方案,不然你完全可以把.NET当作ASP来用。
而我说的意思你可能真的大大误解了。在企业级应用中,我确实对WebForm中的一些“特性”(如PostBack)很无奈,但是我没有说我对整个WebForm也是这种想法。就好像我痛恨周围的一些不良行为,但是我还是很爱国的,这点不矛盾,甚至指出这些不良行为对于我们的发展或许更有利。您说呢?
  回复  引用  查看    
#7楼  2007-12-22 15:03 | ocean      
我认为有点跑题,pos机刷条码根本就用不到b/s的结构,所以根本不会传输多余的数据。每种技术都有应用的场景。我还没见过有收银前端用b/s做的。

对于企业级应用来说,web form也一定问题都没有,无论多大,因为web 页面上的事件的触发和postback之类的操作,只是为了引发某些业务逻辑,在大型的应用里面,真正耗费时间的是业务逻辑,而界面上的这种传递时间,包括页面在服务器上的生成时间基本都可以忽略不计了。
比如一个存储过程要生成一个报表,但是这个存储过程要执行一天的时间才能够结束,这时如何完成?我想你无论用web form还是MVC都无法解决这个问题。

所以这种讨论的意义不是非常大。
  回复  引用  查看    
#8楼  2007-12-22 15:03 | 小S [未注册用户]
谁会禁用 js ?在全球65亿人口中也找不到几个。
  回复  引用    
#9楼 [楼主] 2007-12-22 15:05 | SZW      
--引用--------------------------------------------------
1、MVC能做到的,WebForms也能做到(可能有点绕,比如要配合URL Rewrite,还有自己写的一个组件,呵呵)。
2、WebForms的缺点,我完全可以避开,而且没有任何损失。//当然像禁用JavaScript之类的我就不去关心了,如果在这个前提下,世界上估计大部分的Web站点要挂了,呵呵。
--------------------------------------------------------
1、我最后说了:不同的框架开发出来的企业级应用能不能用?大家都能用。关键是谁更适合。
2、MVC将要面对的更大挑战就是你说的在世界上估计大部分的Web站点要挂的设置下(出于企业级应用安全的过滤,不然IE也不需要有这个功能),MVC还能坚挺!

  回复  引用  查看    
#10楼  2007-12-22 15:06 | Jeffrey Zhao      
@SZW
其实我也说的是,我们可以放弃WebForms的一部分会造成困扰的东西,把握住方便的东西啊。比如PostBack,如果觉得企业环境中不好,那么就不用阿。看现在的网页,也没有感到有什么太多的PostBack。指令式提交只是“提交”方式,处理时还是用WebForms啊。
  回复  引用  查看    
#11楼 [楼主] 2007-12-22 15:07 | SZW      
--引用--------------------------------------------------
ocean: 我认为有点跑题,pos机刷条码根本就用不到b/s的结构,所以根本不会传输多余的数据。每种技术都有应用的场景。我还没见过有收银前端用b/s做的。
--------------------------------------------------------
很遗憾你没有仔细看我的文章,我已经说了与这个例子的用意和里面的一些思维方面向,你还是被“误导”了。
  回复  引用  查看    
#12楼  2007-12-22 15:07 | 飞雪尔 [未注册用户]
其实我倒觉得MVC的出现是主要是为了解决web前台页面使用webform带来的性能和浪费问题。用MVC实现的前台对访问量大的网站,比MVC实现企业级内部系统更具有实际意义。
我这里的前台指的是面向普通用户的页面,比如门户,新闻咨询类。是那种页面逻辑不算复杂,主要是呈现动态数据的页面,用MVC的意义就非常大了,cnblogs就应该算是这种类型。URL友好,代码简洁、数据交换方便简单。
  回复  引用    
#13楼  2007-12-22 15:08 | Jeffrey Zhao      
@SZW
当别人禁用JS时,我也可以让WebForms变成指令式提交。提交方式只是客户端的行为,MVC能够做到的,WebForms也能做到,因为只要生成一样的客户端代码就可以了。
  回复  引用  查看    
#14楼  2007-12-22 15:08 | Jeffrey Zhao      
@ocean
嗯,这就是我说的,我不相信会成为性能瓶颈。
  回复  引用  查看    
#15楼 [楼主] 2007-12-22 15:09 | SZW      
--引用--------------------------------------------------
Jeffrey Zhao: @SZW
其实我也说的是,我们可以放弃WebForms的一部分会造成困扰的东西,把握住方便的东西啊。比如PostBack,如果觉得企业环境中不好,那么就不用阿。看现在的网页,也没有感到有什么太多的PostBack。指令式提交只是“提交”方式,处理时还是用WebForms啊。
--------------------------------------------------------
我们终于说到点子上了。
既然在企业级要放弃比如PostBack,放弃ViewState,放弃一些客户端技术支撑,那么这不就是MVC吗?MVC和WinForm并不是对立的,是互补的。
  回复  引用  查看    
#16楼  2007-12-22 15:09 | Jeffrey Zhao      
@飞雪尔
只要合理使用,其实WebForms也可以做到啊,呵呵。:)
  回复  引用  查看    
#17楼  2007-12-22 15:10 | Jeffrey Zhao      
@SZW
你刚才那片文章里写过:有人说,没有ViewState,没有PostBack,WebForms还有意义吗?我的答案是:意义大的很……
  回复  引用  查看    
#18楼 [楼主] 2007-12-22 15:10 | SZW      
--引用--------------------------------------------------
Jeffrey Zhao: @SZW
当别人禁用JS时,我也可以让WebForms变成指令式提交。提交方式只是客户端的行为,MVC能够做到的,WebForms也能做到,因为只要生成一样的客户端代码就可以了。
--------------------------------------------------------
看来好像你还是没有理解我的意思,我这篇文章针对的是WebForm里面的一些“特性”,而不是真个WebForm框架好不好,要不要用。但是既然有了MVC,在企业级应用当中,为什么不选择MVC呢?
  回复  引用  查看    
#19楼 [楼主] 2007-12-22 15:13 | SZW      
--引用--------------------------------------------------
Jeffrey Zhao: @SZW
你刚才那片文章里写过:有人说,没有ViewState,没有PostBack,WebForms还有意义吗?我的答案是:意义大的很……
--------------------------------------------------------
没有ViewState,没有PostBack,又要顺应企业级开发,那就是MVC追求的,你为什么非要把MVC现成的追求的东西让Web Form去完成呢?
  回复  引用  查看    
#20楼 [楼主] 2007-12-22 15:14 | SZW      
--引用--------------------------------------------------
Jeffrey Zhao: @SZW
当别人禁用JS时,我也可以让WebForms变成指令式提交。提交方式只是客户端的行为,MVC能够做到的,WebForms也能做到,因为只要生成一样的客户端代码就可以了。
--------------------------------------------------------
既然有了MVC,为什么还要让WebForm那么勉强呢?是不是太固执了?

  回复  引用  查看    
#21楼  2007-12-22 15:15 | Jeffrey Zhao      
@SZW
我还可以享受WebForms其他方面得到的便利啊。比如“拖控件”,呵呵。
  回复  引用  查看    
#22楼  2007-12-22 15:16 | Jeffrey Zhao      
@SZW
还有我真搞不懂,为什么说WebForms不适合企业级开发,你说的Webforms的缺点其实都可以避免,而且并没有牺牲什么啊……
  回复  引用  查看    
#23楼 [楼主] 2007-12-22 15:16 | SZW      
--引用--------------------------------------------------
飞雪尔: 其实我倒觉得MVC的出现是主要是为了解决web前台页面使用webform带来的性能和浪费问题。用MVC实现的前台对访问量大的网站,比MVC实现企业级内部系统更具有实际意义。
我这里的前台指的是面向普通用户的页面,比如门户,新闻咨询类。是那种页面逻辑不算复杂,主要是呈现动态数据的页面,用MVC的意义就非常大了,cnblogs就应该算是这种类型。URL友好,代码简洁、数据交换方便简单。
--------------------------------------------------------
是的,不过cnblogs目前似乎还不是我们所说的标准的MVC结构
你的观点有一点要补充,MVC的出现不只是为了解决访问量,企业级的应用在开发、程序功能的分工等等方面都是有比较高的要求的
  回复  引用  查看    
#24楼 [楼主] 2007-12-22 15:17 | SZW      
--引用--------------------------------------------------
Jeffrey Zhao: @SZW
还有我真搞不懂,为什么说WebForms不适合企业级开发,你说的Webforms的缺点其实都可以避免,而且并没有牺牲什么啊……
--------------------------------------------------------
老赵你说对了!确实可以避免!避免之后,再加上合理的M-V-C功能分配,就是MVC!
  回复  引用  查看    
#25楼 [楼主] 2007-12-22 15:19 | SZW      
说着说着似乎我又是WebForm死对头一样,我重申一下,在现在的条件下,我仍旧在用WebForm开发,并且乐此不疲。
我这里的讨论限于“企业级应用”和MVC/WebForm的选择!

  回复  引用  查看    
#26楼  2007-12-22 15:20 | 飞雪尔 [未注册用户]
@SZW
我的话可能有歧义,我的意思是cnblogs是这种类型的网站,如果改成使用MVC肯定可以大大改善UX。
  回复  引用    
#27楼 [楼主] 2007-12-22 15:22 | SZW      
--引用--------------------------------------------------
飞雪尔: @SZW
我的话可能有歧义,我的意思是cnblogs是这种类型的网站,如果改成使用MVC肯定可以大大改善UX。
--------------------------------------------------------
恩,那我完全同意。
不过URL的友好WebForm也能做到,这点我们不能否认
  回复  引用  查看    
#28楼 [楼主] 2007-12-22 15:23 | SZW      
--引用--------------------------------------------------
Jeffrey Zhao: @ocean
嗯,这就是我说的,我不相信会成为性能瓶颈。
--------------------------------------------------------
我从来没说过什么同样的WebForm换成MVC就能解决或者产生“性能瓶颈”哦:)
  回复  引用  查看    
#29楼  2007-12-22 15:26 | Bolik      
我比较欣赏MVC模式
1、比较清晰的逻辑结构
2、按约定进行设计

关于MVC与WebForm我觉得都能够达到目标 殊途同归嘛
只是达到目标的路径究竟谁快谁慢对不同人是有不同结果的
究竟选谁那就要看个人的习惯了

不过我觉得大家现在讨论一下也是很有必要的
至少通过辩解能够揪出这两者的优缺点
假如能够深刻体会到它们的时候那价值就大了
  回复  引用  查看    
#30楼 [楼主] 2007-12-22 15:29 | SZW      
@Bolik
--引用--------------------------------------------------
不过我觉得大家现在讨论一下也是很有必要的
至少通过辩解能够揪出这两者的优缺点
假如能够深刻体会到它们的时候那价值就大了
--------------------------------------------------------
总算有人理解我的初衷了,谢谢你兄弟ToT

不过你说的“要看个人习惯”是就一般项目而言,对于一些比较特殊的应用,由不得我们的习惯,还是严谨一点好
  回复  引用  查看    
#31楼  2007-12-22 15:37 | kiler      
无语中。。。。。。

居然认为WebForms不适合企业级开发。

当你执行了PostBack后IE卡住(延时)了,你等待几秒钟,几十秒钟,甚至直到超时了,你刷新一下,一切又恢复平静。试问,对于企业级的系统,允许这样的情况屡次发生吗?

老大,企业级开发基本都是内网开发,能卡几秒钟,几十秒钟吗,你就是postback,1MB数据也没什么问题,顺便再说一句企业级开发中,对于性能的要求远小于大型的门户网站,要的就是稳定性,牺牲点性能没关系。

拿POS说事,你强,你见过用b/s模式的pos吗,市面上成熟的pos应用都是cs程序,和MVC有关系吗?像零售行业这样的可能用b/s系统做终端吗?真的到了那个级别数据的东西那就是网站了,或者使用是cs程序,和企业级开发(bs)无关。

使用PostBack就必须使用js!,还能用PostBack不?

企业级开发开发不是网站,不是你想用什么客户端就用什么的客户端,专注效率和可用性的企业级系统用户是为了用系统做业务的,不是为了用系统来弄些花里呼哨的东西的,客户为了使用系统必须要统一自己的客户端,要客户统一客户端设置并不是什么难事。别说要客户改改ie设置,就是要客户装一个。net framework那也是没问题的。

企业级开发要的开发效率不是性能,所以webform更合适。

MVC做企业级开发也不是完美的,不然JAVA那边也不会出现JSF这样的东东了。





  回复  引用  查看    
#32楼  2007-12-22 15:39 | 蛙蛙池塘      
老大们在发一篇给ASP拨乱反正的,ASP也挺好的。
  回复  引用  查看    
#33楼  2007-12-22 15:43 | kiler      
@蛙蛙池塘

Asp就算了。mvc可以很轻易的取而代之,asp的开发思想其实和mvc的开发思想差不多,只不过asp本身没有封装太多功能,所以使用起来不如mvc方便。

  回复  引用  查看    
#34楼  2007-12-22 15:47 | Zhuang miao      
好像谁也没听懂谁的意思,,,,然后大家都在胡乱评论...乱
  回复  引用  查看    
#35楼 [楼主] 2007-12-22 15:47 | SZW      
@kiler
1、我觉得你对“企业级应用”的理解有点偏差,企业级应用不等于“企业软件”!并且我很负责任的告诉你,MVC的“企业级应用”,绝对不止你说的“内网”层面的应用。

2、说POS,我举例之前已经说得很明白了,可能你没仔细看:由于企内系统不一定每个人都熟知,我就举一个大家都能理解,但是不是最贴切的例子,因为技术上不能完全的等同,但流程和道理是相似的,并且是在我所学专业内,我可以十分负责地提供说明。特此说明,希望不要误导了大家。

3、你既然说“企业级开发开发不是网站,不是你想用什么客户端就用什么的客户端”,那么为什么后面又说webform更合适而不是WinForm呢?难道你认为MVC不能和WebForm一样做成网站?

4、对于你的“我只想说,你没做过企业级开发”,你可以看看我光这半年做了什么:http://www.cnblogs.com/szw/archive/2007/12/21/1008924.html

5、对于你说的“MVC做企业级开发也不是完美的,不然JAVA那边也不会出现JSF这样的东东了。 ”我也没说MVC是完美的,你可以看下我最近几天的随笔,都是暴露MVC(CTP)问题的
  回复  引用  查看    
#36楼 [楼主] 2007-12-22 15:48 | SZW      
@Zhuang miao
--引用--------------------------------------------------
Zhuang miao: 好像谁也没听懂谁的意思,,,,然后大家都在胡乱评论...乱
--------------------------------------------------------
似乎没有多少人是前后联系起来看的,断章取义,大家的看法就更不一样了
  回复  引用  查看    
#37楼  2007-12-22 15:53 | 水果阿生      
形式上很猛,但是内容上还可以再精致一点,更有一点技术细节会更有说服力的。
  回复  引用  查看    
#38楼 [楼主] 2007-12-22 15:58 | SZW      
@水果阿生
--引用--------------------------------------------------
水果阿生: 形式上很猛,但是内容上还可以再精致一点,更有一点技术细节会更有说服力的。
--------------------------------------------------------
谢谢你的建议!对于MVC的评论我还会继续,我会采纳的!
  回复  引用  查看    
#39楼  2007-12-22 15:59 | kiler      
@SZW
1.对于大多数企业级应用基本都是内网的,原因很简单,保证性能和安全,对外提供的只能算是门户网站,如果你要说门户网站用MVC,我不反对。

2.关于POS那个例子,我只能说达到那种级别数据量系统的终端程序基本都是cs的,你举出的例子没有实际意义。

3.没错,我的确是认为将来富客户端技术会取代bs开发,因为客户体验更好,开发效率更高,但是我们客户端环境暂时还跟不上,将来一旦vista普及了以后,估计基于bs企业级开发就到头了。


  回复  引用  查看    
#40楼  2007-12-22 16:03 | 总算把发热 [未注册用户]
大家不要争了,想学就学,不想学习就拉倒。爱谁牛鼻谁牛鼻。别争了。求求你们了,拿出点时间学习。求求大家了!!!
  回复  引用    
#41楼 [楼主] 2007-12-22 16:06 | SZW      
之前回复过的朋友,文章那最后新加的PS请大家看一下
  回复  引用  查看    
#42楼  2007-12-22 16:09 | kiler      
@SZW
4、对于你的“我只想说,你没做过企业级开发”,你可以看看我光这半年做了什么:http://www.cnblogs.com/szw/archive/2007/12/21/1008924.html

这点向你道歉,我已经把评论里的话删了,我这个人脾气比较臭了,讨论技术问题容易激动。

我只是觉得大家对MVC和webform没有一个包容的观点,总是觉得webform很好那么MVC就一定很差我坚决不用,要么就是觉得MVC很好,webform很烂,其实两者完全可以共存的,没有必要为这两个东西分出一个高下。


  回复  引用  查看    
#43楼 [楼主] 2007-12-22 16:14 | SZW      
@kiler
1、没错,企业间EDI确实大部分是“内往”,但是由一个前提:战略合作伙伴或者像ERP那样,大型企业“租用”给中小企业。单就大部分中小企业对于比较完善的EDI或者ERP是负担不起的,还是要靠Internet/https

2、POS的例子确实容易误导大家,所以我反复强调了,我要说的不是在他的技术上,而是信息流上。我只是出于这个例子大家日常生活中比较多见,容易理解。让你也误解了,抱歉。

3、B/S的未来怎么样,不是微软说了算的,别忘了还有Google,而MVC也不是微软的专利


谢谢你的指正!
  回复  引用  查看    
#44楼 [楼主] 2007-12-22 16:19 | SZW      
@kiler
--引用--------------------------------------------------
kiler: @SZW
其实两者完全可以共存的,没有必要为这两个东西分出一个高下。
--------------------------------------------------------
确实是的,但是似乎很多朋友都太过于激动了。

但从另外一个角度讲,我觉得这只是观念上的问题,所以未必是坏事,这么多拥护.NET(不管是新是旧)的朋友在,真是.NET的福音
  回复  引用  查看    
#45楼  2007-12-22 16:19 | JerryChou      
字果然够大的,不过博主所提出来的论断有经过实际经验的检验不?还有,你所谓的“企业级系统”到底是什么系统,另外“企业级系统首推MVC”你怎么得出来的,简直不知所谓。
  回复  引用  查看    
#46楼 [楼主] 2007-12-22 16:22 | SZW      
--引用--------------------------------------------------
JerryChou: 字果然够大的,不过博主所提出来的论断有经过实际经验的检验不?还有,你所谓的“企业级系统”到底是什么系统,另外“企业级系统首推MVC”你怎么得出来的,简直不知所谓。
--------------------------------------------------------
WinForm和MVC在“企业级应用”方面的一些优略分3点作了评论(你也可以看作2点),关于“企业级应用”,这个不是我提出来的概念,是实际开发中根据实际需要被强化分割出来的一种概念,和“企业软件”不同,它不是特指某一种应用

对于你说的检验,MVC方面目前正在进行,WebForm方面我已经做过一些开发,所以总结出了对其中的一些弊端地认识,欢迎交流。

谢谢!


  回复  引用  查看