2009-06-24 79 views
2

我编写了一个使用2007 API来遍历SharePoint对象模型的解决方案。现在我也需要支持SP 2003。做这个的最好方式是什么?SharePoint API:2003 vs 2007

是否有可能/推荐使用2007 API来获取访问2003 SharePoint场?

如果我用的是2007年的api,我必须使用已弃用的类(例如)引用配置数据库,还是我使用2007类,如SPFarm?

还是我使用SP 2007 2007 API和SP 2003,2003年API ...?与此问题是,两者都使用相同的名称空间和类名称。所以它可能会变得混乱。 (除了可能,如果我使用别名来引用不同的命名空间?)

回答

3

据我所知道的2007 API和2003 API不兼容。所以是的?你将需要实现两者。

我可以建议有接口ISharePointAPI和两个实现SharePoint2007API和SharePoint2003API。这个实现甚至可以打包到不同的程序集,所以你不会有参考地狱:)。这也将保护您免受2010年API更改,因为您将需要实施SharePoint2010API ...

+0

嗯,我很害怕那个。幸运的是,我已经有了一个指定的接口,因为解决方案在COM环境中运行。 – Ries 2009-06-24 11:02:33

1

接口(大部分)在名称空间/类/成员用法中兼容,但您必须使用正确版本的正确版本的SharePoint的API。您还必须考虑WSS2/SPS2003默认使用.NET1.1。

我的解决方案是使用MSBEE和一些MSBUILD忍者移动到吐出从源代码两个版本。

第一个目标是.NET2并引用Microsoft.SharePoint.dll v12(WSS3/MOSS2007),第二个目标.NET1.1和引用Microsft.Sharepoint.dll v11(WSS2/SPS2003)。

它的设置相当不错,但之后效果很好。当你有不同的代码,你可以使用条件编译: -

#if FX1_1 
    // WSS2/SPS2003 specific code 
#else 
    // WSS3/MOSS2007 specific code 
#endif 

article给出了一个更详细一点。它是一个很大的话题,我一直有意用一些提示写博客文章。

+0

感谢您的意见。无论如何,我认为我们将针对.NET3.5(出于其他原因)这两种产品。因此,2003和2007用户将不得不安装.NET3.5来使用我们的解决方案。我认为他们将能够接受这一点。 – Ries 2009-06-26 10:12:41