10月25日参加“微软新一代开发平台 Visual Studio 2008 Jumpstart新特性纵览及开发应用起步培训”的一些心得:
由于官方的PPT还未上传(请关注http://sharepoint.microsoft.com/sharepoint/worldwide/cn/south),以下内容基于回忆。
一、版本的说明:
1.发布时间
Visual Studio 2008,现在内部处于RC1状态,约明年2月发布,现在有Beta2可用。而更全的team system更晚发布。
Windows Server2008 年底发布,默认包含.net framework 2.0
2.特性说明
Team Foundation Server,能够实现文档管理、工作流、跟Project集成、跟SharePoint集成、比VSS更强大的源码管理(用SQL Server,支持临时Check in的“书架”功能等)。我们公司的管理如果有此方面的想法,可以再做一次尝试。
vs2008可支持.net 2.0,3.0,3.5,不支持.net framework 1.1。创建工程时可选择framework的版本。对于有代码,项目属性中可修改平台版本。从2.0到3.0/3.5的升级可完全不更改代码,降级可能要删除代码和命名空间。
这里对比一下两次framework的升级:
由于.net 1.x设计得不够完善,推出.net 2.0的时候做了很多核心的更改。导致1.x的代码到了2.0上有5%不能用(编译不通过)。这个数字算是很大的比例,因此微软也遭到诟病。
而这次升级,从.net 2.0到3.x(3.0/3.5),框架只是做了补充(内容后面介绍),换句话说,2.0是3.x的一个子集。因此2.0的代码拿到3.x中100%可用。
从3.x降级到2.0的话,需要移除3.x额外部分的代码,比如说System.LinQ{}命名空间的代码,还是可以用的。
微软的主讲人鞠海洋强烈建议我们至少升级到2.0,因为1.x已经不再受支持了,以后会渐行渐远。
操作系统支持情况:
1.x: win98, win 2000, win xp, win 2003
2.x: win2000, win xp win 2003, win vista (注意没有了win98)
3.x: win xp, win 2003, win vista (注意没有了win 2000)
开发工具支持情况:
Visual Studio 2003: .net 1.x
Visual Studio 2005: .net 2.0,装扩展包可支持.net 3.x
Visual Studio 2008: .net 2.0,.net 3.x
结合我们公司的情况,我个人建议:
l 新的WinForm程序,采用.net 2.0开发。因为要照顾到win2000的桌面用户
l 新的WebApplication程序,采用.net 2.0开发,有可能的话尝试一下3.x。因为Web程序不可能再采用win2000服务器,而3.0带来的便利可以事半功倍(见后文)。
l 旧的WebApplication程序,在开发进度不紧张的时候,尽快升级到2.0。因为1.1已经没有人关注,为了项目可持续发展,这一步必须做。
l 新的WinCE程序,要看机器内置的操作系统,尽可能用.net 2.0。
二、LinQ简介
LinQ是.net 3.0推出的最重要特性!Language Integrated Query的缩写,意为语言集成查询。
感性的认识:避免拼凑大量的SQL语句字符串,面向对象化地操作数据库。大家可以把数据表中的每一行想像成一个对象的实例,每一个字段想像成实例的一个属性。那么,INSERT INTO语句便可以看作是new一个C#对象并提交。
public static void Main()
{
// The most active list on CP
var mostActive = new string[] {
"Christian Graus",
"Paul Watson",
"Nishant Sivakumar",
"Roger Wright",
"Jörgen Sigvardsson",
"David Wulff",
"ColinDavies",
"Chris Losinger",
"peterchen",
"Shog9" };
// Get only the people whose name begins with D
var namesWithD =
from poster in mostActive
where poster.StartsWith("D")
select poster;
// Print each person out
foreach(var individual in namesWithD)
{
Console.WriteLine(individual);
}
}
注意文中的红字部分,采用和SQL类似的语法(但不是SQL),它是强类型的,而不是一个普通的字符串,也就是说在敲每个词的时候都会出来智能提示(Intellect Sense)。而在Console.WriteLine()中,参数individual也是C#强类型的。
这样做的好处是避免了大量的SQL语句拼凑操作,LinQ作为中间层,使得程序员不必直接对具体的数据库操作。LinQ和Java中的Hibernate类似。但LinQ是语言级别的,所以比Hibernate更强。
这样做的代价是,读取时有0%的性能损失,写的时候有10%的性能损失。但由于LinQ带来的条理性,将和Java的Hibernate一样被普遍接受。
以后会有很多这方面的资料,可以带着以上的感性认识进行更深入的学习。
三、有好多具体的语法和IDE新特性,在此略过(我们是先对VS2005熟悉起来;-))
四、网络方面
WCF框架是专门为了解决传统网络编程复杂性而设计的框架。
举个例子,采用传统的TCP/IP,要实现可靠的传输、安全认证、用户自定义协议的封包解包组包校验,需要2万行代码
而采用WCF,需要书写不到10行代码:D,并且配置文件充分可定制。如果用户想裁掉一些功能,如可靠性,只要更改XML文件配置即可。
可支持tcp/http/命名管道等底层协议,我们需要做的也只是改变一下配置文件即可。
它的大概原理和Web Service、RPC相近。例如服务器上编写了一个Calculate()方法,要让客户端远程调用。那么它只要把这个方法发布出来。服务器会自动生成自描述的文件,如 http://................ 客户端拿着这个地址,就能获取服务器提供了哪些方法,并生成相应的代理类。需要使用时,通过 MyObj. Calculate();即可执行。而复杂的计算是在远程的服务器完成的。
结合我们公司的项目,记得以前税控服务器写了大量的代码,现在看来不是必须的。用Web Service、.net remoting、WCF等框架都能实现。之后的TMS,也用到不少服务器间通讯。我看到一些代码还是通过winsock写的。后续可以考虑改进一下,因为微软的库已经帮我们把大多事情做好了。而新的网络相关项目启动时,应特别注意这一点,磨刀不误砍柴工。
五、多媒体方面
主要体现在WPF、SilverLight。一言蔽之,采用XML作为矢量数据存储,采用C#语言来操纵对象和实现后台逻辑,以实现和Flash一样的用户体验。基于文本的工程(Flash是一个二进制文件)有利于源码管理和多人协作,有C#语言和.net库的支持,技术上打败Flash没有问题。
如果采用的话,对我们公司的自助有很大意义。
六、CardSpace
大概是管理n张卡,以及用户认证的一套解决方案,我觉得这个目前应该成不了气候。