Контекст клиента как центральный объект
Дата последнего изменения: 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
Другие ресурсы
Библиотека классов для клиента
Использование управляемой объектной модели клиента SharePoint Foundation 2010
Центр ресурсов объектной модели клиента (Возможно, на английском языке)