2009-10-28 14 views
5

私はこれが尋ねる前から愚かな質問だと感じますが、私の脳はあまりうまく機能しません。私は2つのWCFサービス "CountryService"と "FloristService"を持っています。WCFサービス間でDTOオブジェクトを共有

今CountryServiceは、次のような方法があります。これまでのすべての良い

bool AddFlorist(FloristDTO florist); 

が、問題がFloristDTOがCountryDTOすなわち

を参照することです:

IList<CountryDTO> GetAllCountries(); 

はさらに、FloristServiceは方法があります

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

これは問題ありませんが、サービスプロキシを使用している場合は、util w (すなわち、視覚スタジオス参照の追加>サービス参照の追加)、CountryDTOの2つのバージョンが作成されます。つまり、FloristService.CountryDTOとCountryService.CountryDTOです。

ここで私はこれを克服するためのいくつかの方法を考えることができますが、それ以外は正しいようです。私はこれに "正しい"アプローチが何であるか疑問に思った。共通のDTOを共有するためにプロキシ生成ツールでできることは何かありますか?あなたはsvcutilで型を再利用することができます

乾杯、クリス

答えて

5
+0

私はちょうど私が何であるか後で – Owen

+0

これはサービス層と消費層の両方がDTOオブジェクトを持つ同じ.dllにアクセスすることを前提としています。私はsvutilがプロキシクラスを生成したい。しかし、私は一度だけそれらを生成し、サービス全体で共有したいですか? – Owen

+1

次に、プロキシクラスを一度生成し、生成されたプロキシクラスをsvcutil/rを介して再利用して、プロキシを後で生成します。 –

0

"How to reuse types across service endpoints"手動で複数とNamespaceMappingsを含めるようにReference.svcmapを更新し、クライアント側で示唆しています。

また、svcutilを使用すると、複数のエンドポイントを一度に指定し、/ r(/ reference)および/ n(/ namespace)パラメータを使用できます。

関連する問題