HFSoft.Net之XmlMessageAdapter对象

       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>

     <Time>2006-7-6 11:46:58</Time>

     <UserName>Henry</UserName>

     <UserPWD>BBQ</UserPWD>

</Message>

基于XML的数据格可以更好地和其他平台进行数据交换处理。

posted on 2006-07-06 12:25  henry  阅读(505)  评论(0编辑  收藏  举报

导航