特集
次世代XML Webサービスを試す Part 1

1.WSDKのインストール

インフォテリア株式会社
吉松 史彰
2002/10/11

Page1 Page2 Page3 Page4 Page5 Page6

WSDKのインストール

 WSDKの実体は.NET Framework 1.0(Visual Studio .NET 2002)上で動作するアセンブリである。米国MSDN Onlineのダウンロード・ページからWindows Installerのmsiファイルをダウンロードすることができる(2002年10月時点ではTechnology Preview版がダウンロード可能)。また、このページにはWSDKの使い方を記した2本の記事へのリンクも張られているので、ぜひ参考にしてほしい。

 WSDKをインストールするには、ダウンロードしたmsiファイルをダブルクリックして、お決まりのインストール手順を踏むだけだ(ちなみに、すでに米国では.NET Framework 1.1 ベータ版が公開されているが、現行WSDKの動作は保証されていない)。

Web Services Development Kit(WSDK)のインストーラ起動時の画面
Microsoft Web Services Development Kit Technology Preview.msi(2.19Mbytes)をダウンロードして、起動したところ。

 インストールする内容を選択する画面では[Complete]を選択して、取りあえずすべての内容物をインストールしてしまおう。

セットアップの種類を選択するインストール画面
ここでは取りあえず「Complete」を選択しておけばよい。これによりランタイム、ドキュメント、サンプルなど、すべてがインストールされる。

 インストールが完了すると、スタートメニューにショートカットが4つあるプログラムフォルダが作成され、%programfiles%フォルダ(通常はC:\Program Files)の下にMicrosoft WSDKというフォルダができる。フォルダのサイズは2Mbytes弱だが、そのほとんどはヘルプ・ファイルで占められている。%programfiles%\Microsoft WSDKフォルダの中で最も重要なファイルは、いうまでもなくMicrosoft.WSDK.dllファイルである。このファイルの本性は、

Microsoft.WSDK,Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

という名前のシングル・ファイル・アセンブリであり、Microsoft.WSDKなどの名前空間に属するクラス群が含まれているライブラリである。また、このアセンブリはインストーラによってグローバル・アセンブリ・キャッシュに登録される。

WSDKがインストールされた.NET Framework

 WSDKのインストーラは、

  %systemroot%
    \Microsoft.NET
      \Framework
        \v1.0.3705
          \CONFIG フォルダ

にあるmachine.configファイルに2種類のエントリを追加する作業も行う。1つはconfiguration/configSectionsに追加される次のエントリだ。

WSDKのインストーラにより、machine.configファイルに追加されるエントリ(1/2)
赤線で囲んだ部分が追加されたエントリ(IEにより表示)。

 このエントリによって、ASP.NET上で動作するWebアプリケーションやXML WebサービスのWeb.config構成ファイル、または各アプリケーションの構成ファイルに<microsoft.wsdk>という構成要素を書き、アプリケーションでそれを受け取ることができるようになる。

 もう1つのエントリは、configuration要素の直下に追加される。

WSDKのインストーラにより、machine.configファイルに追加されるエントリ(2/2)
赤線で囲んだ部分が追加されたエントリ(IEにより表示)。

 このエントリによって何をしようとしているのかについては、WSDKのインストール・フォルダにあるWSDK.configファイルにコメントとして書かれている。内容は、要するに次のコードによって返されるクラスを変化させるということだ。

class App {
  static void Main() {
    object o = System.Security.Cryptography.CryptoConfig.CreateFromName("SHA1");
    System.Console.WriteLine(o.GetType());
    object o2 = System.Security.Cryptography.SHA1.Create();
    System.Console.WriteLine(o2.GetType());
  }
}
WSDKインストーラにより置き換えられる実装を確認するためのサンプル・プログラム

 WSDKをインストールする前(つまりmachine.configが書き換わる前)にこのコードを実行すると、結果は次のようになる。

% App.exe
System.Security.Cryptography.SHA1CryptoServiceProvider
System.Security.Cryptography.SHA1CryptoServiceProvider

 これを、WSDKのインストール後に実行すると、結果は次のようになる。

% App.exe
System.Security.Cryptography.SHA1Managed
System.Security.Cryptography.SHA1Managed

 System.Security.Cryptography.SHA1CryptoServiceProviderクラスも、System.Security.Cryptography.SHA1Managedクラスも、ともにmscorlibアセンブリに含まれるクラスだ。違いは、SHA1CryptoServiceProviderの方はP/Invokeサービスを利用して、Windowsが持つCryptoAPIを利用してSHA1ハッシュアルゴリズムを実装しているが、SHA1Managedの方は完全にマネージ・コードで同じアルゴリズムを実行しているという点だ。これを変更させる目的は、WSDK.configのコメントによれば、.NET Framework 1.0の実装においてXML Webサービスに高い負荷がかかったときの安定性を向上させるということのようだ。だが、machine.configの設定は、そのコンピュータ上で稼働する全CLRベース・アプリケーションに影響するので、すでに実運用アプリケーションをマシンに導入しているような場合は、WSDKのインストールは避けた方がいいだろう。Insider.NETフォーラムの「インサイド.NET Framework」の連載でも何度か触れているとおり、CLRはさまざまな場所でSHA1アルゴリズムによるハッシュを活用しているからだ。

 上記のmachine.configに追加されたエントリの中で、デフォルトのものと実装が変化するアルゴリズムはもう1つある。http://www.w3.org/TR/1999/REC-xpath-19991116で表されるアルゴリズムだ。これはXML電子署名(XML-Signature Syntax and Processing)仕様のTransformアルゴリズムとして規定されているXPath Filteringというアルゴリズムの実装を表す。次のコードを実行すると、

System.Security.Cryptography.CryptoConfig.CreateFromName
("http://www.w3.org/TR/1999/REC-xpath-19991116");

WSDKのインストール前は、

System.Security.Cryptography.Xml.XmlDsigXPathTransform

というクラス(のオブジェクト)を返すが、インストール後は、

Microsoft.WSDK.Security.XmlDsigXPathTransform

を返す。稼働しているアプリケーションでSystem.Security.Cryptography.Xml.SignedXmlクラスなどを利用してXMLデジタル署名を行っている場合は、やはり注意が必要だろう。

 そのほかのエントリは、WS-Security仕様、およびExclusive XML Canonicalization仕様で定められたアルゴリズムを実装しているものであり、.NET Framework 1.0の実装には含まれていなかったので、問題はないはずだ。


 INDEX
  [特集]次世代XML Webサービスを試す Part 1
  1.WSDKのインストール
    2.WSDKを使ったセキュア XML Webサービスの実装
    3.セキュアXML Webサービスのクライアントの実装
    4.ほかのWS-Security実装との相互運用(1)
    5.ほかのWS-Security実装との相互運用(2)
 
 「特集:次世代XML Webサービスを試す」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間