teleware.foundation.serialization.serializers.compress - wengys/Teleware.Foundation GitHub Wiki

Teleware.Foundation.Serialization.Serializers.Compress

基于DeflateStream的IObjectSerializer包装

概述

本库中主要的类为CompressObjectSerializerWrapper

CompressObjectSerializerWrapper通过装饰模式将其他IObjectSerializer序列化结果进行压缩

应用

假设有类Foo,如果希望Foo中注入的IObjectSerializer针对结果进行压缩,可以参考以下代码:

public class Module : Autofac.Module
{
    protected override void Load(ContainerBuilder builder)
    {
        builder.Register<Foo>((ctx) => new Foo(ctx.ResolveNamed<IObjectSerializer>("CompressObjectSerializerWrapper"))).AsSelf();
    }
}

如果希望将整个系统中所有的序列化结果进行压缩,可以参考以下代码

public class Module : Autofac.Module // 注意,此模块应该在所有IObjectSerializer实现之后注册进autofac,否则可能被其他IObjectSerializer覆盖
{
    protected override void Load(ContainerBuilder builder)
    {
        builder.Register((ctx) => new CompressObjectSerializerWrapper(new JsonObjectSerializer())) // 此处演示包装JsonObjectSerializer
                .As<IObjectSerializer>()
                .SingleInstance();
    }
}
⚠️ **GitHub.com Fallback** ⚠️