Я немного поигрался с различными компрессиями, а потом до меня дошло. Конечная точка WCF настроена для использования двоичного кодирования. Это означает, что IIS будет принимать двоичные закодированные данные и применять к ним сжатие.
В моем случае я сериализовал данные с использованием стандартного DataContractSerializer и MemoryStream. Это однако выплевывает XML.
Лучшим решением, которое мы нашли, было использование BinaryDictionaryWriter в моем DataContractSerializer. Это дает мне двоичные данные, которые я могу затем сжать с помощью GZIP. Окончательные результаты дают лучшее сжатие, чем мы получили с IIS. (Для порядка 700K через IIS до 500K с использованием этого метода)
Пример использования BinaryDictionaryWriter вы можете увидеть в следующем посте. Это ответ ниже утвержденного ответа.
Как передать большой объем данных с помощью WCF?
Посмотрим, как теперь удаляет двоичное кодирование из конечной точки, чтобы узнать, стоит ли эта производительность дополнительного уровня «вещи».