2009-10-28 68 views
5

即使在询问之前,我仍觉得这是一个愚蠢的问题,但现在我的大脑工作得并不顺利。我有两个WCF服务“CountryService”和“FloristService”。在WCF服务之间共享DTO对象

现在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; } 

这很好,但如果我使用服务代理生成实用程序ith Visual Stuidos(即添加引用“>”添加服务引用“),然后我创建了两个版本的CountryDTO:BeingFloristService.CountryDTO和CountryService.CountryDTO。

现在我可以想出几种方法来解决这个问题,但其中没有一个看起来是正确的。我想知道这个“正确”的方法是什么,我能用代理生成工具做些什么来让它共享通用的DTO?

干杯,克里斯

回答

5
+0

干杯,正是我之后 – Owen 2009-10-28 13:29:44

+0

第二个想法,这似乎假设服务层和使用层将有权访问与DTO对象相同的.dll现在如果我没有这个,并且我想要svutil生成代理类。但我只希望他们生成一次并在服务中共享? – Owen 2009-10-28 13:32:59

+1

然后,您只需生成一次代理类,然后通过svcutil/r将生成的代理类重新用于代理的后续生成。 – 2009-10-28 13:47:00

0

文章"How to reuse types across service endpoints"建议在客户端手动更新Reference.svcmap包括多个与NamespaceMappings。

或者,svcutil确实允许您在一次指定多个端点并使用/ r(/ reference)和/ n(/ namespace)参数。