Настройка службы данных (службы 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 позволяет задать следующее поведение службы данных.
Элемент | Поведение |
---|---|
Позволяет отключить запросы количества, передаваемые службе данных при использовании сегмента пути $count и параметра запроса $inlinecount. Дополнительные сведения см. в разделе OData: соглашения URI. |
|
Позволяет отключить поддержку проекции данных в запросах, передаваемых службе данных при использовании параметра запроса $select. Дополнительные сведения см. в разделе OData: соглашения URI. |
|
Определяет версию протокола Atom, используемую службой данных. Если свойству MaxProtocolVersion присвоено значение, которое меньше максимального значения DataServiceProtocolVersion, то последние функции Службы WCF Data Services становятся недоступными для клиентов, обращающихся к службе данных. Дополнительные сведения см. в разделе Работа с несколькими версиями служб WCF Data Services. |
|
Включает тип данных, предоставляемый в метаданных для динамического поставщика метаданных, определенного с помощью интерфейса IDataServiceMetadataProvider. |
|
Позволяет указать, должна ли среда выполнения службы данных преобразовывать тип, содержащийся в полезных данных, в фактический тип свойства, указанный в запросе. |
|
Позволяет ограничить число наборов изменений и операций запросов, разрешенных в одном пакете. Дополнительные сведения см. в разделах OData: пакет и Пакетные операции (службы WCF Data Services). |
|
Позволяет ограничить количество изменений, которые могут быть включены в один набор изменений. Дополнительные сведения см. в разделе Как включить разбиение на страницы для результатов службы данных (службы WCF Data Services). |
|
Позволяет ограничить размер ответа путем ограничения количества связанных сущностей, которые могут быть включены в один запрос при использовании оператора запроса $expand. Дополнительные сведения см. в разделах OData: соглашения URI и Загрузка отложенного содержимого (службы WCF Data Services). |
|
Позволяет ограничить размер ответа путем ограничения глубины графа связанных сущностей, которые могут быть включены в один запрос при использовании оператора запроса $expand. Дополнительные сведения см. в разделах OData: соглашения URI и Загрузка отложенного содержимого (службы WCF Data Services). |
|
Позволяет ограничить количество вставляемых сущностей, которые могут содержаться в одном запросе POST. |
|
Позволяет ограничить размер ответа путем ограничения количества сущностей в каждом наборе сущностей, возвращаемом в виде канала данных. |
|
Добавляет тип данных в список типов, распознаваемых службой данных. |
|
Задает права доступа для ресурсов набора сущностей, доступных в службе данных. Значение «звездочка» (*) может использоваться в параметре имени для задания доступа того же уровня для всех остальных наборов сущностей. Рекомендуется задавать минимальный уровень прав доступа к ресурсам службы данных, необходимых клиентским приложениям. Примеры минимальных прав доступа, необходимых для выполнения данного действия URI и HTTP, см. в таблице, приведенной в разделе «Минимальные права для доступа к ресурсам». |
|
Задает максимальный размер страницы для ресурса набора сущностей. Дополнительные сведения см. в разделе Как включить разбиение на страницы для результатов службы данных (службы WCF Data Services). |
|
Задает права доступа для операций службы, определенных в службе данных. Дополнительные сведения см. в разделе Операции службы (службы WCF Data Services). Значение «звездочка» (*) может использоваться в параметре имени для задания доступа того же уровня для всех остальных операций службы. Рекомендуется задавать операциям службы минимальный уровень прав доступа к ресурсам службы данных, необходимых клиентским приложениям. |
|
Этот параметр настройки упрощает процесс устранения неполадок службы данных, возвращая дополнительные сведения в ответном сообщении об ошибке. Параметр не предназначен для использования в рабочей среде. |
Минимальные требования для доступа к ресурсам
В следующих сведениях о таблице указаны минимальные права набора сущностей, которые необходимо предоставить для выполнения определенной операции. Примеры путей основаны на службе данных Northwind, созданной при ознакомлении с кратким руководством. Поскольку перечисления EntitySetRights и ServiceOperationRights определяются с помощью FlagsAttribute, для указания нескольких разрешений для одного набора сущностей или операции можно использовать логический оператор OR. Дополнительные сведения см. в разделе Как включить доступ к службе данных (службы WCF Data Services).
Путь/действие | GET | DELETE | MERGE | POST | PUT |
---|---|---|---|---|---|
|
Не поддерживается |
Не поддерживается |
Не поддерживается |
||
|
ReadSingle и WriteDelete |
ReadSingle и WriteMerge |
не применяется |
ReadSingle и WriteReplace |
|
|
-и-
|
Не поддерживается |
Не поддерживается |
-и-
|
Не поддерживается |
|
-и-
|
-и-
|
-и-
|
Не поддерживается |
-и-
|
|
-и-
|
-и-
|
-и-
|
-и-
|
Не поддерживается |
|
-и-
|
Не поддерживается |
Не поддерживается |
-и-
|
Не поддерживается |
|
-и-
|
-и-
|
Не поддерживается |
Не поддерживается |
Не поддерживается |
|
-и-
|
|
-и-
|
Не поддерживается |
-и-
|
|
ReadMultiple |
Не поддерживается |
Не поддерживается |
Не поддерживается |
Не поддерживается |
|
ReadSingle |
Не поддерживается |
WriteMerge |
Не поддерживается |
WriteReplace |
|
ReadSingle |
WriteDelete |
Не поддерживается |
Не поддерживается |
Не поддерживается |
|
ReadSingle |
ReadSingle и WriteDelete |
WriteMerge |
Не поддерживается |
WriteReplace |
|
ReadSingle |
Не поддерживается |
Не поддерживается |
Не поддерживается |
WriteReplace |
|
-и-
|
Не поддерживается |
Не поддерживается |
|
Не поддерживается |
|
-и-
|
Не поддерживается |
Не поддерживается |
Не поддерживается |
Не поддерживается |
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)