Перемещение уровня доступа к данным в службу WCF

Я нахожусь на стадии создания wcf-сервиса для моего приложения, которое будет предоставлять продукты. У меня есть модель домена и уровень сохранения в приложении.

Для службы мне также понадобится подобная модель домена и уровень сохранения. Я не хочу дублировать вещи, и я также не хочу делиться библиотеками и связывать приложение и службу.

Поэтому мне кажется, что я должен создать либо отдельный сервис (или реализовать в этом новом, который я создаю) уровень доступа к данным, и использовать эту услугу для доступа к данным из этой аппликации, следовательно, будет только один уровень доступа к данным, который совместно используется как приложением, так и службой

Является ли это хорошей моделью и есть ли серьезные проблемы, которые ждут меня в будущем, если да, то каково было бы ваше предложение? Спасибо!

3 ответа

Я однажды был в той же ситуации, что и вы. сначала во время разработки не было никаких wcf-сервисов для доступа к данным, поэтому я использовал nhibernate для доступа к данным. чтобы облегчить переход от прямого доступа nhibernate к wcf-сервисам для извлечения данных, у меня было что-то вроде:

client app -> Repository Interfaces -> Repository Implementations (сначала этот запрос извлекал данные через nhibernate, вторая реализация через wcf).

имеющий интерфейс, который скрывает детали реализации из вашего кода приложения, может быть подходящим решением для вашей проблемы. (Кстати, код доступа к nhibernate был в основном повторно использован на стороне сервера, поэтому вам не придется бросать вещи).


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

В настоящий момент

Клиентское приложение ↔ Доступ к базе данных

Это плохая практика, она раскрывает вашу базу данных публично, и порт базы данных может быть заблокирован по умолчанию.

с веб-службой,

Клиентское приложение ↔ Веб-службы (доступ к базе данных)

Он должен иметь соответствующую реализацию безопасности (HTTPS и аутентификация). Веб-сервис обычно размещается на дружественном порту 80, и вам не нужно публиковать публичную базу данных вообще.


Я думаю, что в вашем приложении должен быть только один уровень доступа к данным. Таким образом, если вы создаете сервис и получаете данные от него, обязательно удаляйте каждое прямое соединение с вашим клиентом.

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

licensed under cc by-sa 3.0 with attribution.