技术开发 频道

HFSoft.Net之XmlMessageAdapter对象

    【IT168 技术文档】HFSoft.Net组件提供对象发送和接收功能,但由于MessageAdapter最终是通过二进制序列化的方式来进行对象和字节数据之间的转换.实际上并不是所有平台都提供对象序化这个功能,不同平台的序列化方式也有所不同,这样导致其他平台请求服务非常困难,

     为了更好地和其他平台进行通信, HFSoft.Net提供一个基于XML格式的消息适配器XmlMessageAdapter,开发人员可以从XmlMessageAdapter派生下来实现基于XML格式的消息对象。XmlMessageAdapter是基于IMessage接口的实现,也就是说它同样能被IMessageChannel处理。组件还提供IXmlStateManager接口用于管理消息内部分对象的数据转换。

 

       
    当继承XmlMessageAdapter后开发人员可以重写protected override void SaveXml(System.Xml.XmlDocument doc, System.Xml.XmlNode parent)和protected override void LoadXml(System.Xml.XmlNode node)方法进行对象的信息的保存和加载。

  基于XML格式的验证消息:

public class Login:HFSoft.Net.Message.XmlMessageAdapter 
{
        private string mName;
        public string UserName
        {
            get
            {
                return mName;
            } 
           set
            {
                mName = value; 
           }  
      }
        private string mUserPWD
       public string UserPWD
        {
            get
            {
                return mUserPWD;
            }
            set
            {
                mUserPWD = value;
            }
       }
        protected override void LoadXml(System.Xml.XmlNode node)
        {
           base.LoadXml(node);
            System.Xml.XmlNode subnode = node.SelectSingleNode("UserName");
            if(subnode != null)
            {
                if(subnode.FirstChild != null)
                    UserName = subnode.FirstChild.Value;
            }
            subnode = node.SelectSingleNode("UserPWD");
            if(subnode != null)
            {   
             if(subnode.FirstChild != null)}
                    UserPWD = subnode.FirstChild.Value;
            } 
       }
       protected override void SaveXml(System.Xml.XmlDocument doc, System.Xml.XmlNode parent)
       {
            base.SaveXml(doc, parent)
           System.Xml.XmlElement node = doc.CreateElement("UserName");
            node.InnerText = UserName;
            parent.AppendChild(node);
            node = doc.CreateElement("UserPWD");
            node.InnerText= UserPWD;
            parent.AppendChild(node);
         
        }
}
    定义使用消息:
    Login log = new Login();
    log.UserName ="Henry";
    log.UserPWD ="BBQ";
     消息对应的XML数据:
    <Message>
     <ID>a90e738b-b6b1-4fd0-a8bc-c613611ec539</ID>
    
  基于XML的数据格可以更好地和其他平台进行数据交换处理。

 

0
相关文章