Настройка службы данных (службы WCF Data Services)

С помощью Службы WCF Data Services можно создавать службы данных, предоставляющие каналы Протокол Open Data Protocol (OData) . В этих каналах могут находиться данные из различных источников данных. Службы Службы WCF Data Services используют поставщики данных для предоставления этих данных в виде канала OData . В число таких поставщиков входят поставщик Entity Framework, поставщик отражения, а также набор пользовательских интерфейсов поставщиков служб данных. Реализация поставщика определяет модель данных для службы. Дополнительные сведения см. в разделе Поставщики служб данных (службы WCF Data Services).

В Службы WCF Data Services служба данных является классом, унаследованным от класса DataService, в котором тип службы данных является контейнером сущностей моделей данных. Этот контейнер сущностей имеет одно или несколько свойств, возвращающих интерфейс IQueryable, которые используются для доступа к наборам сущностей модели данных.

Поведение службы данных определяется членами класса DataServiceConfiguration и класса DataServiceBehavior, доступ к которому осуществляется через свойство DataServiceBehavior класса DataServiceConfiguration. Класс DataServiceConfiguration передается в метод InitializeService, реализованный службой данных, как в следующей службе Northwind, созданной при завершении установки Краткого руководства:

Public Class Northwind
    Inherits DataService(Of NorthwindEntities)

    ' This method is called only once to initialize service-wide policies.
    Public Shared Sub InitializeService(ByVal config As DataServiceConfiguration)
        ' Grant only the rights needed to support the client application.
        config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead _
             Or EntitySetRights.WriteMerge _
             Or EntitySetRights.WriteReplace)
        config.SetEntitySetAccessRule("Order_Details", EntitySetRights.AllRead _
            Or EntitySetRights.AllWrite)
        config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead)
    End Sub
End Class
public class Northwind : DataService<NorthwindEntities>
{
    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config)
    {
        // Grant only the rights needed to support the client application.
       config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead 
            | EntitySetRights.WriteMerge 
            | EntitySetRights.WriteReplace );
        config.SetEntitySetAccessRule("Order_Details", EntitySetRights.AllRead
            | EntitySetRights.AllWrite);
        config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead);
    }
}

Параметры конфигурации службы данных

Класс DataServiceConfiguration позволяет задать следующее поведение службы данных.

Элемент Поведение

AcceptCountRequests

Позволяет отключить запросы количества, передаваемые службе данных при использовании сегмента пути $count и параметра запроса $inlinecount. Дополнительные сведения см. в разделе OData: соглашения URI.

AcceptProjectionRequests

Позволяет отключить поддержку проекции данных в запросах, передаваемых службе данных при использовании параметра запроса $select. Дополнительные сведения см. в разделе OData: соглашения URI.

MaxProtocolVersion

Определяет версию протокола Atom, используемую службой данных. Если свойству MaxProtocolVersion присвоено значение, которое меньше максимального значения DataServiceProtocolVersion, то последние функции Службы WCF Data Services становятся недоступными для клиентов, обращающихся к службе данных. Дополнительные сведения см. в разделе Работа с несколькими версиями служб WCF Data Services.

EnableTypeAccess

Включает тип данных, предоставляемый в метаданных для динамического поставщика метаданных, определенного с помощью интерфейса IDataServiceMetadataProvider.

EnableTypeConversion

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

MaxBatchCount

Позволяет ограничить число наборов изменений и операций запросов, разрешенных в одном пакете. Дополнительные сведения см. в разделах OData: пакет и Пакетные операции (службы WCF Data Services).

MaxChangesetCount

Позволяет ограничить количество изменений, которые могут быть включены в один набор изменений. Дополнительные сведения см. в разделе Как включить разбиение на страницы для результатов службы данных (службы WCF Data Services).

MaxExpandCount

Позволяет ограничить размер ответа путем ограничения количества связанных сущностей, которые могут быть включены в один запрос при использовании оператора запроса $expand. Дополнительные сведения см. в разделах OData: соглашения URI и Загрузка отложенного содержимого (службы WCF Data Services).

MaxExpandDepth

Позволяет ограничить размер ответа путем ограничения глубины графа связанных сущностей, которые могут быть включены в один запрос при использовании оператора запроса $expand. Дополнительные сведения см. в разделах OData: соглашения URI и Загрузка отложенного содержимого (службы WCF Data Services).

MaxObjectCountOnInsert

Позволяет ограничить количество вставляемых сущностей, которые могут содержаться в одном запросе POST.

MaxResultsPerCollection

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

RegisterKnownType

Добавляет тип данных в список типов, распознаваемых службой данных.

SetEntitySetAccessRule

Задает права доступа для ресурсов набора сущностей, доступных в службе данных. Значение «звездочка» (*) может использоваться в параметре имени для задания доступа того же уровня для всех остальных наборов сущностей. Рекомендуется задавать минимальный уровень прав доступа к ресурсам службы данных, необходимых клиентским приложениям. Примеры минимальных прав доступа, необходимых для выполнения данного действия URI и HTTP, см. в таблице, приведенной в разделе «Минимальные права для доступа к ресурсам».

SetEntitySetPageSize

Задает максимальный размер страницы для ресурса набора сущностей. Дополнительные сведения см. в разделе Как включить разбиение на страницы для результатов службы данных (службы WCF Data Services).

SetServiceOperationAccessRule

Задает права доступа для операций службы, определенных в службе данных. Дополнительные сведения см. в разделе Операции службы (службы WCF Data Services). Значение «звездочка» (*) может использоваться в параметре имени для задания доступа того же уровня для всех остальных операций службы. Рекомендуется задавать операциям службы минимальный уровень прав доступа к ресурсам службы данных, необходимых клиентским приложениям.

UseVerboseErrors

Этот параметр настройки упрощает процесс устранения неполадок службы данных, возвращая дополнительные сведения в ответном сообщении об ошибке. Параметр не предназначен для использования в рабочей среде.

Минимальные требования для доступа к ресурсам

В следующих сведениях о таблице указаны минимальные права набора сущностей, которые необходимо предоставить для выполнения определенной операции. Примеры путей основаны на службе данных Northwind, созданной при ознакомлении с кратким руководством. Поскольку перечисления EntitySetRights и ServiceOperationRights определяются с помощью FlagsAttribute, для указания нескольких разрешений для одного набора сущностей или операции можно использовать логический оператор OR. Дополнительные сведения см. в разделе Как включить доступ к службе данных (службы WCF Data Services).

Путь/действие GET DELETE MERGE POST PUT

/Customers

ReadMultiple

Не поддерживается

Не поддерживается

WriteAppend

Не поддерживается

/Customers('ALFKI')

ReadSingle

ReadSingle и WriteDelete

ReadSingle и WriteMerge

не применяется

ReadSingle и WriteReplace

/Customers('ALFKI')/Orders

Customers: ReadSingle

-и-

Orders: ReadMultiple

Не поддерживается

Не поддерживается

Customers: ReadSingle и WriteMerge или WriteReplace

-и-

Orders : и WriteAppend

Не поддерживается

/Customers('ALFKI')/Orders(10643)

Customers: ReadSingle

-и-

Orders: ReadSingle

Customers: ReadSingle

-и-

Orders: ReadSingle и WriteDelete

Customers: ReadSingle

-и-

Orders: ReadSingle и WriteMerge

Не поддерживается

Customers: ReadSingle

-и-

Orders: ReadSingle и WriteReplace

/Orders(10643)/Customer

Customers: ReadSingle

-и-

Orders: ReadSingle

Customers: ReadSingle и WriteDelete

-и-

Orders: ReadSingle

Customers: ReadSingle и WriteMerge;

-и-

Orders: ReadSingle

Customers: WriteAppend

-и-

Orders: WriteAppend и ReadSingle

Не поддерживается

/Customers('ALFKI')/$links/Orders

Customers: ReadSingle

-и-

Orders: ReadMultiple

Не поддерживается

Не поддерживается

Customers: ReadSingle и WriteMerge или WriteReplace

-и-

Orders: ReadSingle

Не поддерживается

/Customers('ALFKI')/$links/Orders(10643)

Customers: ReadSingle

-и-

Orders: ReadSingle

Customers: ReadSingle и WriteMerge или WriteReplace

-и-

Orders: ReadSingle

Не поддерживается

Не поддерживается

Не поддерживается

/Orders(10643)/$links/Customer

Customers: ReadSingle

-и-

Orders: ReadSingle

Orders: ReadSingle и WriteMerge или WriteReplace

Customers: ReadSingle

-и-

Orders: ReadSingle и WriteMerge

Не поддерживается

Customers: ReadSingle;

-и-

Orders: ReadSingle и WriteReplace

/Customers/$count

ReadMultiple

Не поддерживается

Не поддерживается

Не поддерживается

Не поддерживается

/Customers('ALFKI')/ContactName

ReadSingle

Не поддерживается

WriteMerge

Не поддерживается

WriteReplace

/Customers('ALFKI')/Address/StreetAddress/$value 1

ReadSingle

WriteDelete

Не поддерживается

Не поддерживается

Не поддерживается

/Customers('ALFKI')/ContactName/$value

ReadSingle

ReadSingle и WriteDelete

WriteMerge

Не поддерживается

WriteReplace

/Customers('ALFKI')/$value 2

ReadSingle

Не поддерживается

Не поддерживается

Не поддерживается

WriteReplace

/Customers?$select=Orders/*&$expand=Orders

Customers: ReadSingle

-и-

Orders: ReadMultiple

Не поддерживается

Не поддерживается

Customers: WriteAppend

Не поддерживается

/Customers('ALFKI')?$select=Orders/*&$expand=Orders

Customers: ReadSingle

-и-

Orders: ReadMultiple

Не поддерживается

Не поддерживается

Не поддерживается

Не поддерживается

1 В этом примере Address представляет свойство сложного типа сущности Customers, у которой есть свойство с именем StreetAddress. Модель, которая используется службой данных Northwind, не определяет этот сложный тип явно. Если модель данных определяется с помощью поставщика Entity Framework, такой сложный тип можно определить с помощью средств модели EDM. Дополнительные сведения см. в разделе How to: Create and Modify Complex Types (Entity Data Model Tools).

2 Этот URI поддерживается, если свойство, возвращающее большой двоичный объект, определено как ресурс мультимедиа, принадлежащий сущности, являющейся записью ссылки мультимедиа, в данном случае это Customers. Дополнительные сведения см. в разделе Потоковый поставщик (службы WCF Data Services).

См. также

Основные понятия

Размещение службы данных (службы WCF Data Services)

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

Определение службы WCF Data Services