2007年11月29日星期四

微软新一代开发平台 Visual Studio 2008 Jumpstart 新特性纵览及开发应用起步培训心得

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.03.0/3.5的升级可完全不更改代码,降级可能要删除代码和命名空间。

这里对比一下两次framework的升级:

由于.net 1.x设计得不够完善,推出.net 2.0的时候做了很多核心的更改。导致1.x的代码到了2.0上有5%不能用(编译不通过)。这个数字算是很大的比例,因此微软也遭到诟病。

而这次升级,从.net 2.03.x3.0/3.5),框架只是做了补充(内容后面介绍),换句话说,2.03.x的一个子集。因此2.0的代码拿到3.x100%可用

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作为中间层,使得程序员不必直接对具体的数据库操作。LinQJava中的Hibernate类似。但LinQ是语言级别的,所以比Hibernate更强。

这样做的代价是,读取时有0%的性能损失,写的时候有10%的性能损失。但由于LinQ带来的条理性,将和JavaHibernate一样被普遍接受。

以后会有很多这方面的资料,可以带着以上的感性认识进行更深入的学习。

三、有好多具体的语法和IDE新特性,在此略过(我们是先对VS2005熟悉起来;-))

四、网络方面

WCF框架是专门为了解决传统网络编程复杂性而设计的框架。

举个例子,采用传统的TCP/IP,要实现可靠的传输、安全认证、用户自定义协议的封包解包组包校验,需要2万行代码

而采用WCF,需要书写不到10行代码:D,并且配置文件充分可定制。如果用户想裁掉一些功能,如可靠性,只要更改XML文件配置即可。

可支持tcp/http/命名管道等底层协议,我们需要做的也只是改变一下配置文件即可。

它的大概原理和Web ServiceRPC相近。例如服务器上编写了一个Calculate()方法,要让客户端远程调用。那么它只要把这个方法发布出来。服务器会自动生成自描述的文件,如 http://................ 客户端拿着这个地址,就能获取服务器提供了哪些方法,并生成相应的代理类。需要使用时,通过 MyObj. Calculate();即可执行。而复杂的计算是在远程的服务器完成的。

结合我们公司的项目,记得以前税控服务器写了大量的代码,现在看来不是必须的。用Web Service.net remotingWCF等框架都能实现。之后的TMS,也用到不少服务器间通讯。我看到一些代码还是通过winsock写的。后续可以考虑改进一下,因为微软的库已经帮我们把大多事情做好了。而新的网络相关项目启动时,应特别注意这一点,磨刀不误砍柴工。

五、多媒体方面

主要体现在WPFSilverLight。一言蔽之,采用XML作为矢量数据存储,采用C#语言来操纵对象和实现后台逻辑,以实现和Flash一样的用户体验。基于文本的工程(Flash是一个二进制文件)有利于源码管理和多人协作,有C#语言和.net库的支持,技术上打败Flash没有问题。

如果采用的话,对我们公司的自助有很大意义。

六、CardSpace

大概是管理n张卡,以及用户认证的一套解决方案,我觉得这个目前应该成不了气候

没有评论: