A方案 - 基于强类型(智能对象)的使用手册

 

 

智能对象的声明:

//注意, 必须为需要序列化的对象继承自IntellectObject
public class TestObject : IntellectObject
{
    [IntellectProperty(0)]
    public string Name{get; set;}
}

序列化:

TestObject obj = new TestObj{Name = "Kevin"};
//序列化类到字节数组.
obj.Bind();
/*当然使用者可以选择使用obj.IsBind属性来检查当前的对象是否已经成功的序列化为字节数组

if(obj.IsBind)
{
//TO DO: anything.
}
*/

//得到序列化好的字节数组
byte[] data = obj.Body;

反序列化:

//我们来说说反序列化吧,更加单 :) 
//我们接着上面的代码来写。
TestObj newObj = IntellectObjectEngine.GetObject<TestObj>(typeof(TestObj), data);

 

获取对象描述信息:
*获取对象的描述信息, 将会使我们能够更加简单的将一个对象记录到日志文件中

//我们接着上面的说, 获取对象的描述信息只需要下面的一行
newObj.ToString();

 

不参与序列化传输的值类型默认值:

*由于我们的框架中新增了"值类型默认值不参与序列化传输"的功能,所以我们为您准备了我们的框架中
所定义的值类型默认值列表。
*引用类型/可空值类型(Nullable ValueType)以及不包含在以下列表中的值类型,都不被这个新功能所支持。 

Type                Default Value                     
bool false
char '\0'
byte 0
sbyte 0
decimal 0
short 0
ushort 0
int 0
uint 0
float 0
long 0
ulong 0
double 0
DateTime DateTime.MinValue
IntPtr IntPtr.Zero
Guid Guid.Empty
TimeSpan new TimeSpan(0, 0, 0)

 

性能指标(New):

*请注意: 由于性能的提升, 我们在2012年09月20日更新了性能指标!

*此框架的基于.NETFRAMEWORK 4.0开发
*以下测试指标所采用的智能对象为一个结构很复杂的对象, 如果您想了解更多, 请转至以下网址进行查看: http://www.cnblogs.com/umbrella_yang/archive/2011/11/18/2254414.html

 
测试平台:
CPU: Intel(R)Xeon(R)CPU X5670 @2.93GHz @2.93GHz (2处理器)
System: Windows Server 2008 R2 Enterprise

 

序列化复杂对象(DEBUG)

    .次数 100000:  970(ms)  *此值根据测试机器的配置不同而不同,仅供参考
    .Gen0回收次数: 36
    .Gen1回收次数: 0
    .Gen2回收次数: 0

反序列化复杂对象(DEBUG)

    .次数 100000:  563(ms)   *此值根据测试机器的配置不同而不同,仅供参考
    .Gen0回收次数: 22
    .Gen1回收次数: 1
    .Gen2回收次数: 0

 

序列化复杂对象(RELEASE)

    .次数 100000:  870(ms)  *此值根据测试机器的配置不同而不同,仅供参考
    .Gen0回收次数: 30
    .Gen1回收次数: 0
    .Gen2回收次数: 0

反序列化复杂对象(RELEASE)

    .次数 100000:  410(ms)   *此值根据测试机器的配置不同而不同,仅供参考
    .Gen0回收次数: 22
    .Gen1回收次数: 1
    .Gen2回收次数: 0

Last edited Dec 19, 2013 at 6:29 AM by g0194776, version 6