Мало кто знает (а я ни от кого ещё не слышал), что SharePoint имеет протокол удаленного вызова процедур, который дает некоторые вкусные возможности.
При помощи 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
.
При помощи этого протокола можно выполнить несколько различных методов, позволяющих работать с элементами списков, списками, представлениями, столбцми и пр. Полный список методов в этой статье: 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" у меня такой проблемы не возникало.
URL протокол

Есть ещё несколько методов, которые можно вызвать набрав параметры в строке адреса браузера. Очень интересным так же может быть RenderView (Формат URL не просто понять из статьи, вот пример). Полный поддерживаемых команд находится в этой статье: http://msdn.microsoft.com/en-us/library/ms478653.aspx
.
Протокол SharePoint Foundation RPC
Из кода любой метод можно вызвать при помощи 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 упростит вам жизнь при отладке.
Комментариев нет:
Отправить комментарий