Request["key"]
vs Request.Params["key"]
vs Request.QueryString["key"]
経験豊富なプログラマーはどの方法を使用しますか?なぜ?
Request.QueryString["key"]
をお勧めします。クエリ文字列のRequest["Key"]
と大きな違いはありませんが、ServerVariables
から値を取得しようとする場合、大きな(より大きな)違いがあります。 Request["Key"]
は、QueryString
で値を探します。nullの場合、Form
、次にCookie
、最後にServerVariables
を探します。
Params
を使用するのが最もコストがかかります。 paramsへの最初の要求は、新しいNameValueCollection
を作成し、QueryString
、Form
、Cookie
、およびServerVariables
のそれぞれをこのコレクションに追加します。 2番目のリクエストでは、Request["Key"]
よりもパフォーマンスが高くなります。
いくつかのキーのパフォーマンスの違いはかなり無視できると述べました。ここで重要なのは、コードが意図を示す必要があることであり、Request.QueryString
を使用すると、意図が何であるかが明確になります。
コードリーダーが正確にデータの取得元を知るのに役立つため、Request.QueryString["key"]
を使用することを好みます。私はRequest.Params["key"]
を使用しない傾向があります。これは、Cookie、クエリ文字列、および他のいくつかのものを参照できるためです。そのため、ユーザーは少し考えなければなりません。誰かがあなたが考えていることを理解する必要がある時間が少ないほど、コードを維持するのが簡単になります。
HttpRequest.Params
またはRequest.Params
はhttprequestからほぼすべて(クエリ文字列、フォーム、Cookie、およびセッション変数)を取得しますが、Request.Querystring
はクエリ文字列のみをプルします...すべては、その時点で何をしているかに依存します。
コレクションは常に明示的に指定します。何らかの理由でオーバーライドを許可する場合は、それぞれに「get」をコーディングし、一方を選択するための階層を示す明確なコードを記述します。 IMO、明確なビジネス上の理由なしに複数のソースから価値を得るのは嫌いです。
親切なお知らせとして、web.configでrequestValidationMode = "4.5"を設定すると、両方のRequest.QueryString [“ key”]およびRequest [“ key”]は、設計として「遅延読み込み」動作を使用します。
ただし、何らかの方法でRequest.Params [“ key”]は4.0の動作として検証をトリガーします。
この奇妙な振る舞いは長い間私を本当に混乱させます。