1.4.3 状態非依存

WAMのキー・ポイントの一つは、WAMが状態非依存、つまり状態を保持しないということです。実際、すべてのインターネット・ベースのアプリケーションは状態を保持しません。これはつまり、WAMがプレゼンテーション層から実行された時、これが稼動し(ジョブがサーバー上で開始され)、いくつかの出力(ウェブ・ページ)を作成し、終了する(サーバー上のジョブが終了し、コントロールがブラウザに送り返される)ということです。

このジョブの開始と終了は、どう見ても1つの"トランザクション"です。ユーザーのウェブ"セッション"(つまり、複数のトランザクションにわたるもの)の間維持される必要があるデータは全て、どこかで保持しなくてはいけません。この良い例が、ユーザーがウェブサイトにログオンした時です。ユーザーがログオンしたという事実は、複数のトランザクションにわたって保持される必要があります。なぜなら、アプリケーションには、ユーザーがログオンしている場合のみ実行することができる機能もあるからです。

Windowsもしくはグリーン・スクリーンのアプリケーションでは、これは全て暗黙の事項です。ユーザーのジョブはアクティブな状態でメモリー上に残され、ユーザーの次の動きを待ちます。しかしウェブでは、ユーザーが次に何をするかは誰も分かりません。新しいURLを入力するかもしれませんし、戻るボタンを押したり、ブラウザが閉じられるかもしれません。

Webページに表示されるデータはWebマップを使用してやりとりされます。非表示のデータでさえやりとりされます。ただし、"セッション"データについてはこれが起きてはいけません。これは、アプリケーション・ロジック層にのみ重要なデータで、プレゼンテーション層で起こることに影響を与えないデータだからです。

WAMは、WebマップのForパラメータに*noneという特別な値を、及びWebマップのoptionsパラメータに*persistという値を使用することで、セッションデータに対するこの考え方をサポートしています。ユーザーのログオン状態を保持するためのWebマップは次のようになります。

Webマップの位置に注意してください。グローバルなので、WAM内の全てのWebroutineがこれを採用します。セッションデータのWebマップをこのようにコーディングするのは、とても理にかなっています。そしてこのデータはいつでもマップに出し入れされます。

他にもセッションデータのコーディング時に考慮しなくてはいけないパラメータや設定はありますが、ここでは基本的な考え方を理解しておいてください。詳細については、 「WAM セッション管理」を参照してください。