0

私のシステムは 2 つのサイトで構成されており、WCF を使用して相互に通信しています。ときどき、1 つのサイトがそのピアで操作を呼び出したときに例外がスローされることがあります。私は、そのような場合に WCF の FaultContracts を使用する最善の方法を決定しようとしています。

過去のプロジェクトでは、重要な例外階層を作成することに慣れていました。

BaseSystemException
    CustomerServiceException
        CustomerNotFoundException
        BadCustomerNameException
        CustomerAlreadyExistsException
        ...
    OrderServiceException
        OrderNotFoundException
        OrderAlreadyExistsException
        ...

ただし、WCF でこのような階層を実装するとすぐに面倒になります。それぞれの具体的な例外の種類を独自の FaultContract で指定する必要があるからです。現在、両方のサービスが同じシステムの一部であるため、情報や機密性の高いコールスタックなどの漏洩の問題はありません。A がそれに応じて対応できるように、B には例外でできるだけ多くの情報を提供してもらいたいと考えています。実際には、これらの例外の多くは同じ方法 (操作の失敗とユーザーへの通知) で処理されることに注意してください。ただし、例外スキームを設計するときは、すべての例外に対して同一の処理を想定したくありません。

例外の種類ごとに FaultContract を必要としないアプローチを提案できる人はいますか? もっと簡単な方法はありますか?結局のところ、これは内部インターフェースです。例外階層を使用したいという点で、私は理想主義的すぎますか?

4

1 に答える 1

0

代わりにFaultExceptionをスローすることを検討しましたか?これによってWCFサービスが中断されることはないため、クライアントは例外を処理できます。

編集:

例外のタイプを維持したいので、FaultContractsを使用する方法はないと思います。私が提案できる唯一のことは、いくつかの例外を統合することです。

たとえばCustomerNotFoundException、にBadCustomerNameExceptionなる可能性がFailedToFetchCustomerExceptionあり、メッセージはその理由を伝えることができます。

于 2011-03-24T12:46:33.017 に答える