MANDALA アプリの IIS 版

アプリテック株式会社

ここでは MANDALA アプリの IIS 版に関するご説明をいたします。 なお、MANDALA アプリの IIS 版を Windows Azure で動作させる方法については、このページをご覧になった後に、別ページ「MANDALA アプリを Windows Azure 上で動かす」をご参照ください。

以下では、MANDALA アプリの IIS 版に関する詳細を次の順にご説明いたします。

◆ サンプルアプリのセットアップ

以下からファイル (3 MB ほど) をダウンロードして、解凍してください。

http://www.applitech.co.jp/download/IISHost.zip

このファイルを解凍すると、フォルダ IISHost が現れますから、これを C:\ に配置してください。つまり C:\IISHost とします。

C:\IISHost の配下には、次の二つのフォルダがあり、それぞれ括弧内に示す二つのソリューション (セントラル側のソリューションおよびローカル側のソリューション) があります。

IIS の説明だけでは分かりにくいので、従来からの Remoting を用いた形態と比較しながらご説明いたします。

Jutyu2 は、Remoting を用いた形態であり、Jutyu2IIS は、IIS を用いた形態 (MANDALA アプリの IIS 版) です。これらのそれぞれを詳しくご説明いたします。

◆ Remoting を用いた Jutyu2 (Jutyu2Cnt.sln および Jutyu2Lcl.sln)

これは、Remoting を用いた CentralMain というサーバアプリケーションでホストした形態です。すなわち、セントラル側のソリューション Jutyu2Cnt.sln およびローカル側のソリューション Jutyu2Lcl.sln の二つから構成されたツーピースアプリケーションであり、おなじみの方々も多いことでしょう。

まず、セントラル側の Jutyu2Cnt.sln を動作させると、コマンドプロンプト画面が登場して、CentralMain というサーバアプリケーション (ホスティングシステム) が動作していることを示します。

コマンドプロンプト画面には、以下のメッセージが出ますが、そこに示されたような設定になっています。

http://localhost:8080/REMOTING で待ち受けます。

このメッセージの意味は、1台のパソコンによる折り返しテスト用の IP アドレス 127.0.0.1 (localhost) のポート 8080 によって、ローカル側からのメッセージを待ち受けます、ということです。

この状態で、ローカル側のソリューションとして位置付けられている Jutyu2Lcl.sln を動作させると、MANDALA アプリ「受注計上」がセントラル側と通信をしながら動作することになります。

ローカル側の MANDALA アプリ「受注計上」を終了させてみると、「受注計上」画面は消えますが、セントラル側のコマンドプロンプト画面は残っていますし、セントラル側の Jutyu2Cnt.sln は、実行中のままです。

そこで、再度、Jutyu2Lcl.sln を動作させると、また MANDALA アプリ「受注計上」が現れます。

さらに、Jutyu2Lcl.sln のソリューションエクスプローラを表示して、プロジェクト Jutyu2Lcl を右クリックして、[デバッグ] - [新しいインスタンスを開始] をクリックする操作をすると、MANDALA アプリ「受注計上」の二つ目の画面が現れます。これは、複数の (この場合は二つの) アプリケーションのインスタンスが動作している状態です。

これらのすべて (この場合は二つ) を終了させると、Jutyu2Lcl.sln が終了することになりますが、それまでは実行中のままです。ですから、二つとも終了させてください。

これで Jutyu2IIS.sln は、実行中でなくなりますが、Jutyu2Cnt.sln の方は、実行中のまま、ローカル側からのメッセージを待ち続けます。

新しいインスタンスを開始する操作の説明画像J

Jutyu2Cnt.sln を終了させるには、コマンドプロンプト画面に Exit というコマンドを入力してください。



ここで、設定を変えて、IP アドレス 127.0.0.1 のポート 80 を使うことにしてみましょう。

セントラル側の設定を変えるには、Jutyu2Cnt.sln のプロジェクト CentralMain のモジュール CentralMain10.vb の中の MyURI の設定に関する文字列を以下のようにします。

"http://localhost:8080/REMOTING"

"http://127.0.0.1:80/REMOTING"

ローカル側の設定を変えるには、Jutyu2Lcl.sln のプロジェクト Jutyu2Lcl のフォルダ Customize の中のモジュール app.config の中の CentralServerURL の設定に関する文字列を以下のようにします。

"http://localhost:8080/REMOTING"

"http://127.0.0.1:80/REMOTING"

なお、127.0.0.1 と localhost は、同じ IP アドレスですので、どちらを指定してもかまいませんし、どちらでも同じ結果になります。

このように設定を変更して、Jutyu2Cnt.sln および Jutyu2Lcl.sln の順に動かしてみましょう。ポート番号が http 標準の 80 に変更されて動作することになります。

ひょっとすると、Jutyu2Cnt.sln のモジュール CentralMain10.vb の中で Stop してしまうかもしれません。この原因として最も可能性が高いのは、IIS がポート番号 80 の http メッセージを受け取るように待ち受けているので、IIS の動作を止めるなどしないと、ポート番号 80 を使うことができないということです。

このことから、http を用いる Remoting 機能を使うテストを行うときには、標準のポート番号 80 (IIS によって既に使われているポート番号) ではなく、(IIS に使われていないポート番号) 8080 などを用いるのがよいでしょう。


◆ IIS を用いた Jutyu2IIS (Jutyu2IIS.sln および Jutyu2IISLcl.sln)

これは、ASP.NET 開発サーバーという IIS のエミュレータ (デバッグ用) でホストした形態です。すなわち、セントラル側のソリューション Jutyu2IIS.sln およびローカル側のソリューション Jutyu2IISLcl.sln の二つから構成されたツーピースアプリケーションです。

ここでは、まずこの ASP.NET 開発サーバーを用いてデバッグする方法について述べます。なお、ASP.NET 開発サーバーという IIS のエミュレータではなく、本物の IIS を用いる方法については、後でご説明することにします。

まず、セントラル側の Jutyu2IIS.sln を動作させると、タスクバーにASP.NET 開発サーバーが現れます。この ASP.NET 開発サーバーを右クリックして、[詳細表示] をクリックすると、開発サーバーのダイアログボックスが登場して、URL、ポート、仮想パス、物理パスの四つの情報が表示されます。この IIS エミュレータのダイアログボックスは、Remoting の場合のコマンドプロンプト画面に相当するものです。

IIS エミュレータのダイアログボックス画像

この待ち受け状態で、ローカル側のソリューションとして位置付けられている Jutyu2IISLcl.sln を動作させると、MANDALA アプリ「受注計上」がセントラル側と通信をしながら動作することになります。

ローカル側の MANDALA アプリ「受注計上」を終了させてみると、「受注計上」画面は消えますが、セントラル側のダイアログボックスは残っていますし、セントラル側の Jutyu2IIS.sln は、実行中のままです。

そこで、再度、Jutyu2IISLcl.sln を動作させると、また MANDALA アプリ「受注計上」が現れます。

さらに、Jutyu2IISLcl.sln のソリューションエクスプローラを表示して、プロジェクト Jutyu2Lcl を右クリックして、[デバッグ] - [新しいインスタンスを開始] をクリックする操作をすると、MANDALA アプリ「受注計上」の二つ目の画面が現れます。これは、複数の (この場合は二つの) アプリケーションのインスタンスが動作している状態です。

これらのすべて (この場合は二つ) を終了させると、Jutyu2IISLcl.sln が終了することになりますが、それまでは実行中のままです。ですから、二つとも終了させてください。

これで Jutyu2IISLcl.sln は、実行中でなくなりますが、Jutyu2IIS.sln の方は、実行中のまま、ローカル側からのメッセージを待ち続けます。

Jutyu2IIS.sln を終了させるには、ダイアログボックスのボタン「中止」をクリックしてください。

このように、IIS エミュレータの場合も Remoting の場合と同様に動作します。違いは、セントラル側がコマンドプロンプト画面ではなく、IIS エミュレータのダイアログボックスになる点だけだと言ってよいでしょう。

◆ Jutyu2 と Jutyu2IIS のプログラムの違い

Remoting を用いた Jutyu2 と IIS でホストする Jutyu2IIS のプログラムの違いは、わずかです。以下にはこれらの違いの全てを、セントラル側とローカル側に分けて説明します。

違いは、ローカル・セントラル間の通信手段や通信の宛先やホスティングの部分だけで、アプリケーション部分には違いがありません。

◇ セントラル側の Jutyu2Cnt.sln と Jutyu2IIS.sln の違い

Jutyu2Cnt.sln の中には、以下の三つのプロジェクトが含まれています。

Jutyu2IIS.sln の中には、以下の一つの Web サイトと二つのプロジェクトが含まれています。

ここには、CentralWeb という名前の Web サイトというものがありますが、Web サイトはプロジェクトと似たようなものであり、CentralWeb はセントラル側のホスティングシステムを象徴するものだと捉えてください。

VS2008 には、ソリューションにプロジェクトを追加する操作がありますが、これと同様に「ソリューションに Web サイトを追加する」操作があります。この操作によって、Web サイトを追加したものが CentralWeb です。追加する Web サイトには、いくつかの種類がありますが、ここでは ASP.NET の Web サイトを追加しています。

CentralWeb という ASP.NET の Web サイトを追加すると、web.config というファイルが Web サイト内に作られます。

web.config の中身を見ていただくと分かりますが、この Web サイトの構成情報が XML 形式で表現されています。最初に作られたままの web.config ですと、ASP.NET の Web サイトを表わすものなので、これを修正してMANDALA アプリをホストする Web サイトに変えました。その変更箇所の先頭には、MANDALA.net という文字列を含むコメントを入れてあります。

修正箇所は、3箇所あり、「MANDALA.net アプリケーション 動作設定」に関するものが1箇所と、「httpHandler の登録」に関するものが2箇所です。後者は IIS が受け取った http 通信のメッセージのうち AppRequest.appmsg などを MANDALA が受け取ることができるようにするための修正です。

それから、VS2008 によって CentralWeb のプロパティページを見ていただくと分かりますが、参照設定として、プロジェクト Jutyu2Cnt および JutyuSerializables を含めました。この他、開始オプションの開始動作として「ページを開かずにアプリケーションからの要求を待つ」を選択しました。

CentralWeb のプロパティページではなく、VS2008 によって CentralWeb のプロパティを見ていただくと分かりますが、動的ポートの使用を False にして、ポート番号を 8080 に設定してあります。

以上のようにして、CentralWeb という ASP.NET の Web サイトをつくり、CentralMain の役割であったホスティングを代行するようにしたものが、Jutyu2IIS.sln です。

このようにホスティングの部分は違っていますが、アプリケーション部分には違いがありません。

◇ ローカル側の Jutyu2Lcl.sln と Jutyu2IISLcl.sln の違い

Jutyu2Lcl.sln は、Remoting 機能を用いてローカル・セントラル間の通信を行うように設定されていますが、これを変更して http を用いた直接通信 (HttpDirect) に変えるために Jutyu2IISLcl.sln の条件付きコンパイル定数の指定を以下のように変えてあります。

LocalOrOp=True

LocalOrOp=True, HttpDirect=True

それから、app.config の設定を変更しています。すなわち、Jutyu2IISLcl.sln のプロジェクト Jutyu2Lcl のフォルダ Customize の中のモジュール app.config の中の CentralServerURL の設定に関する文字列を以下のようにしました。

"http://localhost:8080/REMOTING"

"http://localhost:8080/CentralWeb/AppRequest.appmsg"

このように通信手段や通信の宛先の部分は違っていますが、アプリケーション部分には違いがありません。

◆ IIS のエミュレータではなく IIS 7.0 そのものを用いての動作

デバッグ用に、ASP.NET 開発サーバーという IIS のエミュレータを使う方法は、既にご説明してありますので、ここでは本物の IIS 7.0を用いる方法をご説明します。

◇ IIS 7.0 の有効化

IIS 7.0 を用いるには、まず最初に Vista または Windows 7 に含まれている IIS 7.0 を有効化することが必要です。

[コントロールパネル] - [プログラム] - [Windows 機能の有効化または無効化] の操作を行い。以下の図のように IIS の機能に関するチェックボックスにチェックを入れてください。

IIS 7.0 の有効化 説明画像

◇ IIS マネージャ

上記のようにして IIS を有効化すると、IIS マネージャ (インターネット インフォメーイション サービス マネージャ) が使えるようになりますから、以下の操作でこれを起動します。

[スタート] - [すべてのプログラム] - [管理ツール] - [インターネット インフォメーイション サービス (IIS) マネージャ]


[すべてのプログラム] の中に [管理ツール] が見当たらない場合は、以下の操作をしてください。

[スタート] ボタンを右クリックして、[プロパティ] - [カスタマイズ] の操作をして、システム管理ツールを [メニューに表示する] という設定にする。


◇ IIS マネージャの操作

IIS マネージャには、左側、中央、右側の三カ所に表示域 (ペイン) があり、これらをそれぞれ「接続マネージャとツリー」,「ワークスペース」,「操作ウィンドウ」と呼びます。

IIS マネージャ画像

「接続マネージャとツリー」の先頭から、(エクスプローラのフォルダの階層をたどるような操作によって) 階層を下にたどっていくと、以下が現れます。

コンピュータ名
アプリケーション プール
サイト
Default Web Site

「接続マネージャとツリー」の先頭には、コンピュータ名が表示されています。これをクリックして「操作ウィンドウ」を見ると、[サーバーの管理] という区画があり、サーバーの開始、停止、再起動の操作が、ここでできることが分かります。

IIS 7.0 が動作しているかどうかは、インターネットエクスプローラで以下の URL の内容を表示して、ようこその画面が現れることで確認できます。

http://localhost/

IIS7 オープニングページ 画像

◇ IIS 7.0の設定

Jutyu2IIS を動作させるためには、Jutyu2IIS のセントラル側を IIS 7.0 に登録することが必要です。

IIS マネージャの「接続マネージャとツリー」の中の [Default Web Site] を右クリックして、[アプリケーションの追加] をクリックしてください。そして、ダイアログボックスアプリケーションの追加を以下のように設定してください。

アプリケーションの追加ウィンドウ画像

エリアスとして、例えばここでは Jutyu2 を指定します。これはロカール側からセントラル側への目指す接続先として使われる URL の一部になります。

アプリケーションプールとしては、DefaultAppPool を指定します。

物理パスとしては、セントラルプロジェクト
Jutyu2IIS.sln の中の Web サイト のフォルダを指定します。このフォルダ配下のフォルダ Bin にはセントラル側のプログラムがあるものとみなして、IIS は動作することになります。

これで、IIS 7.0 の設定は完了です。

◇ セントラル側の Jutyu2IIS.sln の設定

VS2008 によって CentralWeb のプロパティページを開いて、開始オプションのサーバーを次のように「カスタムサーバーを使用する」に変更してください。こうしないと誤操作で ASP.NET 開発サーバーが起動されてしまうことがあるので、こうすることをお勧めいたします。

Webサイト プロパティページ画像

このように設定したら VS2008 によってソリューションのビルドを行ってください。IIS 7.0 から呼び出されるのは、アプリケーションの追加で指定したフォルダ (物理パス)

C:\IISHost\Jutyu2IIS\Jutyu2\CentralWeb

配下の Bin フォルダの中にある以下の dll です。

したがって、ソリューションのビルドを行うことが必要です。ビルドを行ったら、Jutyu2IIS.sln はその役割を果たしたので、終了させてかまいません。

◇ ローカル側の Jutyu2IISLcl.sln の設定

Jutyu2IISLcl.sln のプロジェクト Jutyu2Lcl のフォルダ Customize の中のモジュール app.config の中の CentralServerURL の設定を変更して、サーバー側の宛先を次のように変更してください。先にエイリアスとして指定した Jutyu2 が通信先のフォルダになります。

"http://localhost:8080/CentralWeb/AppRequest.appmsg"

"http://localhost/Jutyu2/AppRequest.appmsg"

こうしてから、IIS 7.0 が動作していることを確かめて、Jutyu2IISLcl.sln を動作させてください。すると、MANDALA アプリ「受注計上」がセントラル側と通信をしながら動作することになります。

さらに、Jutyu2IISLcl.sln のソリューションエクスプローラを表示して、プロジェクト Jutyu2Lcl を右クリックして、[デバッグ] - [新しいインスタンスを開始] をクリックする操作をすると、MANDALA アプリ「受注計上」の二つ目の画面が現れます。これは、複数の (この場合は二つの) アプリケーションのインスタンスが動作している状態です。

◆ IIS の特長

Remoting を用いるのと比較して、IIS を用いる長所には、以下があります。

いずれにしても、Remoting を用いる方法も IIS を用いる方法も、MANDALA アプリを外側から見た違いはわずかです。 そして、Remoting から IIS への移行を行う場合、MANDALA アプリへの影響は皆無に近いといえます。



MANDALA アプリの IIS 版を Windows Azure で動作させる方法については、このページをご覧になった後に、別ページ「MANDALA アプリを Windows Azure 上で動かす」をご参照ください。



    


Copyright © 2009-2010 By AppliTech, Inc. All Rights Reserved.

 AppliTech および MANDALA および workFrame=Browser は、アプリテック株式会社の登録商標です。
 ここに掲載の社名、製品名には、各社の商標または登録商標があります。