特集
|
|
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ジャパン)
- LocalConnection APIと動的なスタイリング (2010/2/9)
Webページ上の複数のSilverlightアプリ間でメッセージ通信をする方法とは? コントロールの見た目を動的に設定する方法とは? - ASP.NET MVC 2:モデルの検証 (2010/2/8)
ASP.NET MVC 2で導入される入力検証機能を使った実装を紹介。シンプルな属性の追加によるエレガントな実装が可能となっている - ASP.NETによる3階層Webアプリ「ITブック」構築 (2010/2/5)
ちょっとした改造で、あなたのWebアプリは劇的に使いやすく、かっこよくなる。まずは元となるWebアプリを標準的手法で構築 - .NET TIPS - .NET開発のテクニックとヒント集 - (2010/2/4)
− カスタムMVCビューエンジンを利用するには?(活用編)
− フォーム全体へのドッキングでつまみを表示するには?
− リストボックスでTextBlockの文字列を折り返すには?
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |







