上个月,JavaEye创始人范凯robbin的一篇博客《对.NET系统架构改造的一点经验和教训》引起了大讨论,里面提到了京东“去.Net化”、“CSDN去.Net化”之类的词刺激到了一些人的神经,有的人在评论中破口大骂“.Net最牛逼,.Net搞不好是你技术不行”,有的人则骂“.Net就是垃圾,上不了大台面”。有些朋友还在微博上at我,问我“杨老师,.net是不是不行了,听说大网站都‘去.Net化’了”、“杨老师,关于‘去.Net化’你怎么看?”,所以我还是来谈谈所谓的“去.Net化”吧。 其实只要认真看robbin的文章,就会知道他并不是在说“去.Net化”而是在说“怎样搭建合适的网站框架”。注意看这段话:
熟悉大型互联网技术架构的人应该很容易的发现,这个重构过程其实就是一个“让合适的东西干合适的事情”这样一项工作:
其实任何一个大型互联网基本都是这样一个架构:前端使用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有哪些大型项目、大型网站的案例?》 ,这个帖子中提到的.Net技术的大型网站绝大部分都是“混搭结构”的(这些网站中至少有10个有传智播客.Net培训班的学生,我都跟他们交流过他们的技术架构)。很奇怪的一件事情是,在Java、PHP社区中经常可以看到讨论这些“架构”的文章,但是在.Net社区中则很少见到有人分享这些东西。希望.Net社区中的技术大牛们以后能把这些经验多多分享,让更多的人能够了解这些技术并且在项目中应用这些技术,提升.Net社区讨论技术的层次,不要让.Net社区的人总是在讨论一些很初级的问题,最起码不要只是为了不同网页头尾统一就使用又笨又重的MasterPage(其实用一下shtml就可以了)、不要讨论个三层架构就认为是架构师了、不要弄个代码生成器就是高科技了……咱们也要真正的拥抱Best Practice、拥抱混搭。 不希望这个博文又成为不同语言相互攻击的月经贴,希望大家讨论一些真正有用的东西。 |
|
来自: 昵称26681333 > 《.NET框架应用》