2012-03-02 11 views
1

WCF bassicHttpBidingサービスがあります。 私のWeb関数がいくつかのカスタム定義型を返しています。WCFクライアントがサーバーの種類を知る方法

[DataContract] 
public class PcbInfoEntry 
{ 
    [DataMember] 
    public int ReflowPcbId { get; set; } 
    [DataMember] 
    public string PcbId { get; set; } 
} 

しかし、実際にクライアントはクラスの定義を知っていますか? プロキシで何が起こっていますか?

答えて

4

サーバーはWSDL(Web Services Description Language)を公開しています。ブラウザをhttp://example.com/myservice/service.svc?wsdlにするだけで、サービスの完全な定義が表示されます。それが公開するすべての型とメソッドクライアント側プロキシを生成する場合、svcutil.exeはこの情報を使用して、対応するクライアント側プロキシクラスを生成します。

WSDLはSOAP標準です。サービスがどの言語に書き込まれていても、WSDLが公開されていれば、簡単にクライアントプロキシを生成できます。

WCFは、WS-Metadata Exchange標準を実装したMEXエンドポイントを通じてメタデータを公開して、クライアントがそのタイプを検出できるようにすることもできます。

+0

私のWebメソッドによって返されるDTOの記述があります。私のWSDLではそれを見ることができなかったからです。 –

+0

@NightWalkerでは、メインのWSDL内に、http://example.com/myservice/service.svc?wsdl = wsdl0'や「http://example.com/myservice」などの他のページへの参照/リンクがあります/service.svc?xsd = xsd0'などとなります。 –

+0

はい、それは助けます。同じ分野のもう一つの質問。私のWeb関数の1つはDTOを返しますが、それには[DataContract] 属性はありませんが、それでも私はwsdlとそれを使用しているクライアントで見ました。問題はなぜ[DataContract] 属性が必要なのかです。 –

関連する問題