GNU/Linux >> Linux の 問題 >  >> Linux

Web開発のステートレスおよびステートフルモデルとは何ですか

ターゲットオーディエンス

ウェブサイトのプログラミングに不慣れな開発者、またはサイトデザインのステートレスモデルとステートフルモデルのレビューを希望する開発者。

はじめに

ソフトウェアアプリケーションの動作のステートフルモデルとステートレスモデルは、ユーザーのWebブラウザがWebサーバーと通信する方法を定義します。 Webの初期の頃、サイトはステートレスである傾向がありました。ページは静的であり、ユーザーごとに異なりませんでした。その後、Webサイトには、各ユーザーに固有の情報を含むページを配信するステートフルモデルが含まれていました。ステートフルWebアプリケーションは、オンライン小売業者や銀行などの最新のeコマースに不可欠ですが、効果的に機能するには高度なプログラミングが必要です。

ステートレスモデル

ステートレスモデルの純粋な形式では、クライアントプログラムがアプリケーションサーバーに要求を行い、アプリケーションサーバーがデータをクライアントに送り返します。サーバーはすべてのクライアント接続を同等に扱い、以前の要求またはセッションからの情報を保存しません。単純な静的Webページを提供するWebサイトは、ステートレスモデルの良い例です。サーバーは、ホストするページのリクエストを受信し、ページデータをリクエストしているブラウザに送信します。これは、食事をする短期間の料理人のようです。

ステートフルモデル

アプリケーションがステートフルモードで動作している場合、サーバーはユーザーが誰であるか、およびある画面から次の画面までユーザーが何をしているかを追跡します。ユーザーの行動の状態を維持することは、有意義で継続的なセッションを行うための基本です。これは通常、ユーザーIDとパスワードを使用したログインで始まり、セッションの開始状態を確立します。ユーザーがサイト内を移動すると、状態が変化する場合があります。サーバーは、ログアウトするまで、セッション全体を通じてユーザーの情報の状態を維持します。

状態をステートレスにする

多くのWebサイトは、静的HTMLファイルにあまり依存せずに、動的にページを生成します。ユーザーのブラウザはウェブサーバーからページデータを受け取り、静的ページと同じようにレンダリングします。さらに、動的ページを使用すると、サーバーはユーザーを「記憶」し、ページからページへの継続性を作成できます。継続性を機能させるために、開発者はステートレスモデルにステートフル機能を追加して、いくつかのトリックを採用できます。たとえば、ユーザーが銀行のWebサイトにログインすると、サーバーはこのセッションに関する情報を作成します。情報はサーバーのメモリに保存されている場合がありますが、ブラウザに保存されている場合もあります。サーバーは、ユーザーのIPアドレスなど、セッションに関する一意の情報を記録することにより、セッションを追跡します。さらに、開発者は、サーバー上のプログラムによって使用される追加のサーバー側変数を作成できます。これらの変数は、セッションがアクティブである限りそのまま残り、ログアウトまたはセッションの有効期限が切れると消滅します。

ブラウザ側のデータ

ブラウザにセッションデータを保持するためのいくつかの異なるオプションがあります。 1つはcookie 、特殊なタイプのブラウザトークン。 Webサーバーは、Cookieを作成してユーザーのブラウザに保存し、セッション中にCookieを照会できるようにする場合があります。ブラウザはこれらのCookieを保存し、サーバーの要求に応じてそれらを返します。 Cookieは、オプションでセッションとともに期限切れになるか、ほぼ永続的に存続する可能性があります。ただし、それらが残っている場合は、どのサイトでもデータを読み取ることができるため、ユーザーが他の方法では共有できない可能性のある情報が明らかになる可能性があります。多くの企業がCookieの使用から無差別かつ無許可のデータを収集することで、多くのインターネットユーザーからの不信感が生まれています。次に、多くのユーザーは、Cookieをブロックするようにブラウザを設定し、正当な目的でCookieを利用しにくくすることで対応しています。

Cookieに加えて、次の例のように、URLに変数を入れて疑問符を付けることで、セッションデータをサーバーに伝達できます。

http://mysite.net/anypage.php?userID=54321&orderID=51926

最初の変数は疑問符で区切られ、後続の変数はアンパサンドを使用することに注意してください。

多くのサイトは、URLを使用してクライアントからサーバーにデータを渡します。 1つの欠点は、URLデータが誰にでも表示されることです。場合によっては、URLデータを悪用して不正な情報を取得したり、サイトのセキュリティを破壊したりする可能性があります。また、インターネットトラフィックを監視するハッカーは、URLデータを簡単に傍受できます。ただし、暗号化またはハッシュ化された形式でURLデータを渡すことで、URLデータを不明瞭にすることができ、セキュリティが向上します。

サーバーの負荷

ステートレスモードを使用するWebサイトを実行する場合、クラウドサーバーには比較的簡単なジョブがあり、ユーザーのデータを保存することなくページを提供します。ステートフルサイトには、ユーザーごとに追加のメモリオーバーヘッドがあり、基本的なセッションデータに加えて、アプリケーションに必要なユーザー応答やその他のデータを格納するために必要です。何千もの同時セッションを処理するサイトの場合、追加のメモリ要件が追加されます。主に静的ページに依存するステートレスサイトは、サーバーのCPUでも簡単です。対照的に、ステートフルサイトは、動的なプログラム生成コンテンツに大きく依存しており、セッションごとにはるかに多くのCPU馬力を必要とします。精通した運用スタッフは、サーバーのメモリとCPUのパフォーマンスデータを注意深く監視し、サイトの応答性に影響を与える可能性のあるボトルネックを探します。

結論

現代のインターネットでは、訪問者のそのサイトとのセッションからのデータを追跡することに依存するコンテンツが増えているため、完全にステートレスなWebサイトの使用は制限されています。顧客を「知っている」動的なWebサイトを作成するには、Web開発者は、ステートフルモードとステートレスモードの違いと、特定のページまたはページ要素に関連する各アプローチの長所と短所を念頭に置く必要があります。

Atlantic.netは、VPSホスティングと、ホスティングパッケージにビジネスに不可欠なマネージドサービスのレイヤーを含むマネージドホスティングサービスを提供します。詳細については、今すぐお問い合わせください。

VPSホスティングサービスと仮想プライベートサーバーの詳細をご覧ください。



Linux
  1. Nuclide –モバイルおよびWeb開発用のオープンIDE

  2. VPSとクラウドサーバーで何ができますか?

  3. システムディスクとデータディスクに関するFAQ

  1. Webサーバーとは何ですか?Webサーバーはどのように機能しますか?

  2. 分散型WebおよびP2Pネットワーキングの説明

  3. NTP分散とは何ですか? また、それを制御するにはどうすればよいですか?

  1. インテルSGXとは何ですか?メリットは何ですか?

  2. LinuxでNGINXWebサーバーを強化および保護する方法

  3. Apacheとは何ですか? ApacheWebサーバーの詳細な概要