xiaopohou

KJFramework.Messages 高性能二进制消息框架

       这是一个非常棒的框架,我们通过使用KJFramework.Message框架来达到自动序列化/反序列对象
的目的。 只需要简单的两步,就能使你摆脱那些繁琐的过程。

  • 还记得.NET中内置提供的序列化/反序列化机制吗?
    那样的东西实在是难以接受不是吗? 超低的性能,超大的序列化后字节大小,这样序列化出来的对象
    是无法用来做网络传输的!
  • 你是否觉得你项目中正在使用的序列化/反序列化机制依然无法满足你的各种需求呢?  
    快来尝试一下这个项目吧!
  • KJFramework.Message的优点
    1. 序列化后的字节数组很小,非常适合网络传输
    2. 序列化/反序列化的速度超快(超高的性能)
    3. 最低的GC 1~2代回收次数以及GC Time占用率
    4. 非常易用的API设计
    5. 更干净的代码(更适用于二次开发)
    6. 更高效的代码质量以及DEBUG跟进速度(我们会在使用问题上,以及遇到问题的地方为您排忧解难)

       还在犹豫吗? 快来尝试一下吧,我们正在努力将KJFramework.Message框架打造为一款.NET平台下,最易用、最高效、可扩展/可定制性极高的对象自动序列化/反序列化解决方案!

                                                                                                         - 创始人: 杨杰(Kevin.Kline) 
                                                                                                         - 以下名单为部分代码贡献者: 张超

 

 

智能对象的声明:

//注意, 必须为需要序列化的对象继承自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

 

 NuGet*

    现在, KJFramework.Message框架已经可以在NuGet上被找到啦!
    我们建议您使用如下3种方式来进行KJFramework.Message的使用:

    1. 项目引用->右键菜单-> 选择(管理NuGet程序包...)->搜索"KJFramework.Message"->下载
    2. VS工具菜单项->扩展和更新->搜索"KJFramework.Message"->下载
    3. NuGet Command:

       (1). 安装:    Install-Package KJFramework.Message        
       (2). 更新:    Update-Package KJFramework.Message

 

转自:http://message.codeplex.com/

分类:

技术点:

相关文章: