Наша команда оценивает использование служб данных WCF (ранее ADO.NET Data Services) и решила, что нам нужно будет создать Пользовательский поставщик услуг данных . Где можно найти пример реализации двух необходимых интерфейсов: IDataServiceMetadataProvider и IDataServiceQueryProvider ?
РЕДАКТИРОВАТЬ: обратите внимание, что «Пользовательские данные WCF Сервис Провайдер» не такой же, как «Пользовательский поставщик данных ADO.NET».
РЕДАКТИРОВАТЬ: Мы начали реверс-инжиниринг с использованием Reflector, но я все равно был бы признателен, если бы у кого-то был образец, который он хотел бы опубликовать!
Я только что реализовал свой первый DataService с нестандартным провайдером две недели назад и был на грани отказа (даже после прочтения сообщения в блоге AlexJ о нестандартных провайдерах. ).
Затем я обнаружил, что специальный набор инструментов провайдера делает эту задачу довольно простой. Посмотрите на решение и способ реализации демонстрационного веб-сервиса в нем. Затем измените этот демонстрационный проект в соответствии с вашими потребностями. Кодировать все это с нуля гораздо проще, а инструментарий в любом случае создан с возможностью повторного использования.
Наконец-то! Алекс Джеймс из Microsoft ведет блог об этом прямо сейчас:
http://blogs.msdn.com/alexj/archive/2010/01/04/creating-a-data-service-provider-part-1-intro.aspx
Лучший способ сделать это - использовать WCF Data Services Toolkit .
Автор / сопровождающий этого проекта также имеет несколько сообщений в блоге по его использованию. Он не подробно описывает, как использовать все его функции, но дает вам отличное введение и примеры того, как его использовать.
По сути, он позволяет вам представлять любой объект в качестве канала OData путем реализации класса «Репозиторий». Он обрабатывает все отражения, необходимые для того, чтобы сообщать платформе Data Services о форме ваших данных.
Я предполагаю, что MS использовала пользовательские интерфейсы провайдера службы данных WCF при создании их провайдера SharePoint возможно, мы сможем найти информацию об использовании, отразив некоторые DLL-библиотеки SharePoint.
Код, который вам требуется написать, будет зависеть от вашего источника данных.
Вы можете сэкономить усилия при разработке, используя стандартные службы данных ADO.Net и расширяя их при необходимости.
Посмотрите эту ссылку для добавления пользовательского кода в службы данных ADO.Net: http://weblogs.asp.net/cibrax/archive/2009/06/08/injecting-custom-logic-in-ado-net-data-services.aspx
На этой странице также есть ссылка, показывающая некоторые детали реализации.
Я не знаю ни о каких открытых / публичных реализациях; Лучшим вариантом может быть использование .NET Reflector против существующей реализации.