2012-02-13 10 views
0

Webサービスを使用するクライアントに対してWCFサービスを作成すると、正確に何を返すべきかについて議論しました。通常、私はカスタムDTOを返し、DTOにはSuccess(bool)というプロパティがあり、Successがfalseの場合にチェックできるエラーのための2つのプロパティ文字列もあります。Failのサービスメソッドから返されるタイプ

しかし、x型のDTOを返すので、メソッド呼び出しを行うためにクライアントはそのDTO型を知っている必要があります。

私はオブジェクトを返すことを望んでいることを知っています。なぜなら、フラグの成功を含めることができ、失敗した場合は常に情報を提供したいからです。しかし、私はインターフェイスのいくつかのタイプを返す必要がありますか?

サービスがANYの.netクライアントアプリケーションによって消費されるようにするには、何が最善のものかわかりません。

+0

オブジェクトにプロパティを追加して、単にプロセスが成功したかどうかを確認するのはなぜですか? WCFフレームワークに組み込まれたエラー処理、WCFサービスのMSDNフォルト処理... http://msdn.microsoft.com/en-us/library/ee942778.aspx – Lloyd

+0

私はその目的のためにDTOを使用しています。 Successプロパティがtrueの場合、そのDTOは操作可能なデータ型を表します。そうでない場合は、成功フラグがfalseの場合、このDTOにもErrorプロパティがあるため、同じ型を使用してエラーをチェックできます。 – PositiveGuy

+0

これで、Fault Handlingを使用したい場合、WCFサービスを非.NETクライアントが使用できないと仮定します。私は、任意の.netアプリケーションのエンドポイントになる可能性のあるサービスを作成したり、Javaなどの外部のクライアントにサービスを提供したいと考えていました。私はちょうど世界で実際に使用できるより一般的な型を返すことを望んでいました...しかし、おそらくWCFは.NETクライアントによってのみ使用できますか? – PositiveGuy

答えて

1

呼び出し元が処理する必要があるタイプのサーバー側エラーがある場合は、SOAPエラーメッセージにエラーをラップする必要があります。

これはエラー情報を呼び出し元に戻すための標準的かつ意図された方法です。

成功/失敗フラグを渡すことは、消費者に応答オブジェクトを問い合わせて強制的に障害が発生したかどうかを知ってもらうために、一種の反パターンです。

WCFでは、サービス操作で例外をスローすると、WCFによって自動的にSOAPフォールトラッパーが作成されます。これにより、呼び出し元に例外の詳細を戻す相互運用可能な方法が提供されます。

1

クライアントが.NETアプリケーションでもある場合は、例外がスローされている可能性があります。

+0

クライアントが.NETアプリケーションでない場合はどうなりますか? – PositiveGuy

+0

カスタムエラーやエラーコードを呼び出し元に返す場合はどうすればよいですか? – PositiveGuy

+0

1.クライアントが.netでない場合、WCF shuoldはSOAP障害メッセージ(@hughのように)で例外をラップします。 2.カスタムエラーが必要な場合は、独自のExceptionクラスを作成するか、例外のDataオブジェクトに値を設定します。 –

関連する問題