Serialization之SOAP序列化

前言

    XML序列化还可用于对象序列化符合SOAP规范的XML流。SOAP是一种简单的基于XML的协议,它使应用程序通过HTTP来交换信息。专门为使用XML来传输过程调用而设计的。如同常规的XML序列化,特性可用于控制XML Web services生成的文本样式的SOAP消息。

内容

    根据上篇的二进制序列化:Serialization之BinaryFormatter

    这里就只说这两种的区别之处:

    首先SOAP采用XML流进行数据序列化保证数据对象的数据以及数据的存储类型存储状态。XML可以达到Web服务上进行数据共享。

这里需要在上篇的基础上修改一下序列化的协议就ok了。

命名空间部分添加:

<span style="font-family:KaiTi_GB2312;font-size:18px;">//在引用部分添加SOAP协议,并引用此命名空间
using System.Runtime.Serialization.Formatters.Soap;</span>

声明一个XML文件:

<span style="font-family:KaiTi_GB2312;font-size:18px;">        const string FileName = @"..\..\SavedLoan.xml";//声明一个XML文件</span>

窗体加载序列化格式:

<span style="font-family:KaiTi_GB2312;font-size:18px;">                //以SOAP格式将对象或整个连接对象的图形序列化反序列化
                SoapFormatter deserializer = new SoapFormatter();</span>
窗体关闭事件里:

<span style="font-family:KaiTi_GB2312;font-size:18px;">            //声明以SOAP格式序列化XML流
            SoapFormatter serializer = new SoapFormatter();</span>
效果图:


XML流文件:



小结

    上面的这些序列化都是依据微软封装好的一些序列化格式,什么二进制、SOAP序列化、XML序列化和SOAP序列化一样都是依附了XML可以共享数据这一特性,但是好多大神都会自己自定义序列化,根据项目的需求,为了保证对象数据持久化,采用了自定义序列化,序列化自己想要的数据格式。ITOO里面将list可以序列化为json串。还有一些非关系的数据存储格式,让我们在序列化的同时,数据安全性提高了,数据共享性,数据对象持久化这些方便都得到了提升。本人菜鸟一枚,欢迎各路大神广提建议。


感谢您的宝贵时间······

转载于:https://www.cnblogs.com/zhoulitong/p/6412346.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity中的序列Serialization)是指将对象转换为字节流的过程,而反序列(Deserialization)则是将字节流转换为对象的过程。Unity提供了一些机制来实现对象的序列和反序列。 Unity的序列机制主要用于保存和加载游戏对象的状态,或者在网络传输中传递对象。以下是一些常见的序列和反序列方法: 1. Unity的内置序列:Unity提供了内置的序列机制,使得你可以将脚本中的变量标记为可序列。通过在变量前面添加 `[SerializeField]` 属性,可以将该变量标记为可序列。例如: ```csharp [SerializeField] private int score; ``` 2. XML 和 JSON 序列:Unity还支持使用XML或JSON格式进行序列和反序列。你可以使用 `System.Xml.Serialization` 命名空间下的类来进行XML的序列和反序列,或者使用JsonUtility类来进行JSON的序列和反序列。 ```csharp // XML序列和反序列示例 using System.Xml.Serialization; // 序列为XML XmlSerializer serializer = new XmlSerializer(typeof(MyClass)); using (StreamWriter writer = new StreamWriter("data.xml")) { serializer.Serialize(writer, myObject); } // 从XML反序列 using (StreamReader reader = new StreamReader("data.xml")) { MyClass myObject = (MyClass)serializer.Deserialize(reader); } // JSON序列和反序列示例 using UnityEngine; using UnityEngine.Networking; // 序列为JSON string json = JsonUtility.ToJson(myObject); // 从JSON反序列 MyClass myObject = JsonUtility.FromJson<MyClass>(json); ``` 3. 二进制序列:如果需要更高效的序列和反序列操作,可以使用二进制格式。Unity提供了BinaryFormatter类来进行二进制的序列和反序列。 ```csharp // 二进制序列和反序列示例 using System.Runtime.Serialization.Formatters.Binary; // 序列为二进制 BinaryFormatter formatter = new BinaryFormatter(); using (FileStream stream = new FileStream("data.bin", FileMode.Create)) { formatter.Serialize(stream, myObject); } // 从二进制反序列 using (FileStream stream = new FileStream("data.bin", FileMode.Open)) { MyClass myObject = (MyClass)formatter.Deserialize(stream); } ``` 这些是Unity中常用的序列和反序列方法,你可以根据具体的需求选择适合的方法来实现对象的序列和反序列

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值