ホームページ  >  記事  >  バックエンド開発  >  カプセル化された asp.net 検証コード クラス

カプセル化された asp.net 検証コード クラス

高洛峰
高洛峰オリジナル
2017-01-13 14:20:28999ブラウズ

最初の考察は、検証コードのこれらのプロパティを設定できるかどうか (つまり、クラスにカプセル化され、パブリック プロパティとメソッドを公開することで使用されるかどうか、または検証コードが汎用ハンドラーに直接実装されるかどうか) です。出力する)、結果は残念ながら後者です...内部のアルゴリズムは、少なくともアルゴリズムをほとんど理解していない私のような人間にとってはかなり良いと思うので、それをカプセル化して、恥ずかしがらずに独自のクラス ライブラリに組み込むことを考えました ^^

まず、このコードの欠点 (私が考えていること) を分析します。
1. 手続き型プログラミングの場合、フォント サイズ、背景色、その他の詳細の変更など、検証コードのプロパティを変更する場合は、以下を見つける必要があります。汎用処理プログラム内の該当コードを修正してください。ただし、このコードは検証コード文字列の生成と画像の生成を別の方法で分離しており、変更する箇所を見つけやすくしています。
2. この関数を winform プログラムなどの他の場所に適用したい場合、このコードはコンポーネント (dll) の形式で再利用することはできませんが、コピー、貼り付け、変更することはできます...
3検証コードが生成後に保存されていることがわかりませんでした (- -!)

もちろん、いわゆる欠点は相対的なものです。つまり、じっくり考えて検証コードを設計する時間があればです。はい、確かに比較的優れたクラスを作成できますが、プロジェクトに取り組んでいて、そのプロジェクトが緊急である場合には、そのようなコードは実際には、いわゆるオブジェクト指向のデザイン パターン コードの分離などにより強力です。上はただの雲です~~~

次はこれについての私のレビューです。 コードを変更するには、まずどのような効果が必要かを決定します。つまり、カプセル化した後にどのように使用したいかを決定します。まず、使用するときに、新しい検証コード インスタンスを作成するだけで済み (必要に応じて、検証コードのさまざまな属性を任意に設定できます)、その後、このインスタンスの特定のメソッドを呼び出して文字列を使用できることを願っています。 、ストリーム、ビットマップオブジェクト、バイトをそれぞれ配列形式で取得します(なお、この検証コードクラスには検証コードをコンテキストに保存する機能は含まれていません。個人的には検証コードを生成するのが良いと感じています)検証コードをコンテキストに保存するのは 2 つの異なる関数です。この関数を検証コード クラスに追加する必要はありません。この場合、一般的な処理プログラムでは、まずnewで検証コードを作成し、その検証コードを文字列で取得するメソッドを呼び出して午前と午後に保存するだけの非常にシンプルなコードになります。セッションまたは Cookie に存在するかどうかについては、必要に応じて提供され、検証コード クラスはこれらを気にせず、別のメソッドを呼び出してバイト配列の形式で検証コードを取得します。 context.Response.BinaryWrite() メソッドを通じて出力されます。つまり、一般的な処理プログラムのコードは 3 行だけです。呼び出しコードはおおよそ次のとおりです:

/// <summary> 
/// 获取验证码(一般处理程序入口函数) 
/// </summary> 
/// <param name="context">当前上下文</param> 
public void ProcessRequest(HttpContext context) 
{ 
// 创建验证码 
ValidateCode validateCode = new ValidateCode(); 
// 获取验证码(字符串),写入Session 
context.Session["SomeValidateCode"] = validateCode.GetString(); 
// 输出验证码(图片) 
context.Response.BinaryWrite(validateCode.GetByteArray()); 
}

PS: 私が最初に作業を始めたとき、コードは非常に貧弱に書かれていたことを覚えています (今よりも悪かった)。コードのコピーを入手したときは、それを直接使用していました。コードを修正するかどうかを考えたとき、当時の師匠に教えてもらい、とても感銘を受けました。個人的には、他人のコードを使用するのは問題ないと思います。また、少なくとも自分のコードを壊したいと思うものはあります。他の人ほど優れているわけではありませんが、他の人のコードを盲目的に使用してはなりません。たとえ単純なレイヤーであっても、実際の状況に応じて必要な変更やカプセル化を行うことが最善です。もちろん、繰り返しますが、プロジェクトが緊急である場合は、明らかに時間の無駄です。つまり、何も考えずに、入手したらすぐに使用し、少なくともキーコードまたは全体の構造を確認してください。コードは明確です。

カプセル化された asp.net 検証コード関連の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。