Блог Сергея Байдачного

Мой блог о технологиях

SharePoint 2010 и SilverLight: Client API

14 комментариев

В завершении темы по интеграции Silverlight и SharePoint 2010, рассмотрим возможность использования Client API, поставляемого с SharePoint.

В отличие от служб REST, Client API позволяет делать практически все: взаимодействовать с любыми объектами, создавать сайты, управлять процессами.

Чтобы использовать Client API для Silverlight, необходимо подключить две сборки: Microsoft.SharePoint.Client.SilverLight.dll и Microsoft.SharePoint.Client.SilverLight.Runtime.dll. Первая сборка отвечает за классы, описывающие объекты SharePoint, а вторая сборка берет на себя задачи, связанные с коммуникациями. Обе сборки находятся в папке C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin.

Замечание. В Visual Studio 2010 beta 2 существует странная ошибка. Если Вы попытаетесь добавить описанные сборки по указанному пути, то Visual Studio сгенерирует ошибку. Поэтому скопируйте данные сборки в директорию Вашего проекта.

Модифицируем код нашего примера так, чтобы он использовал Client API. Приведу сразу готовый код:

ListItemCollection items=null;
 
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
    ClientContext context = new ClientContext("http://sbaydach64");
 
    Web myWeb=context.Web;
 
    List myListSP = myWeb.Lists.GetByTitle(curList);
 
    items = myListSP.GetItems(
        CamlQuery.CreateAllItemsQuery());
 
    context.Load(items);
    context.ExecuteQueryAsync(client_Completed, null);
}
 
private void client_Completed(object sender, 
    ClientRequestSucceededEventArgs e)
{
    System.Windows.Deployment.Current.Dispatcher.BeginInvoke(
    delegate() 
    {
        foreach (ListItem item in items)
        {
            myList.Items.Add(item.FieldValues["FileLeafRef"]);
        }
 
        myList.SelectedIndex = 0;
    }
    );
}

Основной класс, в коде выше, это ClientContext, который является единственным механизмом для получения доступа ко всем объектам SharePoint. Создав объект этого класса, разработчику требуется сформировать запрос. При формировании запроса, Вы можете ссылаться на любые свойства объектов, при условии, что не собираетесь их явно использовать. На этом этапе реальные свойства объектов еще не доступны.

Сформировав запрос, необходимо подготовить его к исполнению. Для этого и служит метод Load. Этот метод подготавливает контекст, к чтению всех необходимых объектов, которые используются для получения желаемого результата.

Наконец, для загрузки всех объектов, необходимо выполнить метод ExecuteQueryAsync, который принимает в качестве параметров ссылку на метод, обрабатывающий результат работы запроса (и метод, вызывающийся при сбое).

В отличие от OpenReadAsync, класса WebClient, метод ExecuteQueryAsync инициирует вызов метода, обрабатывающего результаты асинхронного вызова, НЕ в интерфейсном потоке. Поэтому, чтобы обновить интерфейс, необходимо инициировать вызов еще одного метода, но в интерфейсном потоке, предварительно получив и обработав данные. Этим и занимается объект Dispatcher.

Даже на первый взгляд, использование Client API значительно проще, чем работа с REST. Использование клиентских библиотек обладает гибкостью и универсальностью. При этом нужно помнить, что размер Вашего приложения увеличится примерно на 400 килобайт – таков размер дополнительных сборок.

Заключение

Как видно, Microsoft делает на Silverlight достаточно большую ставку. Это позволило привлечь достаточно ресурсов, чтобы позволить Silverlight использоваться не только на новых сайтах, но и в корпоративных Web-приложениях. А раз мы говорим о корпоративном секторе, то стоит вспомнить о возможности работы Silverlight-приложений вне браузера (с повышением полномочий). Эта возможность позволяет не просто устанавливать Silverlight-приложения на сторону клиента, но и обеспечить доступ к кэшу с данными, даже в отключенном режиме, что совсем не реализовано в SharePoint.

Нужно отметить, что в SharePoint 2007 также можно было интегрировать Silverlight-приложения, но для этого нужно было затратить больше усилий. Конечно, ни о каком клиентском API для SharePoint 2007 нельзя было и мечтать.

Реклама

Written by Sergiy Baydachnyy

12.02.2010 в 15:36

Опубликовано в SharePoint, SilverLight

Tagged with ,

комментариев 14

Subscribe to comments with RSS.

  1. […] Читать дальше >>> Опубліковані Friday, February 12, 2010 3:37 PM від Sergiy Baydachnyy […]

  2. Где настраивавается в SharePoint Foundation 2010 права доступа чтобы
    1. Контент могли смотреть / изменять анонимы?
    2. Недоменные пользователи, т.е. через Форм-Ауторизацию

    Александр

    13.03.2010 at 21:42

    • Давай, попробую написать в одном из следующих постов.

      Sergiy Baydachnyy

      15.03.2010 at 08:45

      • OK. Как раз разбираюсь с SharePoint Foundation 2010. Если надо — могу еще вопросов подкинуть 🙂

        Александр

        15.03.2010 at 17:21

      • Пиши, пиши. У нас есть мысль написать книгу. Вот и воспользуемся вопросами.

        Sergiy Baydachnyy

        16.03.2010 at 07:49

  3. 1. Sharepoint Foundation 2010 (sf 2010) требует для развертывания минимум WinServer Standard. Для Windows Sharepoint Services 3.0 (wss 3.0) достаточно было Web Edition. Так задумано или это только для беты?

    Александр

    20.03.2010 at 02:01

    • Где такое нашел? Нет таких требований.

      Sergiy Baydachnyy

      22.03.2010 at 09:07

      • Если вам удалось поставить на Web Edition пожалуйста подтвердите! У меня не установилось + см ниже

        http://www.microsoft.com/downloads/details.aspx?FamilyID=906C9F5A-6505-4EBA-BF24-95E423AC1703&displaylang=en
        System Requirements
        Supported Operating Systems: Windows Server 2008 R2; Windows Server 2008 R2 Enterprise; Windows Server 2008 R2 Standard; Windows Server 2008 Service Pack 2

        Александр

        03.04.2010 at 21:50

      • Нет слов. Даже Foundation версия официально устанавливается только на Standart. При выходе релиза ничего не изменится. На Web оно не станет и опять нужно будет писать кряки. У меня тут же появилось два вопроса: 1). Почему? Ничего военного там нет. 2). Для Web разработчиков есть WebSiteSpark. Там только Web Edition для хостинга. Круг сужается…

        Sergiy Baydachnyy

        07.04.2010 at 15:32

      • Здесь мы возвращаемся с моему первому вопросу.

        Где настраивавается в SharePoint Foundation 2010 права доступа чтобы
        1. Контент могли смотреть / изменять анонимы?
        2. Недоменные пользователи, т.е. через Форм-Ауторизацию

        Может в этом причина?

        Александр

        21.04.2010 at 07:09

  4. 2. Моя цель заключается в использовании sf 2010 для фронтэнда и бакэнда (интернет, интранет, экстранет). Для недостающих частей использовать:
    а) использовать сторонние модули — где их искать?
    б) писать свои — дополнительные вопросы будут позже 🙂
    в) интегрировать внешние не sf 2010 системы. SVN (как пример) — как писать переходники?

    Александр

    20.03.2010 at 02:07

  5. А как ты борешься с ошибкой безопасности, которая возникает когда ты пытаешься заполнить контекст?

    Alex

    07.11.2010 at 11:14


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: