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

fmms 12年前發布 | 26K 次閱讀 消息框架 WEB服務/RPC/SOA

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.baiduhome.net/lib/view/home/1329704577046

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!