Что происходит между SQL Server и клиентом? - PullRequest
1 голос
/ 13 июня 2010

Этот вопрос является обновленной версией предыдущего вопроса, который я задавал здесь.

Я новичок в модели клиент-сервер с SQL Server в качестве реляционной базы данных.Я прочитал, что публичный доступ к SQL Server не является безопасным.Если прямой доступ к базе данных не является хорошей практикой, то какой тип слоя должен быть расположен между сервером и клиентом?Обратите внимание, что у меня есть настольное приложение , которое будет служить клиентом, и удаленная база данных SQL Server, которая будет предоставлять данные клиенту.Клиент введет свое имя пользователя и пароль, чтобы увидеть свои данные.Я слышал о таких терминах, как VPN, ISA, TMG, Terminal Services, прокси-сервер и так далее.Мне нужна быстрая и безопасная n-уровневая архитектура.

PS Я слышал о веб-сервисах перед базой данных.Могу ли я использовать WCF для извлечения, обновления, вставки данных?Будет ли это хороший подход с точки зрения безопасности и производительности?

1 Ответ

2 голосов
/ 13 июня 2010

Уровень веб-сервисов довольно распространен для умных клиентов как слой между пользователем-клиентом и сервером.Это позволяет:

  • простая сеть (только http)
  • у вас есть прикладной уровень, на котором можно выполнить проверку и т. Д., Не нарушая db
  • , вы можете иметь безопасностькоторый не привязан к БД
  • , БД может работать как меньшее количество учетных записей (учетных записей приложений), что позволяет увеличить пул соединений
  • , вы можете "масштабировать" уровень приложения
  • вы можете кэшировать и т. д. выше базы данных
  • вы можете иметь более богатый уровень приложения, с большим количеством сервисов, чем предоставляет сервер sql
  • клиент имеет известный API и никогда не знает о базе данных (котораяподробности реализации)

Вы можете использовать WCF для общения со слоем приложения, но вы не должны думать с точки зрения «INSERT», «UPDATE» и т. д. - вы должны думать с точки зрения операцийэто имеет смысл для вашей доменной модели - операция «CreateOrder» и т. д. Службы данных ADO.NET позволяют использовать API, более похожий на ваш «INSERT» и т. д., но это не обязательно , управляемый, как вы могликак для безопасного обслуживания.

Производительность на самом деле является фактором "какие запросы я выполняю?"и "сколько данных я передаю?"Пока вы сохраняете операции в здравом уме (то есть не извлекаете все данные «Заказы» по сети только для того, чтобы найти самую последнюю дату заказа), вы должны быть в порядке.

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