У меня есть клиент.NET, который должен соединиться с удаленным SQL Server по WAN, действительно ли возможно сжать трафик SQL между клиентом и сервером?
Я использую.NET 3.5 и SQL Server 2005 и больше.
Если посмотреть на connectionstrings.com здесь для SQL Server 2008, у поставщиков баз данных нет какой-либо схемы сжатия ... Возможно, вам потребуется написать оболочку для другого порта, которая сжимает data, используя внешний интерфейс, отправьте данные через этот порт, оттуда сожмите их, отправьте на удаленную конечную точку, распакуйте их и перенаправьте на реальный порт tcp / ip, на котором находится сервер.
Обычно SQL Server находится на порту 1433 ...
Поскольку изображение стоит тысячи слов ....
+--------+ +--------+ | CLIENT | | SERVER | +--------+ +--------+ Port 1234 Port 1433 <+--+ | | | | +={Module}= <=> TX/RX <=> ={Module}= -+-----------+
Модуль будет сидеть на обоих концах, сжимая / распаковывая ...
Быть честно говоря, похоже, что потребуется работа, так как дыры в брандмауэре должны быть пробиты, чтобы позволить сжатым данным входить и выходить ... добавление NAT / SNAT может усложнить ситуацию ...
Взгляните на в этой статье, которую я написал в Codeproject , этот код действует как перенаправитель трафика и может быть легко изменен для использования схемы сжатия / распаковки ..
Проверьте это: http://www.toonel.net/tcpany.htm
Кстати, я также думаю, что сам SQL Server не может сжимать трафик, но с сетевым уровнем внутри приложения - вы можете сделайте там сжатие.
Я не думаю, что в соединении с SQL-сервером реализовано сжатие - если вам нужно сжать данные, вы должны использовать веб-службу и HTTP-сжатие при обмене данными со службой.
В этом случае я предлагаю использовать веб-службы или WCF для отправки данных вместо использования подключения к базе данных.