Explore. Dream. Discover.

Samuel Chen's life

Twenty years from now you will be more disappointed by
the things that you didn't do than by the ones you did do.
So throw off the bowlines. Sail away from the safe harbor.
Catch the trade winds in your sails.

Explore. Dream. Discover.
—— Mark Twain

2004年10月27日 星期三

回头看.Net的优点与进步

最近公司要竞标一个项目,对方指定要.Net,因此又重操旧业,整理一些.Net的技术优缺点。
水平所限,若有错误之处,请斧正。
  1. Web Service: 基于SOAP协议的功能抽象层,利用xml作为载体的文本内容完全可以通过http协议访问,具有穿透防火墙的能力,同时满足远程/本地调用以及b/s c/s调用,能极大程度的隐藏实现细节;不同的service可以部署于不同的host进行分布式调用而分散压力;当然这不是.net特有的。
  2. smart client: 对于客户端的操控能力强于html browser,可以通过http发布,还可以自动升级,部署成本近乎为零。
  3. ASP.NET User Control: 大大简化传统browser页面开发的复杂程度,增加代码重用的机会,提高模块化程度,最大的优点是大大增强了页面功能,其事件模式改变了b/s开发的模式,但它也是一把双刃剑,页面-服务器的事件也是效率的最大敌人,因此不可滥用。
  4. XML: .Net 的xml支持作的相当不错,有专门的name space来处理xml相关问题,同时dom对xml的处理速度还是比较理想的。
  5. Performance: .Net托管代码的效率比native的代码要慢,据统计慢大约15%~20%;曾有人将quake2的c代码改到托管的c++代码(vc7 delegate),效率降低约15%;但是可以考虑在运算密集的模块使用com/com+,vc7是ms有史以来对standard C++支持最好的一次,同时编译的是native code,因此无论是效率还是标准都有保证。
  6. Open Source: 自从.Net诞生以来,open source社区从来没有过如此的关注过ms开发,大量的优秀平台框架和软件从java移植到.Net上,如Spring, hibernate,ant, log4j, junit等,极大的丰富了mser的选择,同时给ms平台带来了无数的先进思想(也不能说ms平台以前就完全没有)
  7. reflect: 相信bill从java那里学到了不少东西,而反射则是相当重要的一个。他使得Dependence injection等AOP的思路得以实施,使得托管代码也具有了以前只有c/c++才有的能力(类似函数指针)

标签: ,