使用 ServiceStack 从数据库序列化 XML

Serialising XML from database with ServiceStack

我正在使用的一个应用程序有许多用户定义的屏幕和字段,这些屏幕和字段存储在 SQL 数据库中 XML。

我正在使用 ServiceStack 构建一个 Web API 以供在应用程序中使用。我需要做的一件事是从 XML 中获取用户定义的数据并通过 ServiceStack 将其传递出去。我有点担心从数据库查询的成本,从 XML 序列化为 C# 对象(服务),然后 ServiceStack 再次序列化为 JSON 或任何请求的格式。我考虑过存储为 JSON blob 而不是 XML 但我还需要能够纯粹从 SQL 领域内查询数据。

我有几个问题: 有没有人对最小化序列化成本有任何建议?

ServiceStack 是否有任何可以提供帮助的内置功能?

XML 序列化器特别难以反序列化到它不知道的 POCO 中,并且可能需要对目标模型的额外提示 [DataContract]XmlSerializer Attributes 取决于哪个.NET XML 您选择的序列化程序。 ServiceStack 对这两个实现了 IStringSerializable 接口的序列化器进行了包装:

var dto = DataContractSerializer.Instance.Parse<T>(xml)
var dto = XmlSerializableSerializer.Instance.Parse<T>(xml)

然而,由于它们 XML 序列化程序相当严格且脆弱,我倾向于使用内置的 XLinq Extension methods,这使得遍历 XML 文档变得容易并取出您想要的值,如在 XlinqExtensionsTests