Windows NT 4.0 Terminal Server Editionは、正式な発表が行なわれる前にはコード名「Hydra」として知られていたシステムです。
製品の位置は、Thinクライアントを実現するためのマイクロソフトから提案されているテクノロジーであり、NCと競合する技術であるWBT(Windows
Base Terminals)を実現するものです。
いままでのWindows NTというオペレーティングシステムは、同時に1つの会話セッションだけを見とめています。これに対して、Terminal
Serverは、同時に複数の会話セッションがあります。
旧来の会話セッションは、session #0 とも呼ばれ、Terminal Serviceというセッションマネージャーが実行されます。これにより以下のような機能が実現されます。
セッションの確立/切断
ライセンスの妥当性の検査
リモートクライアントの接続管理
terminal Serviceが管理するセッションは、Session#1以降のものです。これらを追加セッションといいます。追加セッション毎にWTSクライアントが接続されます。
terminal Serverは、Windows NT4.0 Workstationと同等なものであり、WTSクライアントも同等な機能を利用することが出来ます。
ですから、Windows NT Terminal Server Editionは、マルチユーザーのWindows NT
Workstationであり、その利用端末がWBTを含むWTSクライアントです。
Windows NT 4.0では、Terminal Server Editionとして、NT WorKSAttionやNT Serverと同列の製品として出荷されます。しかし、WindowsNT 5.0以降は、Windows NTの基本機能として統合されます。
こうした処理を実現するために、Windows NTカーネルのメモリ管理機能には、新しい管理概念である「セッションスペース」が導入されました。
今までのWindows NTのメモリ管理概念はは、「ユーザーメモリースペース」、「カーネルメモリースペース」、「ハイパースペース」がありました。プロセスグループは、プロセスをグループ毎にまとめ(プロセスグループIDを共有するという意味)、プロセスグループ毎にカーネルモードのデータを同一の仮想メモリにマッピングします。また、コード部分は全システムで共有されます。
この機能により、メモリの共有可能な部分をすべてのシステムで共有できるので、効率的に複数のWindows NT Workstationを実行させることが出来ます。一般的には、1クライアント10Mbyte程度のメモリー容量で実現できるといわれています。
Windows NT Workstaionと、スレッドスケジューリングも同様な仕様になっています。これは、注意を要する点です。なぜならば、Windows
NT Workstationは、フォアグランド スレッドのプライオリティが、他のスレッドよりもプライオリティが高く、そうしたフォアグランドスレッドが、セッション数だけ稼動するからです。ですから、バックグラウンドで稼動するスレッドは、通常のWindowsNT
Workstationよりも圧迫されてしまうために、処理性能に強く影響を受けやすくなります。
こうした背景から、ミッションクリティカルな業務で利用するフォアグランドでない動作をするサービス、たとえばsql Serverなどは、別なサーバーとして動作させることが推奨されています。
terminal Server Editionで稼動するアプリケーションは、1つのマシン上で同時に複数稼動する可能性があるので、いままでのプログラム上の配慮に加えて、以下のような配慮を行なってください。資源を占有しない
以下のようなものを占有しないように配慮してください
CPU
RAM
ディスクアクセス
ネットワークアクセス
WindowsNT上のグローバルなオブジェクト/リソースへのアクセス
特定のハードウェア
terminal Server Editionは、プロセススペースにより、すべてのリソースが複数存在するわけではないので、共有する部分については柄のような配慮が必要です。HKLMを正しく使用する
レジストリのHKLM(HKEY_LOCAL_MACHINE)は、全ユーザーで共通に使用されるレジストリ・キーです。ですから、この使用を誤ると、全ユーザに対して影響が出ます。これに対して、HKCU(HKEY_CURRENT_USER)は、利用しているユーザーに対してだけ影響があります。ローカルなデータをグローバルなところに格納しない
プログラムが利用するローカルな情報をグローバルな領域に格納すると、複数のプログラムが動作したときに不都合が発生します。たとえば、動作中のローカルな情報をルートディレクトリなどに格納すると、複数のプログラムが同一のタイミングに動かすと、情報を誤ってオーバーライトしたりすることになってしまいます。ファイルやデータベースはロックして利用する
マルチプログラミング環境になるので、ファイルやデータベースはロックして利用してください。IPアドレスをユーザーの識別に利用しない
同一のマシンを複数のユーザーが利用しますので、IPアドレスはユーザーの識別には利用できません。サーバーは複数のクライアントに対応する
アプリケーションがクライアントとサーバーに分化している場合は、複数のクライアントがサーバーにアクセスする可能性があります。ですから、同一システム内/ネットワーク経由で、サーバーがクライアントを認識する機構を実装している必要があります。ユーザープロフィールによるカストマイズ対応
同時に複数のユーザーが同じにイントールれているソフトウェアを利用するので、カストマイズがユーザープロフィールに対応していないと、他のユーザーの設定まで変更されるということになってしまいます。
バックグラウンドのリソース消費を配慮
通常のWindowsNT Workstationよりも、バックグラウンドがリソース割り当てを受けにくいので、バックグラウンドで動作するソフトウェアについのリソースについて、配慮してください。スレッドの使用率について配慮
複数のプログラムが多くのスレッドを利用すると、Terminal Server全体で、非常に多くのスレッドになってしまうかもしれません。ですから、単一のユーザーではないことを配慮して、不必要にスレッドが多くならないように配慮してください。ネットワーク負荷が低くなるようにする
WTSクライアントは、ネットワークを経由してプレゼンテーションデータの提供を受けます。ですから、以下の点に配慮して、プレゼンテーションデータの転送量が過大にならない様に配慮することが望ましいでしょう。
スプラッシュスクリーンの利用の最小化
アニメーションの利用の最小化
直接ビデオアクセスの最小化
ユーザー入力ルーチンのフォアグランド化
ユーザー入力ルーチンなど、人が応答に過敏になる部分は、フォアグランドで動作するようにしてください。導入が容易になるように配慮
管理の容易さのために、複数のユーザーに対して同時に利用できるように導入できるよう配慮してください。テストされたクラスを利用する
マイクロソフトでは、MFCなど良くテストされたクラスライブラリを出きるだけ使用することを推奨しています。Terminal Serverの認識
必要に応じて、Terminal Serverかの判定をしてソフトウェアを導入します。この判定は、Windows NT 4.0
Service Pack3.0以降からサポートされている、プロダクトスイートコンセプトを利用して行ないます。