Поделиться через


Жизненный цикл запросов Silverlight в веб-приложение

Дата последнего изменения: 7 апреля 2010 г.

Применимо к: SharePoint Foundation 2010

В этой статье
Сценарий примера
Последовательность событий
Графическое представление жизненного цикла запроса

В данном разделе предоставляется обзор основных событий и действий, которые возникают при получении доступа к данным из веб-приложения с помощью приложения Silverlight, которое расположено в отличном от веб-приложения SharePoint Foundation домене, но предоставлено пользователям SharePoint Foundation в веб-части. Так как приложение Silverlight является внешним приложением, в данном разделе также предоставляется пример работы с междоменным доступом к данным Silverlight.

Сценарий примера

Жизненный цикл запроса Silverlight к SharePoint Foundation будет описан в терминах следующего конкретного примера.

Ферма серверов SharePoint Foundation расположена по адресу //www.contoso.com/Internal/Sites/. В ферме серверов /Personnel/default.aspx — это домашняя страница подразделения "Personnel" (персонал). Эта страница содержит веб-часть Silverlight (SilverlightWebPart). Поставщик внешнего приложения (EAP) включен для веб-службы, содержащей веб-приложение. Это позволяет веб-части Silverlight быть зарегистрированной с помощью XML-файл внешнего приложения. Среди прочего этот XML-код определяет, что приложение Silverlight является файлом http://www.fabrikam.com/Applications/PeopleBrowser.xap, что значит, что он располагается в отличном от веб-приложения SharePoint Foundation домене. Для просмотра и отображения сведений о сотрудниках из списков SharePoint Foundation на веб-сайтах, содержащихся в веб-приложении, пользователи могут использовать приложение Silverlight. Код в приложении Silverlight запрашивает данные SharePoint Foundation посредством вызовов специальной версии Управляемая клиентская объектная модель Silverlight. (См. также статью Использование объектной модели Silverlight.)

Так как XAP-файл расположен на сервере вне домена веб-приложения, чьи данные запрашиваются, этот сценарий может требовать предоставления внешнему серверу "Fabrikam" полного доступа к серверу SharePoint Foundation "Contoso". Однако междоменный доступ к данным Silverlight (Silverlight CDA) предоставляет способ преобразования этих вызовов в ограниченные разрешениями вызовы к серверной объектной модели SharePoint Foundation.

Последовательность событий

Далее приведены основные события в жизненном цикле веб-части и запросе данных Silverlight.

  1. Пользователь переходит по адресу //www.contoso.com/Internal/Sites/Personnel/default.aspx и страница открывается в браузере.

  2. Веб-часть Silverlight загружает и читает свое свойство ApplicationXml, чтобы найти URL-адрес приложения Silverlight, и создает запрос для http://www.fabrikam.com/Applications/PeopleBrowser.xap. Это запрос 7направляется напрямую от компьютера пользователя к серверу www.fabrikam.com. Этот запрос не передается через интерфейсный веб-сервер SharePoint Foundation.

  3. Определенные данные от XML-кода внешнего приложения передаются в приложение Silverlight из веб-части. Наиболее критичные элементы данных следующие:

    • Имя пользователя участника-приложения. В веб-приложении SharePoint Foundation участник-приложение — это объект SPUser с определенными свойствами, заданными так, что он может представлять приложение вместо реального человека. Как любому другому пользователю, участнику-приложению выдается набор разрешений. Приложение Silverlight будет иметь возможность получать доступ к данным и выполнять действия, только в пределах двух наборов разрешений — реального пользователя, переходящего на страницу, и участника-приложения. Дополнительные сведения об участниках-приложениях см. в разделе Как: Создать участника приложения.

    • URL-адрес специального обработчика запросов HTTP, находящегося в домене www.fabrikam.com, называется перенаправителем запросов. Дополнительные сведения о создании обработчиков такого вида см. в разделе Создание сервера пересылки запросов HTTP для внешних приложений.

    • Маркер запроса. Копия этого маркера будет включена приложением Silverlight во все его запросы к веб-приложению SharePoint Foundation. Он содержит данные, такие как идентификатор реального пользователя, перешедшего на страницу, содержащую веб-часть, который позволит веб-приложению определить, какие эффективные разрешения можно выдать приложению Silverlight. Чтобы предотвратить фальсификацию, маркер будет включать значение хэша сервера, созданное при запуске метода веб-части CreateChildControls. Этот хэш создается из двух входных значений: префикса маркера, который включает все данные маркера до значения хэша, и секретного внутреннего массива байтов, используемого в качестве "затравки" для алгоритма хэширования. Затравка создается при первоначальном создании объекта SPWebService, представляющего веб-службу, и создается заново при обновлении этого объекта.

      ПримечаниеПримечание

      Если серверу, на котором размещается приложение Silverlight, также требуется удостовериться в отсутствии фальсификации результатов, получаемых им от веб-приложения SharePoint Foundation, клиентский хэш может также быть включен в маркер запроса, передаваемого в одну и другую сторону. Дополнительные сведения см. в разделе Создание собственного поставщика внешних приложений.

  4. Приложение Silverlight загружается, и его обработчик событий Startup вызывает метод Init(IDictionary<String, String>) и передает ему некоторые начальные данные, включая следующие:

    • URL-адрес перенаправителя запроса.

    • Маркер запроса, который будет добавлен в заголовок каждого запроса, осуществляемого приложением Silverlight.

  5. При выполнении пользователем в пользовательском интерфейсе Silverlight действия, вызывающего запрос данных SharePoint Foundation, код создания запроса в приложении Silverlight выполняет вызовы в особую версию Silverlight управляемой клиентской объектной модели. Этот код должен ссылаться на особые клиентские сборки Silverlight Microsoft.SharePoint.Client.Silverlight.dll и Microsoft.SharePoint.Client.Silverlight.Runtime.dll. Дополнительные сведения о клиентской объектной модели Silverlight см. в разделах Использование объектной модели Silverlight и Развертывание Silverlight.

  6. В конце кода запроса выполняется вызов метода ExecuteQuery(). Задача этого метода заключается в передаче запроса интерфейсному веб-серверу SharePoint Foundation, но Silverlight не будет выполнять прямого междоменного запроса. Так как приложение Silverlight инициализируется при запуске URL-адресом перенаправителя запроса, оно отправит запрос в перенаправитель запросов вместе с URL-адресом веб-приложения SharePoint Foundation.

  7. Перенаправитель запросов затем отправит запрос в виде серверного кода интерфейсному веб-серверу вместе с пользовательскими учетными данными участника-приложения и маркером запроса, включающим хэш сервера.

  8. Интерфейсный веб-сервер SharePoint Foundation проверит хэш сервера и проверит, что и участник-приложение, и реальный пользователь, перешедший на страницу веб-части, имеют разрешения на выполнение всех действий, описанных в запросе.

  9. После проверки хэша сервера и разрешений интерфейсный веб-сервер выполняет код и возвращает данные приложению Silverlight.

Графическое представление жизненного цикла запроса

На рис. 1 показаны основные события жизненного цикла запроса из приложения Silverlight.

Рис 1. Жизненный цикл запроса Silverlight

Последовательность операций жизненного цикла запроса в Silverlight