.net - 从 WCF 服务生成单独的 "model"类

标签 .net wcf model svcutil.exe

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

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

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

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

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

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

最佳答案

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

如果你有自己的周期来攻击这个,你可以

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

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

    关于.net - 从 WCF 服务生成单独的 "model"类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2365022/

    相关文章:

    c# - 是否可以增加 winform 中日历弹出窗口的大小?

    ruby-on-rails - 如何在Rails模型中获取当前用户

    javascript - 如何将模型值传递给 ember.js 中的新路由

    c# - 为什么 C# 编译器不捕获 InvalidCastException

    c# - Web 应用程序仅返回 XML 的最佳方法?

    c# - 在 WCF Rest 中捕获 WebFaultException 的详细信息

    wcf - CaSTLe WCF 设施,对非通用合约使用通用接口(interface)

    mysql - 如何从 Rails 2 中不包含特定项目的多对多关系中选择特定记录?

    c# - IIS 7 配置数据库 : Setting the framework version and the managed pipeline mode programmatically

    c# - 如何确保 WCF 服务不会与数据库并行通信