首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >城堡温莎WCFFacility压缩

城堡温莎WCFFacility压缩
EN

Stack Overflow用户
提问于 2013-10-22 06:38:48
回答 1查看 69关注 0票数 0

在我们当前的项目中,我们使用Castle在.NET 4应用程序上配置WCF。随着我们来回移动的数据可能会增加,我们希望有某种压缩(从客户端到服务器的Espessially)。在谷歌上搜索这一点带来了两种解决方案:使用内置的.net 45压缩支持(到目前为止,我们无法移动到.net 45,因为我们正式需要支持Windows )或使用微软提供的示例编码器(http://msdn.microsoft.com/en-us/library/ms751458.aspx)。由于自定义编码器选项看起来没有那么糟糕,我想试一试,直到我们可以转移到.net 45。我唯一不知道的是,是否可以使用Castle来配置这个场景。

对此有什么想法吗?

谢谢马库斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-03 09:18:28

在对所涉及的WCF类的源代码进行了一些研究之后,我们找到了一个很好的解决方案来满足我们的需求:我们目前正在使用WSHttpBinding进行绑定。它有一个方法CreateBindingElements,它返回使用的绑定元素的集合,可以被重写。因此,我们只是从WsHttpBinding类派生出来,并在返回它之前将GZipMessageEncoding注入集合。

代码语言:javascript
复制
public class GZipWSHttpBinding : WSHttpBinding
{
    public override BindingElementCollection CreateBindingElements()
    {
        BindingElementCollection bec = base.CreateBindingElements();

        int index = bec.Count - 1;
        while (index >= 0 && !(bec[index] is MessageEncodingBindingElement))
            index--;

        if (index >= 0)
        {
            GZipMessageEncodingBindingElement gZipCompression =
                new GZipMessageEncodingBindingElement(bec[index] as MessageEncodingBindingElement);
            bec[index] = gZipCompression;
        }

        return bec;
    }
}

只剩下使用这个类而不是温莎安装程序中的WsHttpBinding类,并且gzip压缩已经就位。

向马库斯问好

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19510755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档