KJFramework.Messages 智能二进制消息框架
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服务的构建)