SharePoint和.Net Framework的版本关系

最近曙光在Facebook上写比较惊讶于SharePoint 2010不是基于.Net Framework 4.0,的确。在这里顺手写一下SharePoint和.Net的版本联系。

从大的方面看,SharePoint在2003版本之后和.Net Framework的发展历史几乎是并列的。由于之前并没有Asp.Net的版本,因此在这里我将WSSv2/SPS2003算作第一代产品。

第一代

.Net Framework 1.0/1.1是02/03年发布的,开发工具是VS2003,提供了基本的.Net框架。Windows Server 2003自带.Net 1.1。因此,同期发布的SharePoint Portal Server 2003和WSS2.0是基于.Net 1.0/1.1开发的。其限制也很明显,当时.Net缺少64位支持,因此SPS/WSSv2只有32位版本。

第二代

按ASP.Net核心论,.Net Framework 2.0/3.0是几乎完全相同的。这里的命名有些混乱,实际上3.0是2.0+一系列组件构成的:WPF/WCF/WF/CardSpace。SharePoint 2007/WSSv3的开发主要基于.Net 2.0,但工作流部分调用了Workflow Fundation。当年在产品发布之前,我们安装SharePoint的过程一直是先装.Net Framework 2.0,然后再装一个Workflow Fundation的msi包。

另外,由于.Net 2.0对.Net 1.0/1.1不完全向下兼容,因此SPS2003只能运行在ASP.Net 1.1上。不过WSSv2可以跑在Asp.Net 2.0的web应用程序池上。

第三代

2007年底发布的.Net Framework 3.5除了对几大新增组件的增强之外,还加入了很多新概念,比如LINQ。SharePoint 2010/WSS4就是基于这个3.5开发。.Net 3.5/SP1依然沿用了.Net 2.0的核心,不过由于有一些小改变,.Net 3.5 SP1不能装在有WSSv2的机器上。WSSv3/MOSS 2007则没有问题。

未来……

Wssv3和MOSS2007将不会支持4.0,不要把他们的App Pool改成4.0,虽然看起来貌似可用,但有可能会有潜在问题。SharePoint 2010是否能支持.Net 4.0?目前还不知道。但注意“支持”只代表运行起来没有问题,微软可以提供支持服务,并不代表代码中利用了新的特性。

画个表:

 

.Net 1.0/1.1 2.0/3.0 3.5 3.5SP1 4.0
WSSv2 Y Y Y N N
SPS2003 Y N N N N
WSSv3 N Y Y Y N
MOSS2007 N Y Y Y N
WSSv4 N N N Y ?
SharePoint Server 2010 N N N Y ?