エラーチェックの体系的な分類と実装パターン
というわけで久しくエントリをアップしていなかったこの blog ですが、最近、複数方面からお叱りの言葉が……; 忙しかったこともあってエントリをサボっていたこともあったのですが、ちょうどいいネタがなかったのも実際のところ。がしかし、先日 2009/9/26(土) に行った、わんくま同盟さんでの勉強会のネタが blog 化するにはちょうどいいだろう、という感じなので、その資料を使いつつ、blog エントリを書いてみることにします。
今回の解説ネタは、更新系業務アプリケーションで求められることになる、エラーチェックの実装パターンを体系的に分類してみる、というものです。ASP.NET や Windows フォームなどには様々なデータ入力検証のフレームワークがあるのですが、名称こそ同じ「データ入力検証」となっていても、データ入力検証に対する考え方は、フレームワークごとにかなり異なっています。そこで、本エントリでは、特に .NET Framework 標準のデータ入力検証機能である、以下の 3 つを横並びにして解説してみて、各データ入力検証にどのような食い違いがあるのかを解説してみたいと思います。
- ASP.NET 検証コントロール
- Silverlight 3, WPF 3 の例外ベースの双方向データバインド
- Windows フォーム 2.0, WPF 3.5 の IDataErrorInfo ベースの双方向データバインド
なお、今回のサンプルコードは以下になります。エントリ中では、キーポイントとなるコード部分についてしか触れませんので、詳細なコードについてはこちらのサンプルコードをご覧ください。
[Agenda]
- Part 1. エラーチェックの体系的な分類方法 エラーチェック(ユーザ入力検証)の意味
正常終了/業務エラー/システムエラーの分類
業務エラーの分類
アーキテクチャから見たエラーチェックの実装場所 - Part 2. 単体入力エラーチェックの実装パターン ① ASP.NET Web フォームの場合
② Silverlight 3, WPF 3 の場合
③ Windows フォーム 2.0, WPF 3.5 の場合
では、順番に解説していきましょう。