Службы WCF в SharePoint Foundation 2010
Дата последнего изменения: 9 марта 2015 г.
Применимо к: SharePoint Foundation 2010
Новый интерфейс REST и новая клиентская объектная модель в Microsoft SharePoint Foundation 2010 предоставляют доступ к общим, но не ко всем функциям веб-сайтов SharePoint Foundation. При разработке пользовательского приложения для Microsoft SharePoint Server 2010 может иметься веб-служба Windows Communication Foundation (WCF) по умолчанию, предоставляющая нужные специальные функции. Однако если ни одна веб-служба не предоставляет необходимого доступа, можно создать пользовательскую веб-службу, использующую серверную объектную модель для доступа к данным. SharePoint Foundation 2010 поддерживает создание пользовательских служб Microsoft ASP.NET и WCF, которые можно использовать для разработки веб-служб с поддержкой протокола SOAP или интерфейса REST.
Пользовательские веб-службы ASP.NET, созданные для SharePoint Foundation продолжат функционировать в SharePoint Foundation 2010 без модификаций, но на будущее рекомендуется вместо них создать пользовательские веб-службы WCF. Хотя у веб-службы ASP.NET более низкие требования к конфигурации, служба WCF предоставляет более гибкие и мощные привязки, которые важны для сложных приложений. Благодаря размещению веб-службы WCF в SharePoint Foundation конфигурационные требования можно снизить. Если пользовательская веб-служба WCF была создана для предыдущего выпуска, возможно, приходилось искать некоторые обходные методы для обеспечения ее функционирования и размещать службу в отдельном веб-приложении. В SharePoint Foundation 2010 искать обходные пути не нужно, поскольку службы WCF поддерживаются по умолчанию.
Пользовательские веб-службы ASP.NET разрабатываются так же, как и в предыдущем выпуске. Как показано в разделе Пример: создание настраиваемой веб-службы ASP.NET, сначала пользовательская веб-служба ASP.NET развертывается в SharePoint Foundation, и добавляются файлы с расширениями WSDL и DISCO, чтобы схема для веб-службы была доступной для обнаружения в Microsoft Visual Studio. Веб-служба WCF может быть более сложной, поскольку ее архитектура требует указывать полную конфигурацию конечных точек службы WCF. Данные конфигурации включают адреса конечных точек, контракт службы и конфигурацию привязок, которая содержит особые сведения о среде, в которой работает веб-служба. Однако разработчик SharePoint Foundation обычно не имеет сведений о среде, в которой будет работать веб-служба. Определением конфигурации веб-приложений и развертыванием веб-служб занимается администратор фермы. Администратор может выбирать из нескольких схем проверки подлинности, поддерживаемых в SharePoint Foundation, или может включать несколько схем и назначать несколько адресов веб-приложению служб IIS. В таких случаях службе WCF требуется отдельная конечная точка для каждой схемы проверки подлинности и адреса. Поскольку данные конфигурации такого вида нельзя предоставлять в статической форме, нельзя использовать конфигурацию в файле web.config. В этом случае следует использовать динамическую или в терминах WCF "программную" конфигурацию.
Динамическая конфигурация WCF
Динамическая конфигурация WCF в SharePoint Foundation представлена в виде пользовательской фабрики служб. При разработке службы WCF необходимо указать фабрику служб, предоставленную SharePoint Foundation, и после этого записи конфигурации в файле web.config будут не нужны. Во время выполнения фабрика служб SharePoint Foundation настраивает соответствующие конечные точки для службы автоматически. В фабрике служб SharePoint Foundation также можно задать автоматическое создание конечной точки обмена метаданными для пользовательской службы с помощью специального атрибута класса службы. Когда фабрика служб SharePoint Foundation обнаруживает этот атрибут в классе службы, она автоматически создает конечную точку обмена метаданным для службы. Финальным этапом разработки веб-службы WCF является ее развертывание в папке %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI или в веб-приложении.
В следующей таблице приведены типы и фабрики служб, предоставляемые в SharePoint Foundation.
Тип службы |
Фабрика служб |
Описание |
---|---|---|
Служба SOAP |
MultipleBaseAddressBasicHttpBindingServiceHostFactory |
Необходимо использовать базовую привязку HTTP, которая создает конечные точки для службы на основании привязки HTTP. |
Служба REST |
MultipleBaseAddressWebServiceHostFactory |
Фабрика служб создает конечные точки с веб-привязками. |
Служба данных ADO.NET |
MultipleBaseAddressDataServiceHostFactory |
Можно использовать фабрику размещения служб данных. |
К классу службы для поведения можно применять следующие атрибуты.
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] — для совместимости с ASP.NET.
[BasicHttpBindingServiceMetadataExchangeEndpoint] — для включения конечных точек обмена метаданными (MEX).
Свойство WcfServiceSettings класса SPWebService позволяет задать класс конфигурации для настройки параметров конечной точки, созданной фабрикой служб SharePoint Foundation. Если возможностей этого класса конфигурации не хватает, можно разработать собственную пользовательскую фабрику служб, которая создает конечные точки для веб-службы динамически.
Конфигурация службы WCF
Служба WCF, размещенная в SharePoint Foundation и использующая динамическую конфигурацию, получает конфигурацию своих конечных точек от фабрики служб SharePoint Foundation. Во время запуска фабрика служб считывает данные конфигурации из служб IIS и создает соответствующие конечные точки для каждой схемы проверки подлинности и адреса, указанного для доступного приложения. Однако WCF требует уникального адреса для каждой конечной точки. Если для веб-приложения включено несколько схем проверки подлинности, несколько конечных точек будут соответствовать одному адресу. Для разрешения этой проблемы SharePoint Foundation создает уникальный адрес для каждой схемы проверки подлинности. Адрес формируется путем добавления к базовому URL-адресу службы имени схемы проверки подлинности, следующим образом:
https://server/_vti_bin/Service.svc/negotiate
https://server/_vti_bin/Service.svc/ntlm
https://server/_vti_bin/Service.svc/anonymous
При добавлении в приложении ссылки на пользовательскую веб-службу WCF не нужно указывать суффикс схемы проверки подлинности, а можно обращаться к веб-службе через ее исходный URL-адрес (например, https://server/_vti_bin/Service.svc). Это возможно благодаря модулю HTTP, который является стандартным элементом инфраструктуры SharePoint Foundation, выполняющим предварительную обработку всех запросов, обрабатываемых в SharePoint Foundation. Модуль HTTP поддерживает соглашение о конфигурации служб WCF и при поступлении запроса в службу WCF, для которой используется динамическая конфигурация, перенаправляет запрос на соответствующую конечную точку в зависимости от результатов проверки подлинности запроса. Такая схема перенаправления скрыта от клиентских приложений, которые видят только одну службу WCF, расположенную в соответствии с исходным именем и доступную через разные схемы проверки подлинности.
См. также
Концепции
Создание настраиваемой службы WCF в SharePoint Foundation