A Programmer's Introducation to MVP Summit 2003 (C#/.NET)
Saucer已经在ASP.NET版贴了MVP Summit上关于Asp.net的一些最新消息,我这里也把我记得的关于C#/.NET的部分贴出来。:)
1. 总体印象:.NET Rules!
不出意外,MS的几乎所有产品都在向.NET平台靠拢,而这一次Summit在Developer一侧关注的最主要的产品是与.NET结合的SQL数据库平台(Code Name Yukon)以及与Yukon同时发布的相关产品。
2. 数据库Yukon:
我对数据库技术并不熟悉,这里也只是我个人的一些理解,可能会有不少出入,希望大家纠正。:)
Yukon将会成为Windows Shell、IE之后的又一个.NET CLR Host。因此在未来的SQL Server当中我们将能够使用绝大多数.NET Framework的技术和类库帮助我们更有效的完成任务。很多使用T-SQL很难实现的功能将会变得轻而易举。
3. CLR
这是我个人的最爱。:)
经过一年多的尝试和努力,MS终于在CLR中添加了对Generics的支持。模版的支持将会从很大程度上改善ValueType对象集合的性能(减少了Box/Unbox操作),即使是Reference Type,也会因为类downcast的减少而提高性能。从实现上看,CLR采用了与C++/Java完全不同的方案,由CLR核心直接支持Generics,而不是由编译器实现,所以一方面不存在C++的代码膨胀问题,另一方面不像Java那样无法将Generics作用于整个类型系统。在Generics方面,CLR还提供了Constraint等一系列很有用的特性,同时也提高了上层语言使用的复杂度。另一方面,.NET BCL中将会出现新的基于Generics的很多集合类型(List<TypeName>等等),已经存在的ArrayList等将会继续保留。
4. BCL
在基础类库方面,会有很多提供新的功能、或者提高编码效率的类出现。
5. Visual C#
当然,C#会提供对Generics的支持。:) 除此之外,C#语言本身还有一些新的特性:
1) 匿名函数:我们不再需要为每一个代理回调函数编写独立的代码,可以把它直接嵌套在代理赋值语句中:
void delegate MyDelegate(int i);
...
MyDelegate dele;
dele += new (int i) { Console.WriteLine(i); }
...
2) Iterator(和C++ STL里面那个不一样)和yield关键字:
可以极大简化我们为集合类型实现foreach语句支持,原本需要手工实现IEnumerable接口,现在编译器采用某种自动机模型帮助我们实现了。
3) Partial Type: 使用新的partial关键字,我们可以将一个类型的实现代码分布在不同的源文件里(避免错误改变了VS.NET自动生成的代码等等)。
6. Visual C++(.NET)
这里最令人振奋的消息是VC++的下一版本将会极大改善与C++标准的兼容情况。VC++与标准的兼容水平与其它编译器相比将会非常有竞争力!!!(实际上只有标准指定者的独家产品达到100%)。而且,在managed extension打开的情况下,这种兼容性仍然很高。
在VC7.NET中已经存在的/GS将会进一步得到功能增强,今后的产品在编译中推荐采用该选项以减少Exception和Buffer Overrun引起的安全问题。
7. WebService Enhancement
Don Box的一贯风格,行云流水,没有Presentation,没有准备。:)
我没有比较细致的使用过WSE,所以在Don的跳跃思维中没能捕捉到太多东西。:(
8. Security.
没听这一堂课就不知道究竟什么是软件安全。:)
为什么使用字符串拼接的SQL语句访问数据库不安全?缓冲溢出究竟可以怎样被利用来进行攻击?...
最后,Bill演讲中作的一个.NET手表的Demo (SPOT)实在是酷,要是能拿一个Beta就好了。:)
这里也有一些连接:
Bill的演讲全文:http://www.microsoft.com/billgates/speeches/2003/02-11MVPSummit.asp
MVP Summit的新闻:http://www.microsoft.com/presspass/press/2003/feb03/02-11MVPSummitPR.asp
http://www.microsoft.com/presspass/features/2003/Feb03/02-11MVPSummit.asp
C#新特性的详细介绍:http://www.csharp.net
由于英语和技术水平有限,当然无法保证上面的理解正确,所以欢迎大家批评、讨论、指正。
陈铭
Microsoft C#/.NET MVP