【问题标题】:Generating separate "model" classes from a WCF service从 WCF 服务生成单独的“模型”类
【发布时间】:2011-01-22 19:53:40
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: .net wcf model svcutil.exe


    【解决方案1】:

    目前我不知道有任何工具可以支持这一点 - 我很想亲自了解这样的工具,如果它存在的话!

    如果你有自己的循环来攻击它,你可以

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多