4)Does remote desktop use up an endpoint?
- 質問:
リモートデスクトップ接続にはエンドポイントを使用しますか?[開発][初級]
- 回答:
はい。エンドポイントを2つ使用します。
- 解説:
Windows Azure SDK 1.3以降ではコンピュートサービスに対してリモートデスクトップ接続する機能が追加されました。これにより、インスタンスを手元の環境で直接触って操作することが可能になります。
ただし、インスタンスに対して操作を行った場合も、その結果は永続化されないので注意が必要です。例えば、あるインスタンスがWindows Azureのデータセンター内でのハードウェア障害などでダウンした場合、自動的に他のハードウェアに再デプロイしてサービスを再開されます。しかし、その際の設定はデプロイ時のパッケージファイルによってしまいます。つまり、デプロイ後にインスタンスに対して行った操作は再デプロイした時点で消えてしまうということです。そのため、リモートデスクトップ接続はあくまで検証/調査用途に絞って使用することが重要です。
さて、このリモートデスクトップ接続ですがエンドポイントを2つ使用します。通常はGUIでリモートデスクトップ接続を設定するので意識しませんが、サービス定義ファイル(ServiceDefinition.csdef)を確認すると、使用時にはRemoteAccessとRemoteForwarderの2つのプラグインがインポートされるように定義されています。
<Imports> <Import moduleName="RemoteAccess" /> <Import moduleName="RemoteForwarder" /> </Imports>
この2つのプラグインで通信の設定を行っています。
RemoteForwarderプラグインではInput Endpointを定義していて、ポート番号は3389番になります。ここで外部からのリモートデスクトップ接続の要求を受け付けます。またRemoteAccessではInternal Endpointを定義しています。ここで、要求を受け付けたインスタンスから実際に接続するインスタンスに通信が転送されます。この2つでエンドポイントを使用しているため、実際にサービスで使うことができるエンドポイントが3つに制限されてしまいます。
リモートデスクトップ接続は検証/調査用途の機能なので、エンドポイントを2つ使うことによるアプリケーション全体への影響を考慮した上で使用してください。
5)win 32 dll application dependencies
- 質問:
サードパーティ製のCOMコンポーネントを読み込んでAzureアプリケーションを動作させることはできますか?[開発][中級]
- 回答:
スタートアップタスクを使用して、regsvr32.exeでCOMコンポーネントを登録することで使用可能です。
- 解説:
3rdパーティ製のDLLを使用したいからの質問のようでした。日本でも同じようなケースは発生すると思います。
スタートアップタスクとは、「スタートアップ」という言葉から連想できるようにインスタンス起動後にアプリケーションが開始するまでの間に何かしらの動作を行うための機能です。この期間でソフトをインストールしたりアプリケーションの設定を行うことが可能です。今回はCOMコンポーネントを登録しています。では、具体的な手順を見ていきたいと思います。
1. ビルド前イベントとして、regsvr32.exeでCOMコンポーネントを登録する
Windows Azureではアプリケーションをビルド/パッケージ化してデプロイを行います。そのため、ビルド前に使用するCOMコンポーネントを登録する必要があります。各ロールプロジェクトのプロパティからビルドイベントを選択して、ビルド前に実行するコマンドラインで登録を行います。
2. ビルド後イベントとして、regsvr32.exeでCOMコンポーネントの登録を解除する
ビルドが終われば、サービス提供時はスタートアップタスクでCOMコンポーネントを登録するのでこの時点では登録を解除します。本来ならば必要ない作業ですが、コンピュートエミュレーターでデバッグする際のスタートアップタスクの動作確認のため行うことをおすすめします。
3. スタートアップタスクへ登録するためのバッチファイルの作成とスタートアップタスクへの登録
クラウドサービスプロジェクトのサービス定義ファイル(ServiceDefinition.csdef)にスタートアップタスクを登録します。ここで注意しなければならないのは、executionContextをelevatedに設定して管理者権限で動作させることとtaskTypeをsimpleに設定して、バッチファイルが終了するまではアプリケーションが起動しないように設定することです。
これで完了です。後は実際に動作確認を行ってください。今回は簡単な手順のみをご説明いたしますが、詳細はアメリカのマイクロソフト社でサンプルアプリケーションとその解説(英語)が提供されていますので、そちらをご参照ください。
このように、スタートアップタスクを使用することで、これまで以上に柔軟にアプリケーションを構築できるようになりました。スタートアップタスクは、パッケージファイルに含まれてインスタンスの展開時に動作するので、リモートデスクトップ接続で接続して設定変更する場合と異なり、変更の永続化が保証されます。リモートデスクトップ接続とスタートアップタスクは同じことを行いますが、永続化の観点でスタートアップタスクでの変更を最初に検討することをお勧めします。