あけましておめでとうございます、statemachineです。年末年始と忙しくてBlogを更新する暇がとれませんでしたが、今年もマイペースで更新していく所存ですので、よろしくお願いします。
今回は、SDK 1.3以降に導入されたプラグイン(Plugin)ネタです。RemoteDesktopやら、Connectを実現するのに導入されたのではないかの睨んでいるのですが、どうでしょう?また、既存のDiagnostics当たりもPluginとして再実装されたように見えますので、その仕組みなどを調べた結果の備忘録として。
サービス定義ファイルに、Imports要素がありますけど、そこで利用する機能を指定しています。
<Imports> <Import moduleName="Diagnostics" /> </Imports>
Plugin本体は、"C:\Program Files\Windows Azure SDK\v1.3\bin\plugins"に格納されており、現在のフォルダ構成をみると4つ準備されています。
- Connect
- Diagnostics
- RemoteAccess
- RemoteForwarder
Diagnosticsフォルダは以下の通り。Diagnostics.cspluginが定義ファイルです。
Diagnostics.cspluginを見てみますと、サービス定義ファイル風です。内部的にマージされるのでしょうか。Startup要素でDiagnosticsエージェントを起動しているのがわかります。実行ファイルを引数付きで実行できるようで、ちっと新しい発見。
<?xml version="1.0" ?> <RoleModule xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" namespace="Microsoft.WindowsAzure.Plugins.Diagnostics"> <Startup priority="-2"> <Task commandLine="DiagnosticsAgent.exe" executionContext="limited" taskType="background" /> <Task commandLine="DiagnosticsAgent.exe /blockStartup" executionContext="limited" taskType="simple" /> </Startup> <ConfigurationSettings> <Setting name="ConnectionString" /> </ConfigurationSettings> </RoleModule>
これなら、オレオレPluginを作れそうな予感。PDC発表資料でも、どこかでちょっとだけ言及されていたような気がする。