特集
|
|
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サービスを試す」 |
TechTargetジャパン
- Kinectが切り開く“夢の近未来” (2012/2/2)
日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか? - 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する - SQL Azure Data Sync入門 (2012/1/30)
SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説 - Windows Phoneアプリ市場の現状を分析する (2012/1/27)
Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


