特集
|
WSEとWS-Attachments
WSEで添付ファイルを扱う手順は簡単だ。ここでは、添付ファイルを受け取って保存するWebサービスと、そのWebサービスに添付ファイルを送信するクライアントを作成してみる。
まず、次の1から3までの手順は、本連載のPart1でWS-Securityの実装を行ったときと同じで、WSEの機能が使えるようにするための準備だ。
Visual Studio .NET(以下VS.NET)でASP.NET Webサービス・プロジェクトを新しく作成する。ここではプロジェクトの名前を「WSEDIME」とした。
VS.NETの「参照の追加」機能でMicrosoft.Web.Services.dllへ参照を追加する。
Web.configファイルを編集して、system.web要素の子要素になるように次の要素を記述して、XML Webサービスの実行時にSoapExtensionが起動されるようにする。
|
|
Web.configファイルでのSoapExtensionの設定 | |
XML Webサービスの実行時にSoapExtensionが起動されるようにする。 |
C:\Inetpub\wwwroot\WSEDIMEフォルダにincomingサブフォルダを作成する。
このフォルダに添付されたファイルを保存するので、適切なNTFSアクセス権を設定しなければならない。デフォルト構成の場合は、ASPNETユーザーに書き込み権限を与えればよい。
Service1.asmx.csファイルに次のWebMethodを追加する。
|
|
Webサービスとなるメソッドの追加 |
このコードでは、クライアントから添付されてきたファイルをincomingフォルダに保存し、そのURLを返信している。添付ファイルの保存は、WSEによって作成されるSoapContextクラスのインスタンスにあるAttachmentsプロパティにアクセスして添付ファイルを取得し、それを読み取ってファイルに書き込むだけのコードで実現できる。このコードでは添付ファイルは1つしか処理しない。
これでサーバ側の実装は完了したので、クライアント側のアプリケーションも作成しよう。
Windowsアプリケーションのプロジェクトを作成する。ここでは名前をWSEDIMEClientとした。
プロジェクトにMicrosoft.Web.Services.dllへの参照を追加する。
上記手順で作成したWebサービスに対してWeb参照の追加を行う。
http://localhost/WSEDIME/Service1.asmx?wsdl
というURLでWSDLが取得できる。
作成されたプロキシ・クラスのソース・コードを変更する。
プロキシ・クラスのソース・コードは、Reference.csという名前で[Web References」の中の[localhost」の下にある。表示されない場合は、VS.NETのソリューション・エクスプローラで[すべてのファイルを表示」ボタンをクリックすれば表示される。
変更内容は、プロキシ・クラス「WSERoutingClient.localhost.Service1」の基底クラスを、
System.Web.Services.Protocols.SoapHttpClientProtocol
から、
Microsoft.Web.Services.WebServicesClientProtocol
にすることだけだ。
|
|
自動生成されたプロキシ・クラスの基底クラスの修正 |
フォームにボタンとテキスト・ボックス、そして添付ファイルを選択するための[ファイルを開く]ダイアログ・ボックス(OpenFileDialogコンポーネント)を1つずつ貼り付ける。
ボタンのClickイベントのイベント・ハンドラを実装する。ここでファイルを添付するコードを実装する。
|
|
Webサービスを呼び出すボタンのイベント・ハンドラ | |
ここでは「ファイルを開く」ダイアログ・ボックスを開き、選択されたファイルを添付ファイルとして設定してから、Webサービスを呼び出している。 |
ここでは、まず[ファイルを開く]ダイアログ・ボックスを表示して、ユーザーにファイルを選択させる。ファイルが選択されたら、そのファイルのストリームを開いて、DimeAttachmentクラスのインスタンスを作成する。このときファイルの種類と開いたストリームをコンストラクタの引数で渡している。作成されたDimeAttachmentクラスのインスタンスは、WSEによって作成されるRequestSoapContextのAttachmentsプロパティに追加する。これで添付ファイルが設定できたので、メソッドを実行してSOAPメッセージを送信する。
このコードを実行すると、DIMEメッセージがHTTPプロトコルに乗ってASP.NETのWebサービスに届く。このとき、クライアントからは次に解説するようなデータが送信される。
INDEX | ||
[特集]次世代XML Webサービスを試す Part 4 | ||
SOAPメッセージとファイル添付 | ||
1.SOAPメッセージの添付ファイル | ||
2.WSEとWS-Attachments | ||
3.DIMEメッセージの解析 | ||
4.ほかのWS-Attachments実装との相互運用 | ||
更新履歴 | |
|
「特集:次世代XML Webサービスを試す」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|