初めて WCF サービスを作成しています。サービスとそのすべてのクライアント (少なくとも現時点では) は C# で記述されています。サービスは、渡されたデータに対して多くの入力検証を行う必要があるため、クライアントに無効なデータを示す何らかの方法が必要です。私はフォルトと例外、例外をフォルトにラップすること、そして私をさらに混乱させる多くの矛盾する記事について多くのことを読んできました。このケースを処理する適切な方法は何ですか?
例外を完全に回避し、結果の戻りメッセージをパッケージ化する必要がありますか? 特別なフォールトまたは特別な例外を作成する必要がありますか?それとも、WCF 以外の検証関数の場合のように ArgumentExceptions をスローする必要がありますか?
私が今持っているコード ( MSDNの影響を受ける) は次のとおりです。
[DataContract]
public class ValidationFault
{
[DataMember]
public Dictionary<string, string> Errors { get; private set; }
[DataMember]
public bool Fatal { get; private set; }
[DataMember]
public Guid SeriesIdentifier { get; private set; }
public ValidationFault(Guid id, string argument, string error, bool fatal)
{
SeriesIdentifier = id;
Errors = new Dictionary<string, string> {{argument, error}};
Fatal = fatal;
}
public void AddError(string argument, string error, bool fatal)
{
Errors.Add(argument, error);
Fatal |= fatal;
}
}
メソッドには [FaultContract(typeof(ValidationFault))] があります。それで、これはこれにアプローチする「正しい」方法ですか?