Using JSON and gzip together in WCF

Refresh

2 weeks ago

Views

17 time

0

I need to create an endpoint on the server side (WCF) that will accept requests from the client that will contain headers:

Content-Type : application/json
Content-Encoding : gzip
Accept-Encoding : gzip

Is that possible complete without implementing custom MessageEncodingBindingElement? Something like this:

 <customBinding>
     <binding name="gzipbinding">
        <binaryMessageEncoding compressionFormat="GZip"/>
        <webMessageEncoding />
        <httpTransport/>
     </binding>
  </customBinding>

But it throw exception, because binding stack can contains only one encodingBindingElement.

1 answers

0

Да, есть только один кодирующий связывающий элемент разрешенного обычая связывания. На мой взгляд, мы могли бы добиться того, чего вы хотите в следующем методе. Во-первых, определить пользовательские привязки включая BinaryMessageEncoding и установить compressionformat в Gzip.

<binaryMessageEncoding compressionFormat="GZip">

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

JsonConvert.SerializeObject(person);

И клиент получает значение по десериализации параметров.

Person person = JsonConvert.DeserializeObject<Person>(proxy.GetPersonDetailWithJson("123"));

Одна вещь, следует отметить, что в некоторых указанном случае следует избегать JSon сериализации, так как с помощью JSON для сериализации и десериализации объекта требует времени и ресурсов (CPU, RAM).