Создайте библиотеку документов с внешним сохранением

Я хотел бы создать пользовательскую библиотеку документов, в которой я использую стандартный пользовательский интерфейс, но реализую другой уровень сохраняемости. В основном извлекайте и отображайте документы из другой исходной системы. Таким образом, я могу использовать свою существующую объектную модель, но при этом использовать отличную интеграцию Office с SharePoint.

Я нашел приличную статью здесь, но они обманывают, они написали совершенно новый пользовательский интерфейс для внешняя настойчивость.

Я просмотрел объекты SPList и SPDocumentLibrary, но не могу переопределить необходимые методы.

Я просмотрел структуру событий, и она ближе, но в ней отсутствуют важные события, такие как «GetFile» или «PopulateList».

Есть предположения?


person Andrew    schedule 25.06.2009    source источник


Ответы (4)


Это не идеально (или, возможно, даже "хорошо") подходит для того, что вы пытаетесь сделать, но я упоминаю об этом в первую очередь для ознакомления и, возможно, чтобы дать вам некоторые дополнительные идеи (и предупреждения).

В архитектуре хранилища SharePoint используются два разных внутренних хранилища: одно для метаданных (всегда базы данных SQL SharePoint), а другое для хранилища больших двоичных объектов (также SQL по умолчанию). Однако в своем нынешнем виде SharePoint позволяет вам «подключить» вашего собственного поставщика хранилища больших двоичных объектов через тип, реализующий интерфейс ISPExternalBinaryProvider. Связывание типа, реализующего этот интерфейс, позволяет вам продолжать хранить метаданные в SQL, сохраняя при этом документы и другие типы элементов BLOB в другом хранилище по вашему выбору.

Возможно, это звучит несколько многообещающе, но есть пара серьезных соображений:

  1. Подключение собственного ISPExternalBinaryProvider оказывает влияние на всю ферму. Все или ничего, поэтому после подключения провайдера все сайты и библиотеки будут использовать новый провайдер.

  2. Вам нужно погрузиться в неуправляемый код, как это делает ISPExternalBinaryProvider, чтобы потребовать от вас работы с некоторым IDL.

Вы можете прочитать больше здесь: http://msdn.microsoft.com/en-us/library/bb802976.aspx

Я считаю, что система внешнего хранилища BLOB (EBS) на данный момент является чем-то вроде «прототипа», не готовым к прайм-тайму. Если ничего другого, однако, это дает вам пищу для размышлений. Мы надеемся, что SharePoint Server 2010 сделает его более привлекательным и простым в реализации.

Чего это стоит!

person Sean P. McDonough    schedule 25.06.2009
comment
Отличная мысль! К сожалению, я не могу реализовать это на всей ферме, я должен иметь возможность включить его для каждой библиотеки документов. - person Andrew; 25.06.2009
comment
Как AvePoint (например) делает это со своим архиватором? Они рекламируют, что могут выборочно (очевидно, для каждого списка) переносить хранилище документов на другое устройство. Я неправильно понимаю их продукт? - person Chris Farmer; 26.06.2009
comment
Отличный вопрос, Крис. Я не слишком хорошо знаком с продуктом, но ограниченное исследование, которое я провел, привело меня к выводу, что после того, как контент заархивирован, он находится полностью за пределами SharePoint (т. е. в специальном хранилище). Продукт включает в себя веб-части и поддержку индексирования, чтобы данные были видны в SharePoint, но фактический процесс возврата данных (из архива) требует операции восстановления. У меня сложилось впечатление, что продукт работает как более гибкая (и незащищенная) система резервного копирования. Это только мое мнение, не подтвержденное AvePoint. - person Sean P. McDonough; 26.06.2009
comment
Cube Pirate: Я не думаю, что вы сможете заставить SharePoint работать так, как вы указали, без серьезной настройки. Более легкий подход может состоять в том, чтобы использовать BDC (для функций чтения), а затем написать собственный код для сохранения обратно в любое внутреннее хранилище, которое вы используете. Опять же — не идеальное совпадение, но я думаю, что вы проведете настоящий анализ компромиссов в пользу минусов с любым решением, которое вы решите внедрить или построить. - person Sean P. McDonough; 26.06.2009

Я реализовал сохраняемость SQL в библиотеке форм, используя рабочий процесс сохранения, который запускается при создании и обновлении документов библиотеки.

Я создал проект рабочего процесса Office SharePoint 2007 в Visual Studio 2008, получил содержимое документа SPItem и извлек соответствующие данные из XML-файла, сгенерированного веб-формой InfoPath, и сохранил их в базе данных.

person mgcm    schedule 26.06.2009

Если вы действительно хотите создать собственное внешнее постоянство, попробуйте взглянуть на эту новую обширную статью, опубликованную в июне на TechNet:

http://technet.microsoft.com/en-us/magazine/2009.06.insidesharepoint.aspx

А теперь передай мне награду. ;)

person anchorpoint    schedule 03.07.2009
comment
ISPExternalBinaryProvider уже был добавлен в смесь, но отличные навыки вырезания и вставки!!! - person Andrew; 03.07.2009

Извините, но ISPExternalBinaryProvider - единственный способ сделать это, я боюсь, если вы хотите использовать стандартный пользовательский интерфейс.

P.S. Еще одна серьезная неудача заключается в том, что это кошмар резервного копирования / управления версиями. Даже не уверен, поддерживается ли управление версиями.

Возможно, в SharePoint 2010 будет лучший способ сделать это...

person Colin    schedule 25.06.2009