首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WCF 技術內幕(28):訊息——使用訊息標頭(中):MessageHeaders 與標頭操作

     編輯:關於.NET

MessageHeaders:標頭集合的管理者

Message 唯讀屬性 Headers 回傳 MessageHeaders(具體類別,非抽象,無工廠方法)。實作 IEnumerable<MessageHeaderInfo> 可迭代檢視所有標頭。MessageHeaderInfo 為 MessageHeader 基類,定義 Actor、MustUnderstand 等屬性。

建構與新增標頭

  • 三個公開建構子:深拷貝現有 MessageHeaders、指定 MessageVersion、指定版本與初始容量(效能優化)
  • Add(header):附加至末端
  • Insert(index, header):指定位置插入,索引超界拋 ArgumentOutOfRangeException

查詢與取得標頭值

  • FindHeader(name, ns, actor?):回傳索引,找不到回 -1,多筆回第一筆。作者批評設計不當,建議命名 TryFindHeader 或找不到拋異常
  • GetHeader<T>(index) / GetHeader<T>(name, ns):內部呼叫 FindHeader,找不到拋異常(優於回傳 -1)

複製標頭:CopyHeaderFrom / CopyHeadersFrom

  • CopyHeaderFrom(sourceMsg/index) / CopyHeaderFrom(sourceHeaders/index):複製單一標頭至末端,無指定位置
  • CopyHeadersFrom(sourceMsg) / CopyHeadersFrom(sourceHeaders):整組標頭**串聯**至末端(非取代),易產生重複標頭(如雙重 Action、To),開發者需自行檢查去重

序列化標頭

  • WriteHeader(index, writer):序列化單一標頭,內部呼叫 WriteStartHeader + WriteHeaderContents
  • 無一鍵序列化全組標頭機制,需自行迭代。實務上少在 Message 外部序列化標頭,Message.WriteMessage 內部會迭代處理
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved