Можно ли запросить несколько баз данных с помощью служб данных WCF? - PullRequest
2 голосов
/ 11 января 2011

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

Мне нужно создать службу WCF, которую клиент может использовать для запроса баз данных. Однако, с точки зрения клиента, существует только 1 база данных. Под этим я подразумеваю, что когда клиент выполняет запрос, он должен запросить все базы данных и вернуть объединенные результаты.

Мне также нужно предоставить клиенту гибкость в определении его собственных запросов. Поэтому я смотрю на службы данных WCF, которые предоставляют очень приятную функциональность для заданных клиентом запросов.

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

Кто-нибудь знает, возможно ли для службы данных WCF выполнять запросы к нескольким базам данных с одной и той же схемой?

Ответы [ 3 ]

1 голос
/ 13 января 2011

Я разместил вопрос на форумах MSDN и обнаружил, что это потребует больших усилий.

Это включает создание собственного поставщика услуг передачи данных ,что сложно и может быть много работы.Кроме того, объединение результатов с сортировкой + разбиением по страницам будет слишком сложной и рискованной задачей для того, что я готов сделать.Например, как запросить несколько баз данных для страницы 1000, отсортированной по столбцу Имя?По сути, мне нужно было бы запросить все данные из всех баз данных, отсортировать по имени, а затем выбрать 1000-ую страницу.

1 голос
/ 11 января 2011

Я думаю, что вы должны написать фасадный сервис, который будет отправлять запрос в базовый - либо последовательно, либо параллельно.Обычно вы создаете фасад таким образом, чтобы служба данных WCF использовала поставщика отражений, и вы можете использовать LINQ to SQL или Entity Framework для базовых баз данных.

Как создать службу данных с помощью отраженияПровайдер (службы данных WCF): http://msdn.microsoft.com/en-us/library/dd728281.aspx

HTH,

- larsw

0 голосов
/ 13 января 2011

Похоже, вам нужно использовать другой подход.Я говорю о распределенных кешах, таких как Oracle Coherence или NCache.Структура действительно прозрачна - вы взаимодействуете с базой данных в памяти, которая синхронизируется с вашей «резервной картой» - одной или несколькими базами данных.

В таких кешах много интересных функций.например, вы можете изменить стратегию магазина или создать резервную карту с другими базами данных (MS SQL, Oracle и т. д.)

...