blog.donews.com 瘫掉是五一期间的事儿,当时报告给J先生后就顺便Post到MyDoNews上,顺便也提了下.Text的不是。接下来是cnlamar路过对我的分析作了一个纠正,恰好admin看到,提出了一点异议,再后来,dudu也过来了,于是乎,大家就.Net的性能及.Text的相关问题开始了陆陆续续的讨论补充。这些评论没有谩骂和人身攻击,句句中肯,相当精彩,波波认为有必要让这种讨论继续:
首先看cnlamar路过时说的话吧:
这也能怪给.net?似乎.text0.96的性能本身就不是特别的好,老外的程序似乎对性能并不重视,读过.text的代码就应该知道这玩意虽然编写严谨,结构良好,但确实没有考虑过性能问题,高负载完全靠高性能的服务器来满足,程序只重视结构的良好性和功能的实现。
并且.text的负载能力应该也还是不错的,不过不清楚不知道BLOG.DONEWS.COM到底有多大的流量,是不是可以考虑做个集群什么的。
这句话由我在blog中抱怨”垃圾的.net“引起,接着cnlamar提出了.Text的性能问题,同时也提出了自己的观点:”高负载完全靠高性能的服务器来满足,程序只重视结构的良好性和功能的实现“,然后是admin路过,他针对我和cnlamar两个人的观点做了点评:
……以一个技术人员的身份来探讨这个问题,.net确实存在了很多问题…….text 得代码不仅不好,而且是非常不好,所谓结构严谨,无非是骗骗外行,.text是过渡设计得典型失败品。我们也是受害者。
观点很明确:”.Text是失败品,.Net存在问题“。问题在这个时候得到深化,cnlamar给出了长篇的留言来解释开源代码和非开源产品的性能,然后继续指出了.Text的不足之处:
……而我认为一个程序的结构好坏,很大程度取决于他的抽象程度,这一点,通过我读过的text的代码,做得似乎还不错,我印象中读过的主要就是各种请求的处理部分,我读他的目的是因为自己写一个blog程序,为了搞明白trackback的的处理格式。。。…….text这玩意我如果没记错,似乎几乎没用存储过程之类的东西,也没有使用静态或者cahce之类的东西,而且一个很简单的处理,他似乎都为了保证抽象度而浪费了更大的开销,所以性能肯定好不到哪去,这是我对.text一直的印象。。。……
这个时候cmlamar对admin提出了一个问题:”不知道admin你认为.net的缺陷主要集中在什么地方”,同时举出了live.com和招行两个例子,个人认为这两个例子并不能说明问题,其一:个别的例子说明不了问题,其二:live.com和招行本身并不是很成功的例子。
并且这个时候,由.Net带出了IDE的讨论,我的观点是”.Net的发展很大一部分归功于IDE的推动”,cnlamar基本赞成这一观点,但在后来霍炬给出了对IDE更为广义的解释–这是后话,继续往下看是admin回来对.Net的一些缺陷作了列举:
1 可以做企业级应用,不可能做电信级应用。
2 .net复杂度太高,vm得层面上有问题。(这个是感觉,没证据)
3 内存管理上有问题(有证据,从com开始就这样,引用计数一直有问题。著名得datareader得问题就是引用计数出问题造成的。也因此,iis需要回收这个功能,而不是仅仅靠vm层面得真正得gc。再另外说一下,我觉得用引用计数这个思路就不可能解决问题。)
4 .net可以用,如果你能得到足够有力得支持。
5 我不是反ms人士。asp其实反而不出问题,因为够简单。这和php稳定是类似道理。简单得,一定稳定。
6 .net和win/iis绑定太紧密,所以想作点变通很困难。上了ms得船,就下不来了。
这个时候cnlamar逐条作出了分析:
1、2两个问题是关联到一起的,我也没证据说.net就绝对没问题,所以这个就不好说了,等他日后证明吧,不然实在没办法。。。
3、内存管理那个问题,好象是VM的自动内存管理,目前唯一的办法就是引用记数吧,这方法也用了狠多年了,在我看来,确实是一种不太理想的办法,但似乎也没什么问题,好象也就是一种感觉问题来的。。。
4、live是否改动归.net的代码,我不知道,但是MS自己的官方页面肯定是用的标准的.net,这个被证明的,至于其他的大型系统是否用了,我不敢确定,可以搜索一下看看,希望以后能多起来。
5、我也绝对不是”挺ms”,恰恰我对asp的印象一直不大好,一直担心他好象会某天又出什么问题,仿佛记得asp一路上问题不断。。。不过好象很多年过去了,似乎还是挺好。。。确实有时候必须得程序,越简单越问题,搞那么多复杂的花样其实是起了副作用。
6、.net和iis/win的集成程度确实有些过分,所以基本上,他和iis做的什么集成验证什么的,我都不大爱用,包括.net2的时候的 web part,非要和他的会员系集成才能用,于是我放弃了这条捷径,自己做了1个。。。不过也好,没他那么庞大,效率自然也好些。
7、还有对.text,如果这样说,倒也不是不可能,内部的东西我没有很仔细的读过,只是看了些皮毛,但说实话,依照我对他的观察程度,只能是这样的印象:1、对大型系统肯定支持不了,缺少必要的优化;2、结构质量应该还是不错,好象分得蛮清晰的,处理、逻辑什么的,逐一分开,同时也就很自然的具备了分开部署的能力,维护性也更好。至于你说的他对IIS的接管模式,估计是对请求的处理部分,这个东西,我觉得吧,很搞笑,但是我说不好,这样做的对错,我怀疑作者的动机是想使用URL重写来处理html的请求,那么自然就很需要接管部分IIS的操作了,但是他对tb什么的东西全部都这样处理,确实,我也没想明白他为什么要搞得那么复杂,本来的想法是,别人也不傻,既然这样做,肯定有原因,仔细琢磨琢磨再评价,而你这么一说,好象确定的是作者的试验?!
cnlamar 在解决大数据存储时似乎并不提倡散列存储,然后在讨论中带出了Linux下的.Net框架:Mono,并提到了.Text的后续衍生版本CS。当然对Mono的讨论只是带过,最主要的还是集中在.Net和.Text上,admin给出了新的评论:
2 关于电信级应用。.net大量应用了webservice,当时试图在这个领域赌一把,但是现在看来显然是失败了。还是重复和孟岩聊天的时候表达的观点:重量级面向企业开发工具在互联网上没有那么有效,反而hacker们拼凑出来的那些玩意更有效。
3 关于IIS。win没有应用服务器的概念,ms的人往往告诉你,win本身就是应用服务器。一个无法拆分而又极其复杂的东西,很难具有真正的弹性。java虽然也很重,但是至少可以分层。
4 .text的代码,实在算不得清晰。我前面说过了,我认为是过渡设计的典型教材。其实,一个blog系统真的需要那么复杂吗?对于url rewrite的应用,真的需要搞到如此繁重吗?对比wp来看,很多地方实在是很好笑的。
5 mono 仅仅是 mono,虽然号称能编译.net的代码,实际上没什么意义,他不可能作的比ms更好,因为这个游戏规则是ms定的。就象borland,空有一身武艺,还不是要乖乖跟着,直到被抛弃杀死?
很显然的就可以看出admin对.Net和.Text的态度。问题还没有了解,因为目前讨论的都是.Net的不足,这个时候dudu经过,给出了一个例子:
MySpace.com每天的Page View量高达15亿,他们现在用的是ASP.NET 2.0和IIS6。
这为cnlamar阐述自己的观点提供了一个强有力的证据。:p,果真,cnlamar在接下来的阐述中很快的就利用了这个具有说服力的例子。cnlamar依然针对admin的几个观点逐条表达了自己的见解,并且很坚持自己的看法,这期间,dudu也阐述了自己的观点:
1、CS应该说是ASP.NET Forums的后继版本,CS与.Text中没有多少关系,CS只不过在设计时参考了.Text的一些功能。.Text上一些独特的地方,CS中并没有,比如:通配符映射。我觉得CS是基于ASP.NET Forums的重新设计,开发CS的公司以前就是开发ASP.NET Forums的,后来.Text的开发者加入CS,而放弃了.Text。
2、支持cnlamar的观点,缺少完整的框架也是.NET在企业级应用存在的问题,一项新技术需要一个发展过程,.NET在成长,而且成长的势头不错。我个人觉得.NET正稳步地走向成熟。
3、IIS只不过是与Apache一样的Web服务器,我觉得真正的.NET应用服务器应该是基于.NET平台,运行在CLR之上的,目前虽然还没有.NET应用服务器,但随着.NET的成熟,我相信会出现这样的产品。
4、to admin: 根据我对.Text的研究,.Text并没有过渡设计,反而是设计得不够,在大型网站中使用.Text作为Blog系统会遇到很多问题。Blog系统可以很简单,也可以很复杂,比Portal还要复杂,这要根据具体的需求。
5、我觉得mono的问题不在于MS,而在于开源能否做得比商业公司好。
接下来admin的一个观点让我非常感兴趣:
.text是不是过渡设计。这个个人有个人的看法,按照ms流派的观点,哪个大概算不上过渡。但是按照unix哲学,实在是太过渡了。所有东西都被紧密耦合再了一起,修改和拆分都很困难。其实什么叫不过渡设计的呢?
netstat -an | grep myip | awk ‘{print $5}’|sort|uniq
这样才叫不过渡设计,每个工具各司其职,然后用有效的管道连接,我看来这才是简单的,美的。以及
unix用户需要的是c,shell script,php,perl,python,lua,lisp,甚至还有java。
如果将这次讨论划上派系标签的话,admin应该属于unix派系吧。当然,还有后来的霍炬,都同属于unix派系了,在对IDE的解释中,霍炬给出了一个非常有意思的说法:
nix世界为什么没有ide?因为,你深入了解了就知道,整个系统就是一个巨大的ide,脚本的配合,各类精巧的工具,随手拈来,舒服的很。何况还有vim这样超级强的工具。
这让人感觉有点较真的意思,但事实上,在*nux下作业,依赖这种程序或脚本间的可偶合的组合。但是,应用程序的开发,不仅仅是程序体部分,UI是软件很重要的一个部分,就这点来说,VS.Net足够优秀。
接下来的讨论话题基本已经与.Text偏离,主要集中在VM与托管语言上,感兴趣的朋友可以一起来讨论,欢迎你提出新颖的观点!