суббота, 24 марта 2012 г.

Полезные протоколы SharePoint

Мало кто знает (а я ни от кого ещё не слышал), что SharePoint имеет протокол удаленного вызова процедур, который дает некоторые вкусные возможности.

URL протокол


При помощи URL протокола, можно получить, например, Caml схему любого списка коллекции введя в строке адреса браузера http://Server_Name/[sites/][Site/]_vti_bin/owssvr.dll?Cmd=ExportList&List={ListID} или получить представление папки таким, как оно выглядит в диалоге проводника(когда сохраняем файл в библиотеку SharePoint), набрав http://Server_Name/[sites/][Site/]_vti_bin/owssvr.dll?dialogview=FileOpen&location=Document_Library[/Folder][/File]


Есть ещё несколько методов, которые можно вызвать набрав параметры в строке адреса браузера. Очень интересным так же может быть RenderView (Формат URL не просто понять из статьи, вот пример). Полный поддерживаемых команд находится в этой статье: http://msdn.microsoft.com/en-us/library/ms478653.aspx
.

Протокол SharePoint Foundation RPC


При помощи этого протокола можно выполнить несколько различных методов, позволяющих работать с элементами списков, списками, представлениями, столбцми и пр. Полный список методов в этой статье: http://msdn.microsoft.com/en-us/library/ms480784.aspx.
Из кода любой метод можно вызвать при помощи SPWeb.ProcessBatchData. Причем за один вызов можно выполнять несолько методов, благодаря чему открывается side effect, который подметили разработчики - обработка большого количества данных при помощи SPWeb.ProcessBatchData происходит гораздо быстрее, чем при использовании объектной модели. Для демонстрации я написал консольное приложение, сравнивающее производительность обоих методов. Код получилася простой и громоздкий, посмотреть его можно по ссылке. Результат получился таким:


Как видно, метод SPWeb.ProcessBatchData примерно в два раза быстрее.

Протокол SharePoint Foundation RPC так же содержит методы и для получения данных. Возвращает данные в виде XML на основе указанного View. В простеньком тесте, скорость возвращения данных у меня была быстрее чем при помощи SPQuery с указанием ViewFields примерно в 5 раз. Глубже этот метод я ещё не рассмотрел. Есть у меня подозрение, что Xslt List View Web Part и ей подобные могут использовать именно этот механизм для получения данных.
В методе SPWeb.ProcessBatchData скрыты грабли. Скрыты, на мой взгляд весьма успешно, так что и не разглядишь. Парсер, который разбирает переданный батч, весьма привередлив и не всегда воспринимает апостроф. Например, при использовании метода "display" и написании xml в таком виде: "<SetVar Name='Cmd'>Display</SetVar>" метод SPWeb.ProcessBatchData выбрасывает ошибку неуправляемого кода. А вот если использовать экраннирование и ковычки ("<SetVar Name=\"Cmd\">Display</SetVar>"), то метод срабатывает. При использовании метода "Save" у меня такой проблемы не возникало.

Протокол Stssync


Stssync протокол позволяет добавить SharePoint списки контактов и событий в Outlook или другие приложения. Подробнее.

FrontPage Server Extensions RPC Methods


Данное расширение дает ряд административных методов, позволяющих, например, работать с сайтами и документами. Здесь есть методы для создания директорий и документов сайта, создания/изменения/удаления сайтов и ещё много возможных полезностей. Полный список в этой статье: http://msdn.microsoft.com/en-us/library/ms443099.aspx.

Что дальше?


Если вы решите использовать этот функционал в своих решениях, то вам будет полезно ознакомиться со статьями Method Syntax и Return Values. Статья Error Message Format for SharePoint Foundation упростит вам жизнь при отладке.

Комментариев нет:

Отправить комментарий