【问题标题】:Storing classes transmitted over wcf存储通过 wcf 传输的类
【发布时间】:2012-07-30 06:50:09
【问题描述】:

当我使用svcutil 或其他一些代理生成器时,它会在客户端创建适当的类。我想知道存储此类以避免冲突的最佳方法是什么。

  • 在其他一些“通用”项目中并从代理中删除生成的类?
  • 或者只是在服务中使用原始类而在代理中复制这些类?

【问题讨论】:

  • 我不明白你的问题是什么,你能解释得更详细一点吗?您想避免使用生成的类吗?您是否在编译期间遇到冲突,因为您还引用了原始服务器端类所属的程序集?
  • @AndersAbel 是的,我想知道我应该只能在服务器中访问原始文件并使用 svcutil 复制这个类吗?或者提供从客户端和服务器端访问原始类并删除生成的类

标签: c# wcf design-patterns proxy svcutil.exe


【解决方案1】:

有两种方法可以处理服务和数据协定类 WCF 客户端的代码。

  • 使用 svcutil.exe 生成所有内容。不要从您的客户端项目中获得对服务程序集的任何类型的引用。只需使用 svcutil 生成的类即可。
  • 直接引用包含这些类型的程序集。我有时为我的 DTO 类使用单独的程序集,即来自客户端和服务器的引用。使用 svcutil 生成客户端代码时,使用 /reference:<file path> 选项告诉 svcutil 重用现有程序集中的类型,而不是重新生成它们。

如果您引用原始程序集,而不将其与 /reference 一起传递给 svcutil,您最终会遇到一堆冲突。我想这就是发生在你身上的事。

【讨论】:

  • 是的,我知道我现在的问题在哪里。我只是想知道哪种方式“更好”
  • 这取决于您的要求。如果你有例如DTO 中的数据验证代码在客户端也可以使用该功能是一个优势。如果您是客户端上的数据绑定,您可能会从svcutil 免费获得的INotifyPropertyChange 实现中受益。
猜你喜欢
  • 2015-02-13
  • 1970-01-01
  • 2012-04-29
  • 2011-11-22
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多