Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

Windows Azure Plugin の仕組み

あけましておめでとうございます、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発表資料でも、どこかでちょっとだけ言及されていたような気がする。