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服務的構建)