gpt4 book ai didi

c# - WCF - 如何有效地发送 GUID(不是字符串)

转载 作者:太空狗 更新时间:2023-10-29 20:32:11 25 4
gpt4 key购买 nike

我有一个包含大量数据传输对象的集合,我需要通过 WCF 将其发送到 Silverlight 客户端。我正在使用默认的 DataContractSerializer 和 HTTPS channel 。

这是一种 DTO 的示例。

[DataContract(Namespace = Constants.OrgStructureNamespace)]
public class EntityInfo : IExtensibleDataObject
{
[DataMember] public Guid EntityID { get; set; }
[DataMember] public EntityType EntityType { get; set; }
[DataMember] public IList<Guid> EntityVersions { get; set; }
[DataMember] public IList<Guid> OrganisationStructures { get; set; }

#region IExtensibleDataObject Members
...
#endregion
}

服务器端的域实体使用 GUID 作为主键。这些被序列化为 36 字节长的字符串。二进制形式的 GUID 应该只有 16 个字节长。

是否有技巧让 DataContractSerializer 将我的 GUID 序列化为二进制而不是冗长的字符串以提高性能?

最佳答案

试试这个:

[DataContract(Namespace = Constants.OrgStructureNamespace)]
public class EntityInfo : IExtensibleDataObject
{
public Guid EntityID { get; set; }

[DataMember(Name="EntityID")]
byte[] EntityIDBytes
{
get { return this.EntityID.ToByteArray(); }
set { this.EntityID = new Guid(value); }
}

[DataMember]
public EntityType EntityType { get; set; }
[DataMember]
public IList<Guid> EntityVersions { get; set; }
[DataMember]
public IList<Guid> OrganisationStructures { get; set; }

#region IExtensibleDataObject Members
// ...
#endregion
}

看起来 DataContractSerializer 通过 Base64 编码来处理字节数组,而它似乎只是对 Guid 使用 Guid.ToString 方法。

关于c# - WCF - 如何有效地发送 GUID(不是字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4220135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com