サービス間でビジネス ルールをやり取りするためにメッセージと障害の例外を使用する方法について質問を投稿しました。
この例外をネットワーク経由でスローするためにオーバーヘッドが発生するという印象を受けましたが、シリアル化および逆シリアル化されるのは単なるメッセージであることを考えると、それらは実際にはまったく同じものでした。
しかし、これにより、一般的に例外をスローすること、またはより具体的には FaultExceptions をスローすることについて考えるようになりました。
今、私のサービス内で、私が使用する場合
throw new FaultException
「あなたのアカウントはアクティブ化されていません」のような単純なビジネス ルールを伝えるために、これによりどのようなオーバーヘッドが発生しますか? .NET で通常の例外をスローするのと同じオーバーヘッドですか? または、WCF サービスは、フォールト コントラクトを使用してこれらをより効率的に処理しますか。
したがって、私のユーザーの例では、これがサービスメソッドを記述するための最適な/推奨される方法です
オプション a
public void AuthenticateUser()
{
throw new FaultException("Your account has not been activated");
}
オプションb
public AutheticateDto AutheticateUser()
{
return new AutheticateDto() {
Success = false,
Message = "Your account has not been activated"};
}