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

时间:2010-03-02 17:01:07

标签: .net wcf model svcutil.exe

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

我已经阅读了svcutil文档,除非我浏览得太快,否则看起来该工具不支持此行为。

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

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

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

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

1 个答案:

答案 0 :(得分:0)

我不知道有什么工具可以支持这个 - 如果它存在,我很想知道这样的工具!

如果你有自行攻击的周期,你可以

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

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