Вопрос архитектуры - вызывать удаленный SQL Server напрямую или через службу? - PullRequest
0 голосов
/ 18 ноября 2009

В моем новом приложении WPF / silverlight лучше напрямую подключаться к моему удаленному SQL Server (я использую linq to sql) или лучше вызывать службу WCF и подключать эту службу к базе данных?

SQL-сервер и веб-сервер Win2k8 арендованы и находятся в одном месте. При создании службы WCF я запустил бы ее на веб-сервере и подключился к базе данных по соседству. Меня не беспокоит возможность повторного использования этого сервиса, но меня интересует производительность. Что лучше сделать вызов SQL удаленно с моих клиентов напрямую или вызвать службу и сделать так, чтобы служба выполняла вызовы?

Ответы [ 4 ]

6 голосов
/ 18 ноября 2009

В основном в целях абстракции и безопасности, если это приложение работает на компьютере клиента вне офиса (что я должен предположить), вы должны предоставить сервис WCF. Таким образом, вы можете управлять безопасностью и никогда не позволять клиенту видеть что-либо, связанное с подключением к вашему SQL-серверу. Таким образом, также, если что-то меняется на вашем SQL-сервере, вам не нужно обновлять приложение.

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

5 голосов
/ 18 ноября 2009

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

3 голосов
/ 18 ноября 2009

Обычно вам нужен веб-сервис, потому что порт SQL Server (tcp 1433) закрыт в большинстве брандмауэров. Даже если вы сможете подкупить своего администратора брандмауэра, чтобы открыть его, он все равно будет заблокирован на клиентских сайтах.

1 голос
/ 18 ноября 2009

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

...