2009-10-28 4 views
5

Ich fühle, dass dies eine dumme Frage ist, noch bevor ich frage, aber mein Gehirn funktioniert gerade nicht so gut. Ich habe zwei WCF-Dienste "CountryService" und "FloristService".DTO-Objekte zwischen WCF-Diensten teilen

Jetzt CountryService die folgende Methode hat:

IList<CountryDTO> GetAllCountries(); 

Zusätzlich hat FloristService eine Methode:

bool AddFlorist(FloristDTO florist); 

Alle gut so weit, aber das Problem ist, dass die FloristDTO verweist auf eine CountryDTO dh

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

Das ist in Ordnung, aber wenn ich den Service-Proxy-Generator util w ites Visual Stuidos (d.h. Add Reference> Add Service Reference), dann erhalte ich zwei Versionen von CountryDTO, nämlichFloristService.CountryDTO und CountryService.CountryDTO.

Jetzt kann ich mir ein paar Wege vorstellen, um dies zu überwinden, aber nonw von ihnen scheinen richtig. Ich fragte mich, was der "richtige" Ansatz dazu wäre. Gibt es irgendetwas, das ich mit dem Proxy-Generierungs-Tool machen kann, um es mit gemeinsamen DTOs zu teilen?

Cheers, Chris

Antwort

5
+0

Prost, genau das, was ich bin – Owen

+0

Zweite Gedanken, dies scheint davon auszugehen, dass sowohl die Service-Schicht und die konsumierende Schicht Zugriff auf die gleiche .dll mit den DTO-Objekte haben. Nun, was, wenn ich dies nicht habe, und Ich WILL die svutil die Proxy-Klassen generieren. Aber ich möchte nur, dass sie einmal generiert und über die Dienste verteilt werden? – Owen

+1

Dann generieren Sie die Proxy-Klassen einmal und verwenden die generierten Proxy-Klassen über svcutil/r für die nachfolgende Generierung Ihres Proxy. –

0

Artikel "How to reuse types across service endpoints" auf Client-Seite schlägt manuell Reference.svcmap aktualisieren mehrere und NamespaceMappings aufzunehmen.

Alternativ können Sie mit svcutil mehrere Endpunkte gleichzeitig angeben und die Parameter/r (/ reference) und/n (/ namespace) verwenden.

Verwandte Themen