C# Wcf Rest服务-序列化还是手工制作xml?

C# Wcf Rest服务-序列化还是手工制作xml?,c#,xml,wcf,web-services,serialization,C#,Xml,Wcf,Web Services,Serialization,我正在制定一个Xml web服务的计划,让第三方访问客户机的站点,以便他们能够访问客户机的数据 我的问题是关于最佳实践的问题,目前我正在考虑两种不同的策略: 1) 创建一个表示Xml数据的对象模型并序列化它(通过Wcf REST端点显式或隐式地公开数据) 2) 使用XLinq将我的域模型直接转换为手工编制的Xml,并将其作为字符串从服务返回,适当设置响应头 我喜欢(1),因为我让系统生成物理Xml,并且我只在对象模型中工作,但是版本控制成为一个问题,我可能需要对输出进行更好的控制 我喜欢(2),

我正在制定一个Xml web服务的计划,让第三方访问客户机的站点,以便他们能够访问客户机的数据

我的问题是关于最佳实践的问题,目前我正在考虑两种不同的策略:

1) 创建一个表示Xml数据的对象模型并序列化它(通过Wcf REST端点显式或隐式地公开数据)

2) 使用XLinq将我的域模型直接转换为手工编制的Xml,并将其作为字符串从服务返回,适当设置响应头

我喜欢(1),因为我让系统生成物理Xml,并且我只在对象模型中工作,但是版本控制成为一个问题,我可能需要对输出进行更好的控制

我喜欢(2),因为我确实得到了很好的控制,版本控制变得更容易,但我现在正在手工制作Xml,错误的机会越来越大


有什么意见吗?我是否错过了什么东西,让我两全其美?如果我知道“版本化对象模型”的最佳方法,我会直截了当地说(1)——使用不同的名称空间就足够了吗?

我会使用序列化。只要不尝试使用域对象进行序列化,就可以通过DataContractSerializer或XmlSerializer对XML进行细粒度控制。然后,您可以使用类似于“我将使用序列化”的方法在域对象和序列化对象之间映射。只要不尝试使用域对象进行序列化,就可以通过DataContractSerializer或XmlSerializer对XML进行细粒度控制。然后,您可以使用类似

的方法在域对象和序列化对象之间映射。在这种情况下,您对版本控制有何评论?我想如果您的更改是累加的,那就好了,但是您如何使用此模型解释中断更改,并且能够为您的客户提供架构的新修订版?如果更改被打破,您可以做很多事情-最健壮和最简单的是为新版本的服务使用新端点-旧客户与旧客户交谈,新客户与新客户交谈。如果这对您不起作用,那么可能有另一个方法,该方法具有新请求所指向的新操作。最后,您可以将操作映射到一个方法,该方法将消息作为参数,并基于XML名称空间或类似名称空间进行处理(您仍然可以针对自己的适当类型运行序列化程序。主要的是,中断更改将需要两个不同版本的序列化类型谢谢。这更是我感兴趣的序列化类型问题-我正在探索是否需要在不同的命名空间中创建另一个版本的模型以支持根据你刚才所说的,我会..是的,你需要一个新的序列化类型在这种情况下,你对版本控制的主题有什么评论吗?我想如果你的更改是附加的,那就好了,但是你如何解释使用这个模型破坏更改,并且能够向你的客户提供模式的新版本?如果改变正在打破。你可以做很多事情-最健壮和最简单的是为新版本的服务使用一个新端点-旧客户端与旧客户端对话,新客户端与新客户端对话。如果这对你不起作用,那么可能有另一个方法,新请求将执行新操作。最后,你可以d将操作映射到一个方法,该方法将消息作为参数,并基于XML名称空间或类似名称空间进行处理(您仍然可以针对自己的适当类型运行序列化程序。主要的是,中断更改将需要两个不同版本的序列化类型谢谢。这更是我感兴趣的序列化类型问题-我正在探索是否需要在不同的命名空间中创建另一个版本的模型以支持根据你刚才说的,我会……是的,你需要一个新的序列化类型