阅读内容 

在代码中使用biztalk类库建立Message和Part

[日期:2007-07-23] 来源:  作者: [字体: ]
     Biztalk消息是由一个消息上下文和零或多个部分组成,部分中又能且只能有一个部分别标识为正文部分。
  
  本文介绍使用biztalk本身的类库如何通过代码建立消息和消息的部分。
  
  
  
  IBaseMessageFactory Interface
  
  Namespace: Microsoft.BizTalk.Message.Interop
  
  Assembly: Microsoft.BizTalk.Pipeline (in microsoft.biztalk.pipeline.dll)
  
  IBTMessageAgentFactory Interface (继承自IBaseMessageFactory)
  
  Namespace: Microsoft.BizTalk.Agent.Interop
  
  Assembly: Microsoft.Biztalk.Interop.Agent (in Microsoft.Biztalk.Interop.Agent.dll)
  
  
  
  使用IbaseMessageFactory(IBTMessageAgentFactory)接口的CreateMessage方法新建一个消息:
  
  IBaseMessage IbaseMessageFactory. CreateMessage()
  
  消息建立后,可以给这个消息写入或者升级属性。
  
  使用消息的Write方法写入Property fields和Distinguished fields的属性,Property fields属性的名称空间在属性架构中定义,Distinguished fields的属性名称空间使用公共的名称空间:http://schemas.microsoft.com/BizTalk/2003/btsDistinguishedFields
  
  IBaseMessage.Write(string strName, string strNameSpace, object obj)
  
  strName为属性名
  
  strNameSpace为属性名称空间
  
  obj为属性
  
  
  
  使用消息的Promote方法升级Property fields属性需要升级的属性
  
  IBaseMessage.Promote(string strName, string strNameSpace, object obj)
  
  
  
  之后可以给消息添加消息的部分。
  
  使用IbaseMessageFactory(IBTMessageAgentFactory)接口的CreateMessagePart方法新建一个消息:
  
  IbaseMessagePart IbaseMessageFactory. CreateMessagePart ()
  
  建立了消息部分后需要把消息部分的数据加入到消息,消息部分的数据可以是XML格式的消息,可以是任意类型的对象。但是这些类型的数据都必须转换为Stream类型的数据加入到消息部分。消息部分的数据通过消息部分的Data属性赋给消息部分:
  
  Stream Data { get; set; }
  
  所以消息部分的数据不管是XML类型的,还是其他类型的对象都要序列化为一个流才能加入到消息部分。Dotnet框架提供了三种序列化的类:
  
  BinaryFormatter
  
  SoapFormatter
  
  XMLSerializer
  
  因为BinaryFormatter和SoapFormatter类序列化的类必须是标识了[Serializable]属性的类,而XMLDocument类是没有[Serializable]属性标识的,所以一般在biztalk中使用XmlSerializer序列化xml类型的消息,用BinaryFormatter序列化其他类型的消息。
  
  BinaryFormatter.Serialize(Stream serializationStream, object graph)
  
  XMLSerializer. Serialize ( Stream serializationStream, Object graph)
  
  graph为需要序列化的对象
  
  serializationStream为序列化后Stream保存的对象,一般为MemoryStream。
  
  
  
  生成消息部分的Stream后,通过给消息部分的Data属性赋值加入到消息部分。
  
  之后再通过消息的AddPart方法把完整的消息部分对象加入到消息对象中:
  
  IbaseMessage.AddPart(string partName, IBaseMessagePart part, bool bBody);
  
  partName为部分的名称
  
  part为消息部分对象
  
  bBody为表示这个部分是否是消息的正文部分
  
  
  
  消息中可以使用AddPart方法增加多个消息部分,但是其中只能有一个为正文部分,也可以一个正文部分都没有。
  
    
阅读:
录入:blue1000

推荐 】 【 打印
相关新闻      
本文评论       全部评论
发表评论
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款


点评: 字数
姓名:
Advertisement
内容查询


Advertisement