WCF メッセージの内容を gzip エンコードしようとしています。私が見るほとんどの例は、BindingElement と MessageEncodingFactory を持つことについて話しています。
IDispatchMessageInspector の BeforeSendReply でこれを行うことによる副作用はありますか? つまり、メッセージを受け取り、圧縮して元のメッセージと置き換えます。
public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
HttpResponseMessageProperty httpResponseProperty = new HttpResponseMessageProperty();
httpResponseProperty.Headers.Add(HttpResponseHeader.ContentEncoding, "gzip");
reply.Properties[HttpResponseMessageProperty.Name] = httpResponseProperty;
reply = gzip(reply);
}
gzip は、(xml) 本体を抽出し、gzip されたバイト ストリームに置き換える関数です。
私はラインに沿って何かを探しています
- いやー!!それはあなたのサーバーを殺すでしょう。
- いいえ、それはメッセージを x より長く分割します。
- クライアントはこれを、gzip 圧縮されたメッセージではなく、本文としてランダムな一連のバイトを含むメッセージとして見るため、良い考えではありません。
- うん、これはうまくいく。また、パフォーマンスへの影響はそれほど大きくありません。
ありがとう!