这是一个生成紧凑形式的序列化对象以提高性能的过程,从而加快网络访问。 顾名思义,紧凑的序列化文件在数据和过程的形式上是紧凑的。 紧凑序列化背后的想法是每个“已知类型”(已知类型是在框架中注册的类型)都由框架分配一个唯一的 2 字节类型句柄,这让反序列化器可以唯一地识别“已知类型” .
例如,假设框架将句柄 0 分配给 System.Int32。 然后序列化器将 2 字节句柄和 4 字节对象值写入流。 Deserializer 读取句柄,确定对象类型,然后创建对象并使用其值填充对象。 另一方面,本机序列化使用对象数据写入完整的类型信息。 NCache 通过以下方式巧妙地解决了这些本地绝育问题:
为了使用紧凑序列化,您需要在紧凑的可序列化类型中定义一个默认的公共构造函数(无参数)并将该类型注册为 NCache 经理。 NCache 现在支持自定义泛型类型。 所有具有任意数量参数的泛型类型都可以通过紧凑序列化进行序列化。 如果客户端不想通过 UI 添加泛型类型及其参数,那么他可以选择通过 IGenericTypes 类添加它们。
使用 Compact Serializable 类型 NCache 配置缓存 NCache 管理器,然后注册您的紧凑序列化类型 NCache.
您可以通过 '添加类型' 按钮。 执行以下步骤以使用配置的缓存注册您的类型:
这是通过“通用类型处理程序”注册通用紧凑类型的另一种方式。 使用通用类型处理程序,用户可以通过实现我们的接口一次添加所有通用类型。 这样可以节省时间和精力。 这是一个示例代码。
public class CustomGenericType <T,K,V> { }
public class SetGenerics: IGenericTypeProvider
{
Type[] types = new Type[6];
#region IGenericTypeProvider Members
Type[] IGenericTypeProvider.GetGenericTypes()
{
types[0]=typeof(Dictionary<string, Customer>);
types[1]=typeof(List<int>);
types[2]=typeof(CustomGenericType<Employee, Product, Customer>);
types[3]=typeof(CustomGenericType<Employee, Product, int>);
types[4]=typeof(CustomGenericType<Employee, string, byte>);
types[5]=typeof(CustomGenericType<string, Customer, bool>);
return types;
}
#endregion
}
要注册类型,请按照以下步骤操作。