WPF с произвольными неизвестными базами данных - клиент / сервер или настольное приложение? - PullRequest
0 голосов
/ 14 декабря 2011

Моя компания планирует превратить старое приложение Winforms в приложение клиента / сервера WPF / Silverlight.

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

Приложение должно работать с произвольным набором баз данных, которые будут «зарегистрированы» на сервере, и пользователи получат список баз данных в соответствии с их правами аутентификации. Затем они могут делать практически все в этих базах данных, что можно себе представить. Система должна обрабатывать до 2 миллионов строк.

Базы данных очень разные, их может быть много, это могут быть MS Access, Oracle, SQL Server и т. Д., Поэтому я не могу указать их все раньше. Кроме того, необходима связь с кешем SQLite. У меня уже есть все необходимое для запросов SQL из приложения Winforms.

Я думал:

1) Простой сервер WCF, указывающий в файле конфигурации доступные базы данных для каждого типа пользователя.

2) Интерфейс, который определяет все необходимые запросы SQL, которые могут быть сделаны к серверу.

3) Клиент ...

Идея такова: клиент-серверное приложение, в котором клиент использует службы WCF для выполнения запросов SQL (INSERT, UPDATE, SELECT и т. д.) к таблицам путем вызова методов служб.

В идеале служба должна быть расходной как для WPF, так и для приложения Silverlight.

Это путь? Какие существующие технологии я мог бы использовать в отношении форматов, связи, услуг и т. Д.

Если это будет проблематично, я хотел бы вернуться к настольному приложению, но как решить проблему типа пользователя / доступа к базе данных для каждого клиента?

1 Ответ

0 голосов
/ 14 декабря 2011

Я бы придерживался ADO.NET и начинал с класса DbProviderFactory.Это позволит вам определить правильный доступ к базе данных на основе информации, предоставленной провайдером с использованием шаблона Factory Design.Таким образом, вместо создания специализированных объектов для каждого типа базы данных и базы данных, вы можете абстрагировать эту логику с помощью DbProviderFactory.

Вот ссылка, которая показывает несколько примеров: http://msdn.microsoft.com/en-us/library/wda6c36e(v=VS.100).aspx

...