SharePoint изнутри: Расширение приложений Office с помощью веб-служб

OSzone.net » Microsoft » Sharepoint » SharePoint изнутри: Расширение приложений Office с помощью веб-служб
Автор: Пав Черны
Иcточник: TechNet Magazine
Опубликована: 24.11.2008
21 стандартная веб-служба из пакета Microsoft Windows SharePoint Services (WSS) 3.0 и 19 стандартных веб-служб из пакета Microsoft Office SharePoint Server (MOSS) 2007 позволяют создавать замечательно гибкие решения для извлечения данных из локальных и удаленных источников, расширения стандартных функций пакета приложений Microsoft Office и интеграции бизнес-приложений. Конечно, можно иметь даже больше, чем 40 веб-служб. Если устанавливаются дополнительные серверные решения, объединяющиеся с SharePoint, например Microsoft Office Project Server 2007, вы, возможно, без труда насчитаете на своем серевере SharePoint 60 или более веб-служб. И это даже без учета настраиваемых веб-служб SharePoint, которые вы можете запланировать для внедрения. Веб-службы являются базовыми стандартными блоками распределенных бизнес-приложений, и в эпоху объединения программного обеспечения и служб они приобретают еще большее значение, поскольку предоставляют организациям средства для интеграции локальных решений с размещаемыми средами.

В этой статье обсуждаются преимущества веб-служб в среде SharePoint, в особенности их использование в стандартных приложениях Office и наряду с ними. Хотя обычно приложения Office опираются на Microsoft Office FrontPage и удаленные вызовы процедур (RPCs) WSS и протокол WebDAV для доступа на основе файлов к спискам и библиотекам SharePoint, они используют также и веб-службы. Основных веб-служб, включенных в WSS 3.0, достаточно для большинства приложений Office, таких как Microsoft Word 2007, Outlook 2007 и Access 2007, хотя для других, например PowerPoint 2007 и InfoPath 2007, можно использовать веб-службы, доступные только посредством MOSS 2007 или отдельных программных продуктов. Там, где это необходимо, будет сообщаться о зависимостях продуктов. Если вы хотите следовать моим объяснениям в собственной тестовой среде, подробные поэтапные указания можно найти в сопровождающем данную статью материале, доступном в разделе загрузок кода на веб-узле по адресу technet.microsoft.com/magazine/bb978519.

Исчерпывающие обсуждения разработчиков и темы, посвященные интеграции бизнес-данных, выходят за рамки этой статьи. Я исхожу из предположения, что вы знакомы с веб-службами и их применением в бизнес-приложениях. Для начала в качестве общего обзора, относящегося к встроенным веб-службам WSS 3.0 и MOSS 2007, рекомендую статью «Доступ к веб-службам» в пакете SharePoint Server 2007 SDK (см. msdn.microsoft.com/library/bb862916.aspx) .


Веб-службы SharePoint и объектная модель

При разработке решений SharePoint возникает классический вопрос — использовать ли веб-службы или объектную модель. Объектная модель проще в использовании, предоставляет большее число интерфейсов и требует меньше ресурсов, чем веб-службы, но все-таки объектная модель, вследствие зависимостей COM, является единственной, доступной на сервере SharePoint. Веб-службы более доступны и, следовательно, являются правильным выбором для клиентских приложений и компонентов серверной стороны, таких как веб-части бизнес-данных, которым необходимо объединять данные из удаленных источников. По мере того, как данные перемещаются из локальных систем в удаленные размещаемые среды, решения SharePoint должны все больше поддерживать архитектуру, ориентированную на службы (SOA), чтобы быть в состоянии иметь дело с распределенными средами SharePoint, как продемонстрировано на схеме из рис. 1.

*

Рис. 1. Веб-службы в распределенной среде SharePoint

Избавляясь от тесной связи между подсистемами переднего плана и серверными подсистемами, веб-службы предоставляют большую гибкость. Как показано на рис. 1, подсистемы переднего плана могут взаимодействовать с любой базовой платформой до тех пор, пока промежуточная веб-служба предоставляет ожидаемый интерфейс. Я продемонстрировал это в своей статье от сентября 2008 г. (technet.microsoft.com/magazine/cc742803), заменив встроенную веб-службу интеграции электронной почты WSS 3.0 (SharepointEmailWS.asmx) пользовательской версией, предоставляющей такой же интерфейс.

Безусловно, этот же принцип применим также к клиентским приложениям, например приложениям Office, использующим веб-службы SharePoint. Стивен Тауб (Stephen Toub) продемонстрировал это весьма интуитивным способом в своей статье в журнале MSDN «Custom Calendar Providers for Outlook 2003» (Поставщики настраиваемых календарей для Outlook 2003), создав пользовательскую веб-службу, точно повторяющую интерфейс службы списков SharePoint (Lists.asmx), для возврата в Outlook пользовательских данных вместо элементов списка SharePoint (см. msdn.microsoft.com/aa168130). Он показал, как календарь Outlook может отображать такие разнообразные данные, как записи журнала событий, элементы канала RSS, сообщения из группы новостей, беседы в Windows Live Messenger и точки восстановления системы, и впоследствии расширил это решение также для поддержки списков «Контакты».

В 2006 г., Патрик Крихан (Patrick Creehan) обновил эту реализацию, так, что в настоящее время она работает с Outlook 2007. (См. запись в блоге Патрика «Custom Calendar Providers for Outlook 2007» (Поставщики настраиваемых календарей для Outlook 2007), доступную по адресу blogs.msdn.com/pcreehan/archive/2006/11/21/custom-calendar-providers-for-outlook-2007.aspx.)


Outlook 2007 и протокол StsSync

Теперь, когда вам известно, что поставщики пользовательских списков могут воспользоваться интеграцией Outlook с SharePoint, рассмотрим более пристально взаимодействие Outlook и SharePoint. Для получения доступа к содержимому списка SharePoint или библиотеки документов, Outlook обменивается данными с SharePoint посредством веб-службы списков и отображает списки и их элементы рядом со стандартными папками Outlook. Можно также создать новые или обновить существующие элементы непосредственно в Outlook, и в этом случае Outlook использует службу списков для обновления репозиториев SharePoint. Взаимодействие и архитектура данного решения относительно просты, как показано на рис. 2.

*

Рис. 2. Архитектура Outlook StsSync

Для того, чтобы установливать связь с требуемыми списками, Outlook поддерживает специальный формат адреса URL, основанный на идентификаторе протокола StsSync, который зарегистрирован Outlook в качестве обработчика протокола. Соответствующую регистрационную запись можно найти на рабочей станции в следующем разделе реестра: HKEY_CLASSES_ROOT\StsSync\Shell\Open\Command. Outlook принимает StsSync URL в качестве параметра командной строки, разбивает его на отдельные части, а затем использует эти параметры для установления связи с указанным списком SharePoint.

Адреса StsSync URL длинные и непонятные, поскольку они содержат несколько параметров строки запроса в обычном формате URL с кодировкой символов, например:

stssync://sts/?ver=1.0&type=calendar&cmd=add-folder&base-url=http%3A%2F%2Fsharepoint%2FHR%2FAdministration&list-url=%2FLists%2FCalendar%2FAllItems%2Easpx&guid=%7B4DF13090%2DDE1C%2D43EA%2D8B44%2D904869FEABC4%7D&site-name=HR%20Site&list-name=Admin%20Events

К счастью, если связь Outlook с требуемым списком устанавливается из пользовательского интерфейса SharePoint, нет необходимости указывать эти адреса URL непосредственно. Достаточно открыть список SharePoint в обозревателе Internet Explorer, а затем в меню списка «Действия» выбрать «Подключиться к Outlook». Эта команда вызывает функцию JavaScript с именем ExportHailStorm (она находится на сервере в \%PROGRAMFILES%\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\1033\Init.js), которая конструирует адрес URL для StsSync на основе параметров списка, а затем передает полученный URL обозревателю Internet Explorer, который в свою очередь передает этот URL зарегистрированному обработчику протокола, которым является Outlook. Пример работы со списками SharePoint в приложении Outlook см. в сопровождающей памятке «Работа с Outlook в WSS».

Одним из наиболее важных параметров StsSync является base-url, указывающий узел SharePoint, например sharepoint/HR/Administration. Outlook автоматически добавляет к этому адресу URL ссылку на веб-службу списков (например, sharepoint/HR/Administration/_vti_bin/Lists.asmx). После этого путь для обмена данными с SharePoint свободен. Отдельные части адреса URL для StsSync поясняются в StsSync Structure Specification (Спецификация структуры StsSync) на веб-странице по адресу msdn.microsoft.com/cc313101.


Excel 2007 и веб-клиент Excel

Возможно, на рис. 2 вы заметили в меню «Действия SharePoint» режим «Экспорт в электронную таблицу» в пункте «Подключиться к Outlook», который экспортирует содержимое списка в электронную таблицу Excel. В Excel 2007 протокол StsSync не используется. Вместо этого в режиме «Экспорт в электронную таблицу» вызывается функция с именем ExportList (находящаяся на сервере SharePoint в \%PROGRAMFILES%\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\1033\Core.js), которая инициирует требуемую последовательность действий для экспорта элементов списка. Эта функция не использует веб-службы.

Результатом вызова ExportList является запрос http, направленный на расширение ISAPI (Owssvr.dll) для генерации и возврата файла веб-запроса (IQY). Этот файл IQY содержит инструкцию веб-запроса, которая ссылается на библиотеку Owssvr.dll для извлечения фактических данных из списка SharePoint в форме документа XML. Библиотеку Owssvr.dll можно было бы рассматривать как доисторическую версию веб-службы, но ее интерфейс не поддерживает отраслевые стандарты веб-служб, поэтому справедливо утверждение о том, что Excel не использует стандартные веб-службы.

Решением Excel, использующим веб-службы, является веб-клиент Excel Web Access, входящий в MOSS 2007 и показанный на рис. 3. В действительности, веб-клиент Excel использует службы Excel (ExcelService.asmx), которые в свою очередь опираются на службы вычислений Excel Calculation Services (ECS), являющиеся вычислительным механизмом, который предоставляет те же самые вычислительные функции, что и Excel 2007, приложение рабочего стола. Веб-клиент Excel предназначен для работы в качестве средства просмотра данных и параметризуемого средства анализа. Назначение конкретных ячеек параметрами, разрешение просматривать в сети Интернет только конкретные части листа и задание прав доступа к SharePoint в самой книге дает администраторам преимущество в высшей степени детализированного управления тем, к чему в книге Excel имеют доступ пользователи. По соображениям безопасности веб-клиент Excel и службы Excel не поддерживают некоторые из функций Excel 2007, например встроенный код Visual Basic, элементы управления форм и внешние ссылки. Однако, разработчики решений могут создать управляемый код, доступный из книги в SharePoint. Подробнее о службах Excel, включая пошаговые руководства «Как выполняется…» см. в документе «Пошаговые руководства по службам Excel» на веб-странице по адресу technet.microsoft.com/cc263430.

*

Рис. 3 Excel и архитектура веб-клиента Excel

Access 2007 и управление веб-таблицей данных Access

Подобно экспорту списка SharePoint в электронную таблицу, имеется возможность экспортировать список в базу данных с помощью режима «Открыть с помощью Access» меню «Действия». Режим «Открыть с помощью Access» также опирается на расширение Owssvr.dll ISAPI для получения данных от SharePoint. При выборе режима «Открыть с помощью Access» вызывается функция JavaScript с именем ExportToDatabase (находящаяся на сервере SharePoint в \%PROGRAMFILES%\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\1033\Core.js), которая создает экземпляр элемента управления ActiveX с именем SharePoint.ExportDatabase. Этот элемент управления взаимодействует с Owssvr.dll и создает базу данных Access с таблицами, представлениями, отчетами и другими объектами, связанными с объектами списка SharePoint или скопированными в базу данных из SharePoint согласно выбранным условиям экспорта. Для начала работы со списками SharePoint в приложении Access 2007 ознакомьтесь с сопровождающей памяткой «Работа с Access в WSS».

Несмотря на то, что элемент управления ActiveX с именем SharePoint.ExportDatabase взаимодействует с Owssvr.dll и не использует веб-службы, Access 2007 фактически использует веб-службы SharePoint посредством библиотеки DLL с именем Stslist.dll, как показано на рис. 4. Например, ленту «Внешние данные» можно отобразить в Access 2007, выбрать «Список SharePoint», а затем установить связь с требуемым списком в качестве источника связанной таблицы. При таком развитии событий Access вызывает веб-службу списков (Lists.asmx) с сервера. Затем можно использовать инструкции SQL для поиска или обновления данных в Access. Каждый раз, когда выполняется изменение записи в связанной таблице, Access также вызывает Lists.asmx для обеспечения актуальности данных SharePoint.

*

Рис. 4 Access и архитектура веб-таблицы данных Access

Можно также экспортировать отдельные таблицы Access в виде списков в SharePoint и даже перемещать всю базу данных Access на узел SharePoint, на котором создается список SharePoint для каждой таблицы, и все данные перемещаются в SharePoint в рамках одной пакетной операции. Хотя SharePoint не в состоянии усилить ссылочную целостность в своих списках (пользователи, перемещающие в SharePoint базы данных со ссылочными записями, получат предупреждающее сообщение об этом), допускаются ссылки между списками, как если бы они были таблицами. При экспорте таблиц из Access, Access взаимодействует, помимо Lists.asmx, с веб-службами Webs (Webs.asmx) и Views (Views.asmx) с целью создания списка для каждой таблицы, а также столбца веб-узла для каждого столбца таблицы и представления списков, основанные на этих столбцах веб-узла.

После успешного экспорта может понадобиться просмотреть список SharePoint в режиме просмотра таблицы данных. Для этого достаточно в меню «Действия» данного списка выбрать режим «Изменить в таблице данных». Режим «Изменить в таблице данных» перенаправляет обозреватель на веб-страницу, которая ссылается на элемент управления веб-таблицы данных Access посредством следующего CLSID: 65BCBEE4-7728-41A0-97BE-14E1CAE36AAE. Затем Internet Explorer загружает элемент управления ActiveX в веб-страницу на локальной рабочей станции. Если поиск в реестре выполняется на рабочей станции, где работает система 2007 Office, соответствующую регистрационную запись для элемента управления ActiveX (ProgID ListNet.ListNet) можно найти в улье HKEY_CLASSES_ROOT. Проверьте раздел реестра InprocServer32, и вы увидите, что элемент управления веб-таблицы данных Access реализован в библиотеке Stslist.dll. Элемент управления веб-таблицы данных Access использует те же веб-службы, что и Access 2007.

Дополнительные материалы


Word 2007 и интерфейс MetaWeblog API

В Word 2007 используется уникальная веб-служба, реализованная в файле с именем Metaweblog.aspx с целью использования преимущества интерфейса MetaWeblog API на серверах SharePoint. Этот API предоставляет только три метода (newPost, editPost и getPost), но он по-прежнему взаимодействует посредством http, используя структуры XML. WSS 3.0 поддерживает ведение стандартных блогов с шаблоном веб-узла блога и интерфейс веб-управления. Основываясь на интерфейсе MetaWeblog API, Word 2007 можно использовать в качестве программы ведения блогов, что предоставляет жизнеспособную альтернативу интерфейсу обозревателя.

Обратите внимание, что службы MetaWeblog не использует расширение имени файла .asmx, как это делают другие веб-службы SharePoint. Интерфейс MetaWeblog API был разработан более пяти лет назад Дейвом Винером (Dave Winer) и ожидается, что популярные средства ведения блогов будут получать доступ к этому API через страницу .aspx (со спецификацией можно ознакомиться на веб-странице xmlrpc.com/metaWeblogApi). Используя .aspx вместо обычного наименования .asmx, SharePoint сохраняет совместимость с этими средствами ведения блогов.


PowerPoint 2007 и MOSS 2007

PowerPoint 2007 не использует веб-службы в среде WSS 3.0, а, получая доступ к файлам презентаций из библиотеки документов, взаимодействует с SharePoint главным образом посредством FrontPage/WSS RPCs и WebDAV. Если у вас имеется MOSS 2007, PowerPoint может воспользоваться библиотеками слайдов SharePoint и веб-службой библиотек слайдов (SlideLibrary.asmx).

Библиотеки слайдов являются особым типом библиотек документов. Их можно использовать в сочетании с функцией «Публикация слайдов» приложения PowerPoint, которая позволяет разбивать презентационную пачку на отдельные слайды и сохранять их в виде отдельных файлов в папке или библиотеке. При публикации слайдов в библиотеке слайдов PowerPoint обменивается данными с Webs.asmx и Slidelibrary.asmx с целью проверки адресов URL и наличия конфликтов слайдов. Если в библиотеке слайдов уже существует слайд с таким именем, PowerPoint предлагает заменить существующий слайд или пропустить текущий.

После того, как слайды загружены в библиотеку, их можно повторно использовать в другой презентационной пачке, хотя исходные слайды остаются в библиотеке на сервере SharePoint. SharePoint добавляет метку времени на каждый слайд, и PowerPoint может проверить эту метку так же, как и другие метаданные, например имя презентации PowerPoint, являющейся источником слайда, и выявить обновления посредством веб-службы библиотеки слайдов. Если имеются обновления, можно принять решение о замене локального слайда в текущей презентации или добавить в свою презентацию измененный слайд. В качестве введения прочитайте статью «Применение библиотек слайдов для совместного использования и повторного использования содержимого слайдов PowerPoint 2007» на веб-странице по адресу office.microsoft.com/en-us/powerpoint/HA012261671033.aspx. См. также сопровождающую памятку с названием «Работа с библиотеками слайдов».

Иногда при публикации слайдов в PowerPoint 2007 можно заметить сообщение об ошибке с утверждением, что «n из n слайдов, публиковавшиеся в <library>, не опубликованы. Повторите публикацию.» Это может быть результатом отсутствия прав доступа или неполадок связи с WebDAV. Чтобы обойти эту проблему, можно опубликовать слайды в папке локальной файловой системы, а затем скопировать файлы вручную в библиотеку слайдов, используя проводник Windows и путь UNC к библиотеке слайдов, например \\sharepoint\SlideLib вместо sharepoint/SlideLib. Проводник Windows использует тот же перенаправитель WebDAV, что и PowerPoint 2007, но не вступает в контакт с SlideLibrary.asmx для выявления конфликтов слайдов. Вместо этого для выяснения факта существования файла он использует WebDAV. На рис. 5 показана архитектура библиотеки слайдов, используемая в PowerPoint 2007.

*

Рис. 5 PowerPoint и архитектура SlideLibrary

InfoPath 2007 и службы форм InfoPath

Данная статья была бы неполной без упоминания о InfoPath 2007 службах форм InfoPath. Фактически, среди приложений Office, обсуждавшихся в этой статье, основным потребителем веб-служб является InfoPath 2007. Конечно, веб-службы можно широко использовать в качестве источников данных в формах InfoPath, но даже если отвлечься от разработки форм и сосредоточиться на публикации простых шаблонов форм, не использующих внешние источники данных, InfoPath 2007, помимо FrontPage/WSS RPCs и WebDAV, взаимодействует с SharePoint посредством веб-служб, как показано на рис. 6. Пример, демонстрирующий способ публикации шаблонов форм в библиотеку форм SharePoint, см. памятку «Работа со службами форм InfoPath», доступную в разделе «Загрузка кода».

*

Рис. 6 InfoPath и архитектура служб форм

Важными веб-службами, на которые опирается InfoPath 2007, являются Webs.asmx и Lists.asmx. Помимо прочего, InfoPath извлекает из службы Webs информацию об определении столбцов веб-узла и типах содержимого и использует эту информацию для заполнения списков столбцов веб-узла в диалоговом окне «Выбор поля или группы», так что во время публикации шаблона формы можно связать столбцы формы с существующими столбцами веб-узла SharePoint. InfoPath любые новые столбцы создает без связи с веб-узлом SharePoint, используя службу списков. InfoPath взаимодействует также со службой списков с целью создания библиотеки форм и определения типа содержимого для шаблона формы. Для загрузки существующего шаблона InfoPath использует FrontPage/WSS RPCs и WebDAV, просто помещая шаблон с именем файла template.xsn в новую вложенную папку Forms библиотеки.

Для шаблонов форм, поддерживающих обозреватель, мастер публикаций InfoPath мог бы предложить возможность заполнения формы с помощью обозревателя. Эта возможность зависит от наличия на сервере SharePoint MOSS 2007 или Microsoft Office Forms Server 2007. InfoPath определяет, установлены ли службы форм и активированы ли они для текущего веб-узла SharePoint, с помощью веб-страницы FormServerDetector.aspx (например, sharepoint/_layouts/FormServerDetector.aspx?IsFormServerEnabled=check), которая возвращает <server IsFormServerEnabled = 'true' /> если формы служб присутствуют и активированы. Если затем выполняется активирование формы для заполнения ее с помощью обозревателя, во время процедуры публикации InfoPath 2007 вызывает веб-службу служб форм (FormsServices.asmx) для соответствующего активирования шаблона формы посредством обозревателя. Подробнее о формах InfoPath, активируемых обозревателем, см. общий справочник по Microsoft Office Forms Server 2007, доступный на веб-странице по адресу msdn.microsoft.com/aa701145.


Заключение

Веб-службы являются важной частью платформы SharePoint. Они делают возможными бизнес-решения, имеющие доступ к локальным и удаленным ресурсам, объединяют распределенные бизнес-приложения друг с другом и предоставляют приложениям Office весьма полезные функции. Для работы с веб-узлами SharePoint, списками и библиотеками приложениям Office наиболее важны веб-службы Webs.asmx и Lists.asmx, входящие в WSS 3.0. Еще одна иногда используемая веб-служба, Views.asmx, предоставляет методы для работы с представлениями списков. Для большинства приложений Office не требуется развертывания MOSS 2007, хотя некоторые приложения, например PowerPoint 2007 и InfoPath 2007, могут получить преимущества от использования усовершенствованных компонентов, таких как библиотеки слайдов и службы форм, которые доступны только в составе MOSS 2007 или в качестве отдельных программных продуктов.

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


Ссылка: http://www.oszone.net/8210/SharePoint_Office