SharePoint API: 2003 против 2007
-
10-07-2019 - |
Вопрос
Я написал решение, которое использует API 2007 для обхода объектной модели SharePoint. Теперь мне нужно также поддерживать SP 2003. Каков наилучший способ сделать это?
Возможно ли / рекомендуется ли использовать API 2007 для получения доступа к ферме SharePoint 2003? Р>
Если я использую API 2007, нужно ли использовать устаревшие классы для (например) ссылки на базу данных конфигурации или я использую классы 2007, такие как SPFarm?
Или я использую API 2007 для SP 2007 и API 2003 для SP 2003 ...? Проблема в том, что оба используют одни и те же пространства имен и имена классов. Так что это может стать грязным. (За исключением, может быть, если я использую псевдонимы для ссылки на разные пространства имен?)
Решение
Насколько я знаю, API 2007 и API 2003 несовместимы. Так да? вам нужно будет реализовать оба.
Я могу предложить иметь интерфейс ISharePointAPI и две реализации SharePoint2007API и SharePoint2003API. Эти реализации могут быть даже упакованы в разные сборки, поэтому у вас не будет ссылочного ада :). Это также защитит вас от изменений API 2010, поскольку для реализации SharePoint2010API вам потребуется ...
Другие советы
Интерфейсы (в основном) совместимы в пространстве имен / класса / члена USAGE, но вы должны использовать правильную версию API для правильной версии SharePoint. Вы также должны учитывать, что в 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
В этой статье есть немного больше деталей. Это большая тема, и я собирался написать пост в блоге с некоторыми советами.