从 WCF 服务生成单独的“模型”类

Aar*_*ght 5 .net wcf model svcutil.exe

我希望能够为 WCF Web 服务中的每个数据协定或 XML 类型生成单独的类(每个文件一个类)。

我已经阅读了svcutil文档,除非我浏览的太快,否则该工具似乎不支持这种行为。

我想这样做的原因很简单 - 我试图将服务的“模型”与服务本身隔离开来。有几个组件依赖于服务的类型,但不关心服务级操作的细节,例如加载/保存。我不喜欢这些组件需要依赖于包含各种调用和绑定逻辑的同一个程序集的事实。

我知道svcutil(和 VS 集成)可以配置为在另一个程序集中使用预先存在的模型类。不过,这是一个先有鸡还是先有蛋的问题;我真的不想手动编写 50 个(至少现在)与生成的类几乎相同的类。当然,我必须添加DataContract带有命名空间和其他 WCF 属性的所有属性......这很痛苦。

我的最终目标是真正拥有一个完全独立于服务模型的表示/域模型,但我还没有真正的周期。我认为生成一个最终可以塑造成真正的演示模型的人造模型将是开始这条道路的一个很好、快速和简单的方法。之后,我可以配置服务引用以使用单独生成的代理类并开始充实一些更强大的东西。

这能做到吗?是否有选项svcutil可以让它为每个文件生成一个类?或者有没有其他工具可以做到这一点?

mar*_*c_s 0

我目前还不知道有任何工具可以支持这一点 - 我自己很想知道这样的工具(如果存在的话)!

如果你有自己的周期来解决这个问题,你可以

  • 从 URL 获取服务的 WSDL(或从文件加载)
  • 解析出嵌入 XML 模式中定义的 XML 类
  • 使用 T4 模板或其他机制从这些 XML 模式生成 C# 代码

这绝对是可能的 - 甚至可能并不那么难 - 但谁有时间去做呢?:-)