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 или большее число веб-служб, не является совпадением. Веб-службы
являются правильным выбором для бизнес-решений, ориентированных на
удобство использования, простоту доступа и гибкость, в то время как
объектную модель разумнее использовать для создания этих
веб-служб.