Windows system >> Windowsの知識 >  >> Windowsチュートリアル合成 >> 窓について >> コードやチュートリアルのASP.Net ViewStateの実装

コードやチュートリアルのASP.Net ViewStateの実装

  
 

ViewStateのは、.NETの状態を保存するための新しい方法は、(新しいボトルに実際に古いワイン)を提案している。我々は、従来のWebプログラムは、いくつかのこのような方法の状態を保存していることを知っている:1、アプリケーションこれは、Webアプリケーションであります寿命アプリケーションに格納されたデータは、グローバルに有効であり、エリアをグローバル保存; Asp.Netでの(又は数十の)数を保持しているアプリケーションプール、アプリケーションインスタンスがあり、すべての要求からなりプールは、要求が完了する前に、要求を処理する例を取り上げ、インスタンスが他の要求を受け入れません。これは、問題を提示し、同時に複数のアプリケーション、つまり、のアプリケーションにアクセスするために存在する複数のスレッドがあるかもしれません可能なので、プロセス内のアプリケーションオブジェクト上のスレッド同期の問題を検討する必要がある場合、ロックおよびロック解除時に削除し、実際にアプリケーションの内部オブジェクトは、それ自体の追加の呼び出し、スレッド・ロックを実装し、他の方法を自動的に起動されます操作が、パフォーマンス上の理由から、直接その中にインデックスまたはさもなければによってまでそして、操作、アプリケーションおよび無自動同期処理スレッドの間に、あなたは次のことを処理するために同様のコードを使用する必要がありますにApplication.Lock();((int型)アプリケーション[" QUOTカウント&;])++; Application.Unlock();何のコール表示のアンロックが存在しない場合はロックを呼び出した後、このリクエストの終了時に、Applicationオブジェクトが自動的にアンロックされ、ことは注目に値するので、デッドロックによる問題を防ぐが、コードの堅牢性のために、完全なコール・ロックそして、変更はすぐにUnlockメソッドを呼び出す必要が完了しています。オブジェクトがグローバルであり、サーバ上に格納され、複数のスレッドアクセス、したがって、アプリケーションのより大きなアクセス内部に格納する必要があり、変更及び以下がグローバルであるがあるため、アプリケーションオブジェクトは、鍵記憶オブジェクトによれば、本質的にハッシュテーブルでありますデータ機能は、カウンタ又はデータベース接続文字列など、の少なくとも大部分を使用します。 2、SessionがAsp.Netの内側に、実際には、セッションを管理するためのStateApplication、ワーカープロセス、デュー・プロセスのセッションがある特別なリクエストを作成し、各要求が時間内に受信され、ワー​​カープロセスは、(サーバの状態と呼ばれています何のSessionIdは、セッションをしない場合は、セッションを取得するためのさまざまな状態のサーバが提供するweb.configファイル)は、それは新しいを作成し、コンテキスト(のHttpContext)にバインドされます;およびAsp差は、サーバーセッションのどのような状態でありますAsp.Net内に存在する種は、3を実装しています1)InProcStateClientManagerは、このセッションを維持する伝統的な方法ですが、そこにいくつかのニュアンスがある2)SqlStateClientManagerこれは、データベースのセッション3を保存する方法です)OutOfProcStateClientManagerこれは、セッションを保存する処理でありますAsp.Netは、ワーカープロセスのセッションを扱う機能を持っており、セッションサーバの状態を保存する方法外部のセッションメカニズムは分離されている、と言ってMSDNによると、次のような利点があります:'メモリはASPのセッション状態ではないので。 NETワーカープロセス、それが可能アプリケーションの障害からの回復を達成。 &Rdquo;'すべての状態のワーカープロセスが一緒に保存されていないので、あなたは、複数のアプリケーションパーティション全体にきれいにし、プロセスをすることができます。このパーティションは大幅に複数のプロセスを持つコンピュータ上のアプリケーションの可用性とスケーラビリティを向上させることができます。 &Rdquo;'あなたが複数のコンピュータ上で複数のワーカープロセスへの応用を分割するために全体で実行できるように、すべての状態のワーカープロセスは、一緒に格納されていないため。 &Rdquo、個人的な意見のAsp.Netセッションメカニズムは、より優れた柔軟性を感じ、内部の実装は、より賢いですが、実際にあるため、テストのあまりをしなかったので、それはとても美しい、パッケージングされないと言うように、アプリケーションはできませんチケット。機会を持って、私はAsp.Netだけで記事を書くの中の深いディスカッションセッションメカニズムになります。

3、クッキーは、MSには改善も、おそらくこの技術を混合し、クライアントの実装の詳細に依存し、これの何も、実際にAsp.NetのAspクッキーの違いはありません言いません。
は、我々の議論今日の焦点であるViewStateは4

; ViewStateは謎ではありません実際には、隠しフィールドですが、それは、サーバーコントロールの状態ごとに保存され、HTMLのIEでソースコードを表示することができ、友人に精通していません、ビューステート" __; QUOT&名前のファイルを検索する文字の混乱をたくさん持っている隠しフィールド、これはページのViewStateのです。

Webプログラムは、人々はしばしば隠しの多くを追加します、時には上記より複雑な機能のページに対処するために、この痛みを伴う経験を有していてもよくなかったし、その後の判断の多くのサーバ側で電流を分析すること状態は、迷惑な書き込みに、コードは醜いで終了し、実際には、ViewStateがまたそれに依存して複数の要求の間で状態を保存することができますサーバー側のコントロールの状態を保存する機能を実現するために、コントロールの我々のシステムを支援することです。さて、ここでご紹介し、今日はこの事の本質の水をテストするのではなく、内側から、ViewStateの使用を検討していません。継承="偽"%@ページ言語="のC#"分離コード=" ViewStateTest.aspx.cs" AutoEventWireup属性="< CsdnTest.ViewStateTest"%>< DOCTYPE:私たちは、最初のテストページを構築しました! HTML PUBLIC" - //W3C //DTD HTML 4.0 //暫定EN">< HTML><ヘッド><タイトル> ViewStateTest< /タイトル><メタ名=" GENERATOR"コンテンツ="マイクロソフトのVisual Studio 7.0"><メタ名=" CODE_LANGUAGE"コンテンツ=" C#"><メタ名=" vs_defaultClientScript"コンテンツ="のJavaScript"><メタ名=" vs_targetSchema"コンテンツ=" HTTP://schemas.microsoft.com/intellisense/ie5">< /HEAD><ボディ><フォームID =" ViewStateTest"メソッド="ポスト"にrunat ="サーバー">< ASP:ボタンID =" btnPostBack" RUNAT ="サーバー"本文="ポストバック"幅=" 85px">< /ASP:ボタン><線; br />< ASP:チェックボックスのID =" chkTest"のRu NAT ="サーバー"本文="これはチェックボックス"ある;>< /ASP:チェックボックス>< /フォーム>< /ボディ>< /HTML>

これはVsであります

ます。private void btnPostBack_Click(オブジェクト送信者、System.EventArgs e)の{:.NETは、サーバー側のボタンやチェックボックス、サーバサイドイベントで、その後、私たちの応答ボタンを含む単純なページを設計しました[1]のResponse.Write("のViewState:" + Request.Params [" __ビューステート"] +"<線; br />"); [2]ストリングdecodeValue = Encoding.UTF8.GetString(変換。 FromBase64String(Request.Params [" __ビューステート"]))。

Copyright © Windowsの知識 All Rights Reserved