上个月,JavaEye创始人范凯robbin的一篇博客《对.NET系统架构改造的一点经验和教训》 http://robbinfan.com/blog/43/rid-off-dotnet-experience 引起了大讨论,里面提到了京东“去.Net化”、“CSDN去.Net化”之类的词刺激到了一些人的神经,有的人在评论中破口大骂“.Net最牛逼,.Net搞不好是你技术不行”,有的人则骂“.Net就是垃圾,上不了大台面”。有一些还在微博上at我,问我“杨老师,.net是不是不行了,听说大网站都‘去.Net化’了”、“杨老师,关于‘去.Net化’你怎么看?”,所以我还是来谈谈所谓的“去.Net化”吧。   其实只要认真看robbin的文章,就会知道他并不是在说“去.Net化”而是在说“怎样搭建合适的网站框架”。注意看这段话:
    熟悉大型互联网技术架构的人应该很容易的发现,这个重构过程其实就是一个“让合适的东西干合适的事情”这样一项工作:1、把过多业务逻辑写到存储过程中必然导致数据库服务器压力的增大,而且不利于负载均衡,因此去“存储过程”是必要的; 
2、SQLServer实现集群的能力很差,用MYSQL之类的数据库是一个不错的选择; 
3、缓存还是用.Net内置的InProc缓存机制对于高并发的网站来讲是一个灾难,用Redis之类分布式缓存来代替是必然的过程; 
4、使用.Net Remoting之类的私有协议不利于异构系统集成,改成webservice、REST也是必须的; 
5、静态文件的请求也经过IIS有点太劳烦IIS了,扔给nginx才更合适; 
6、Windows服务器的文件系统很不灵活,换成更加灵活的Linux下的分布式文件系统是聪明的; 
采用LVS、nginx之类做负载均衡也是最合适的。    其实任何一个大型互联网基本都是这样一个架构:前端使用nginx等做负载均衡,使用Redis、memcached等做分布式缓存,使用数据库集群进行读写分离之类的优化,使用分布式文件系统处理图片等静态文件。   请问,使用PHP、Java等做web服务器开发的大型互联网,哪个使用JSP内置的Session对象做Session的,不都要换用redis吗?哪个把图片和php放到一个服务器的,不都放到文件服务器中吗?哪个一个apache服务器就可以扛起来的,不都是nginx之类的挡在前面做负载均衡的吗?  怎么不说“去php化”、“去java化”呢?要知道redis、memcached、ngix之类的可都不是java、php写的呀,一个java项目竟然用其他语言写的东西,难道不丢面子?    其实一个大型的系统中,根据项目的不同特点来组合搭配不同的产品、组件是一个必然的过程,去了解一下这些系统中“混搭”是常见的现象。单一产品中提供能的功能只能满足普通项目的需求,要想满足复杂的项目,必须把这些产品中提供的一些傻瓜化的简单组件用更专业的组件来替换,就像做小项目php中的Session足够了,但是大项目必须用c/c++开发的memcached来替换。    我前阵子我发了一个帖子《【分享】.Net有哪些大型项目、大型网站的案例?》http://bbs.csdn.net/topics/390463825 ,这个帖子中提到的.Net技术的大型网站绝大部分都是“混搭结构”的(这些网站中至少有10个有传智播客.Net培训班的学生,我都跟他们交流过他们的技术架构)。很奇怪的一件事情是,在Java、PHP社区中经常可以看到讨论这些“架构”的文章,但是在.Net社区中则很少见到有人分享这些东西。希望.Net社区中的技术大牛们以后能把这些经验多多分享,让更多的人能够了解这些技术并且在项目中应用这些技术,提升.Net社区讨论技术的层次,不要让.Net社区的人总是在讨论一些很初级的问题,最起码不要只是为了不同网页头尾统一就使用又笨又重的MasterPage(其实用一下shtml就可以了)、不要讨论个三层架构就认为是架构师了、不要弄个代码生成器就是高科技了……咱们也要真正的拥抱Best Practice、拥抱混搭。   不希望这个帖子又成为不同语言相互攻击的月经贴,希望大家讨论一些真正有用的东西。

解决方案 »

  1.   

    难怪他的网站要倒闭,背井离乡的寄人篱下来到CSDN。
      

  2.   

    “这个也不用.net,那个也不用.net”,最终怎么又可能落实到“用.net”上呢?为了多忽悠一些上学时没学到知识反而靠职业培训的学生而作出的文章,有时候你就只能站在三流商人的角度,有时也是无法自圆其说了。
      

  3.   

    我们公司网站规模比较小,接触不到这个方面。
    asp.net mvc应该是java的差不多了吧,其它方面都不是.net的问题,而是windows上的软件不给力的问题。
      

  4.   

    不用.net的人,怎么能说.net不好,就像我们不用php,怎么能说出php的不好之处,说白了就是钱在作祟,php+myql至少他是开源免费的,不用考虑windows安装环境,但我们的net简单易用,代码的可读性比较强,虽然windows系统频报漏洞,但也还可以让客户接受
      

  5.   

    Windows服务器慢,很重要的一个原因是由丰富的用户界面交互造成的,如果用命令行模式一样很快。只是又会有人说,那还不如直接用Linux呢?
    Linux也并不是没有漏洞,任何一种平台或者技术都无须神化
      

  6.   

    确实用.Net开发的大型互联网比较少,其中的原因比较多吧,但用.Net做企业用的还是挺多的吧。各有各的应用领域而已。
      

  7.   

    5、静态文件的请求也经过IIS有点太劳烦IIS了,扔给nginx才更合适; 
    这一点,我一个同事,使用LoadRunner进行了压力测试,
    同样配置的机器,安装Win2003+IIS和Centros+Nginx,默认配置,反复请求同一个html,结果压力测试结果,tps基本一致,甚至iis略高,是不是测试太单一化,导致的这种结果呢?
      

  8.   

    说的其实都是一些常用的东西跟net不net没半毛钱关系
      

  9.   

    lz说的不错。大型网站的架构也需要精细化分工,nginx,redis,memcache,hadoop,flume,TFS 等专业的开源中间件已经深入人心,而且性价比的确很高。大家只有一个目标那就是性价比,在有限的资源提高并发。所以没必要纠结于语言。
      

  10.   

    所有平台都是有漏洞的.net 平台有微软做后台,安全性还是有保证的!所以很多企业还是用.net的,一个免费的东西管理一个公司的系统,不要钱你放心吗?!!!
      

  11.   

    如果搞一些网站开发,或是ERP之类的,感觉没有得很么创造性,因为这些技术已经很成熟了。大家还是用程序做一些奇特的东西吧,比如谷歌眼镜之类的,也不是太高深吧,你在其它的一些东西里可以看到他的影子,只是他是一个集大成者,并且被人们所接受的东西吧。我敢肯定永不了几年国内就会出现类似的山寨眼镜事实上是我们有技术,但缺乏想象力,或者是其它的某些因素。
      

  12.   

    我类个去
    说实话我来到csdn很久了net板块发的帖子都是初级贴
    我是新手 只要问一点厉害的问题 就没人回复我
      

  13.   

    这些网站中至少有10个有传智播客.Net培训班的学生,我都跟他们交流过他们的技术架构
    显然本文重点是这个 传智播客杨中科
      
    杨中科,传智播客联合创始人、如鹏网发起人。现为传智播客教学总监。 2005年毕业于山东大学物流工程专业。曾任职于微软中国、金蝶软件等知名IT企业。撰写了《J2EE开发全程实录》、《自己动手写开发工具》,《程序员的SQL金典》等技术图书。另外网上流传的13季.net视频被誉为入门级经典。
    主导了金蝶EAS湖南烟草局SCM系统、字符终端图形库AHA3及开发工具AHAIDE、上海浦东发展银行图形前端等项目的开发,并且在中国工商银行批量平台、集中监控运维系统(部署于中国工商银行、中国农业银行、交通银行、北京银行、深圳发展银行等大中型银行)、力诺集团呼叫中心、新广源集团呼叫中心等项目中担任主力开发人员。 杨中科创办了为计算机初学者提供学习指导的公益性网站如鹏,运营两年多来,撰写的大量的学习方法的文章和《C语言也能干大事》等视频教程帮助无数的计算机初学者走出迷茫走入正确、快速发展的通道。正因为传智播客培训出了合格的人才。所以现在都不用.net了!
      

  14.   

    其实我对这些东西不是很明白,但我一直用的是.net,所以不能说它到底好还是不好,应该说是各有优势吧