KJFramework.Messages 智能二进制消息框架

fmms 13年前

KJFramework框架中内置了一套,可以将网络传输实体自动转换为二进制元数据的能力框架。
使用此框架,将使得用户不在关心底层传输时对于二进制编码/解码的繁琐过程,解放程序员的脑力劳动。
目前此内置框架被初步定义在命名空间:KJFramework.Messages内,拥有独立Assembly.
对于智能二进制消息框架, 内部提供了对于诸多类型的支持,甚至可以用于在不编写序列化代码的情况下,
将一个网络传输实体转换为二进制操作。
这一切的操作,都全部由内部框架完成,通过简单的属性标签,就可以实现很强大的转换功能。
目前智能二进制消息框架中,仍保留了内部扩展能力,日后扩展后,将会通过配置文件来增强配置能力。

 

智能对象的声明:

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

性能指标(New):

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

*此框架的基于.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:  1120(ms)   *此值根据测试机器的配置不同而不同,仅供参考
    .Gen0回收次数: 30
    .Gen1回收次数: 12
    .Gen2回收次数: 1

反序列化复杂对象(DEBUG)

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

 

序列化复杂对象(RELEASE)

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

反序列化复杂对象(RELEASE)

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

 

*具体的测试截图, 请查看源代码Pictures目录下的图片. 
*关于KJFramework, 我们很高兴的为您推荐另外2个开源项目, 希望您能够喜欢:

    #KJFramework.ServiceModel (RPC框架 - 轻量级SOA技术解决方案)
    #KJFramework.Dynamic (基于组件模式的服务构建框架, 我们推荐您使用此框架进行Windows服务的构建)

项目主页:http://www.open-open.com/lib/view/home/1329704577046