Как я могу перенести перспективный перенос локального уровня данных ADO.net в будущий веб-интерфейс (веб-сервис или REST)? - PullRequest
0 голосов
/ 25 марта 2010

ОБЩАЯ ИНФОРМАЦИЯ: Сейчас я работаю над приложением .NET WinForms (C #) с базой данных ADO.net для слоя данных.

ВОПРОС: Как мне разработать это сейчас так, чтобы было бы легко перейти на модель, где уровень данных абстрагируется через веб-сервис HTTP или интерфейс REST?

Например, будет ли лучше использовать стандартный интерфейс C # с Factory для получения конкретной реализации интерфейса, в котором используется ADO.net?

спасибо

Ответы [ 3 ]

2 голосов
/ 25 марта 2010

На самом деле вы хотите, чтобы ваше двухуровневое приложение (Application <-> Database) превратилось в n-уровневую систему (Application (s) <-> App Server <-> Database).

Это сложное изменение, потому что вы должны думать о безопасности, бизнес-логике и обо всем.

Одной из идей может быть использование сторонней библиотеки, такой как DataAbstract . Это полная инфраструктура n-уровня, позволяющая использовать такие функции, как LINQ, для удаленного источника данных и упрощающая разработку n-уровня. Он также предоставляет интерфейс веб-службы для легкого доступа к вашей бизнес-логике на уровне приложения из любого источника. В дальнейшем он предоставляет вам клиентские библиотеки для iPhone, а также Windows Mobile, которые позволяют вам более быстрый (потому что двоичный) доступ к слою. Интерфейс веб-службы необходим только для платформ, для которых DataAbstract недоступен.

1 голос
/ 25 марта 2010

Вы никогда не захотите абстрагировать DAL с помощью интерфейса REST. Интерфейс REST - это то, что вы предоставляете непосредственно «пользовательскому агенту». Вы никогда не захотите, чтобы ваш бизнес-уровень использовал данные через REST.

Единственное исключение - если ваша основная цель - предоставить необработанные данные какой-либо удаленной третьей стороне.

1 голос
/ 25 марта 2010

Вы ударили ноготь по голове - это абстракция. Начните прямо сейчас с абстрагирования от специфичной для хранилища семантики в вашей бизнес-логике. Разработайте чистый объектно-ориентированный DAL и выполните все операции CRUD / Query через него, и хотя ваша объектная модель (или модель предметной области, если вы хотите распознать разницу между ними) может использовать конкретные классы, ваши операции DAL должны быть определены в интерфейсе. Используете ли вы фабрику, зависит от вашего конкретного варианта использования, но если вы разрабатываете с учетом такого рода абстракций, имеет смысл принять инверсию контейнера управления и обрабатывать такого рода разводку путем внедрения зависимостей. Там являются лотами до на выбор из .

...