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


Контекст клиента как центральный объект

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

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

Доступно на сайте SharePoint Online

Подобно программированию серверных объектов в контексте сервера, который включает создание экземпляра или возвращение центрального объекта, предоставляющего доступ к объектной модели, новая объектная модель на стороне клиента использует объект ClientContext (JavaScript: ClientContext) в качестве отправной точки всех операций. Процесс получения и работы с сайтами и данными начинается с запроса объекта контекста. Например, команда ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection") создает экземпляр объекта контекста для заданного семейства сайтов.

Объект ClientContext (JavaScript: ClientContext) служит в качестве основной точки входа для доступа к клиентской объектной модели и является центральным объектом, через который производится управление запросами и инициирование действий в семействе сайтов. Используйте свойства объекта ClientContext (JavaScript: ClientContext), чтобы получить семейства сайтов или веб-сайты, через которые осуществляется удаленный доступ к другим клиентским объектам SharePoint Foundation.

Конструктор ClientContext() (JavaScript: ClientContext(serverRelativeUrl)) инициализирует контекст клиента, основанный на заданном веб-сайте или семействе сайтов. В управляемой клиентской объектной модели URL-адрес должен быть абсолютным URL-адресом определенного веб-сайта. В объектной модели ECMAScript (JavaScript, JScript) требуется либо относительный URL-адрес, либо отсутствие параметра. Если в JavaScript используется конструктор без параметра, целевым URL-адресом веб-сайта будет являться URL-адрес веб-сайта, содержащего веб-страницу.

Перед действительным выполнением запроса используются объекты, возвращаемые через контекст клиента, чтобы определить действия для выполнения. Класс ClientContext (JavaScript: ClientContext) наследует методы Load<T>(T, []) (JavaScript: load(clientObject)) и LoadQuery() (JavaScript: loadQuery(clientObjectCollection, exp)) из класса ClientRuntimeContext (JavaScript: ClientRuntimeContext). Нужно определить запрос для выполнения требуемых действий и возвращения заданных объектов или свойств, а затем вызвать один из этих методов для загрузки запроса.

После загрузки запроса вызовите метод ExecuteQuery() или ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) (JavaScript: executeQueryAsync(succeededCallback, failedCallback)) объекта ClientContext (JavaScript: ClientContext), чтобы отправить запрос на сервер. Клиентская объектная модель Silverlight предоставляет как метод ExecuteQuery(), который можно вызывать синхронно из потоков, не изменяющих пользовательский интерфейс, так и асинхронный метод ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) для классов, в которых потоки изменяют пользовательский интерфейс. Эти методы для выполнения запросов создают XML-код, представляющий действия, выполняемые на стороне клиента, и отправляют его на сервер. В управляемой объектной модели этот запрос является синхронным, что означает блокирование выполнения кода до получения ответа с сервера. Этот вызов может быть синхронным или асинхронным в объектной модели Silverlight, но он всегда асинхронный в объектной модели JavaScript. При асинхронном вызове код продолжает выполняться и не ожидает ответа сервера. В объектных моделях Silverlight и JavaScript можно реализовать функцию обратного вызова, которая будет вызвана при получении ответа сервера.

В объектных моделях SharePoint Foundation Silverlight и JavaScript можно использовать свойство Current (JavaScript: current) клиентского контекста, чтобы возвратить контекст текущего запроса из страниц, работающих в SharePoint Foundation.

В следующем примере демонстрируются базовые шаги по использованию методов класса ClientContext (JavaScript: ClientContext) для возвращения заголовка веб-сайта.

using System;
using Microsoft.SharePoint.Client;

namespace Microsoft.SDK.SharePointServices.Samples
{
    class UsingClientContext
    {
        static void Main()
        {
            ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection");

            Web oWebsite = clientContext.Web;

            clientContext.Load(oWebsite);

            clientContext.ExecuteQuery();

            Console.WriteLine(oWebsite.Title);
        }
    }
}
Imports System
Imports Microsoft.SharePoint.Client

Namespace Microsoft.SDK.SharePointServices.Samples
   Class UsingClientContext
      
      Shared Sub Main()
         Dim clientContext As New ClientContext("http://MyServer/sites/MySiteCollection")

         Dim oWebsite As Web = clientContext.Web

         clientContext.Load(oWebsite)

         clientContext.ExecuteQuery()
         
         Console.WriteLine(oWebsite.Title)
      End Sub
   End Class
End Namespace
function useClientContext() {
    var clientContext = new SP.ClientContext('/sites/MySiteCollection');
    this.oWebsite = clientContext.get_web();
    clientContext.load(oWebsite);
    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded() {
    alert('Title: ' + oWebsite.get_title());
}
    
function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

См. также

Концепции

Удостоверение и объектная модель иерархии

Клиентские объекты, объекты значений и скалярные свойства

Создание клиентского объекта

Инструкции по использованию клиентской объектной модели

Различия управляемой объектной модели и объектной модели ECMAScript

Общие задачи программирования

Другие ресурсы

Библиотека классов для клиента

Библиотека классов ECMAScript

Использование управляемой объектной модели клиента SharePoint Foundation 2010

Центр ресурсов объектной модели клиента (Возможно, на английском языке)