【问题标题】:Share DTO objects between WCF services在 WCF 服务之间共享 DTO 对象
【发布时间】:2009-10-28 13:24:09
【问题描述】:

我什至在问之前就觉得这是一个愚蠢的问题,但我的大脑现在运转得不太好。我有两个 WCF 服务“CountryService”和“FloristService”。

现在 CountryService 有以下方法:

IList<CountryDTO> GetAllCountries();

另外,FloristService 有一个方法:

bool AddFlorist(FloristDTO florist);

到目前为止一切顺利,但问题是 FloristDTO 引用了 CountryDTO,即

    public  string Address1 { get; set; }
    public  string Address2 { get; set; }
    public  string Address3 { get; set; }
    public  string City { get; set; }
    public  string Postcode { get; set; }
    public  CountryDTO Country { get; set; }
    public  string Name { get; set; }

这很好,但是如果我将服务代理生成工具与 Visual Stuidos 一起使用(即添加参考 > 添加服务参考),那么我会创建两个版本的 CountryDTO,即 FloristService.CountryDTO 和 CountryService.CountryDTO。

现在我可以想出一些方法来克服这个问题,但似乎没有一个是正确的。我想知道“正确”的方法是什么,我可以用代理生成工具做些什么来让它共享常见的 DTO?

干杯,克里斯

【问题讨论】:

    标签: wcf dto


    【解决方案1】:

    【讨论】:

    • 第二个想法,这似乎假设服务层和消费层都可以访问包含 DTO 对象的相同 .dll。现在如果我没有这个,我想要svutil 生成代理类。但我只希望它们生成一次并在服务之间共享?
    • 然后您生成一次代理类并通过 svcutil /r 重用生成的代理类以用于后续生成代理。
    【解决方案2】:

    Article "How to reuse types across service endpoints" 建议在客户端手动更新 Reference.svcmap 以包含多个和 NamespaceMappings。

    另外,svcutil 允许您一次指定多个端点并利用 /r(/reference) 和 /n(/namespace) 参数。

    【讨论】:

      猜你喜欢
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多