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