サンプルで確かめる「CE 6.0 R2」の3大新機能:ココが変わったWindows Embedded CE 6.0 R2(2)(3/3 ページ)
サンプルを見ながらWindows Embedded CE 6.0 R2で強化された「RDP」「VoIP」「WSD」について、詳しく解説します
その3:Web Services on Devices
前回の解説でも少し触れましたが、WSDとはWindows Embedded CEデバイス向けのWebサービスのことです。
このWSDですが、次のような機能をサポートしています。
- Webサービスの探索
- Webサービスのメソッドの呼び出し、メッセージ通知
このWSDにより、例えばTCP/IPネットワークに接続されたプリンタ、スキャナ、プロジェクタなどをWindows Vistaから探索し、接続することができます。
WSDは、ネットワーク上に接続された周辺デバイスの探索/接続の仕組みとしてマイクロソフトが公開している「Windows Rally」を活用した技術の1つであると位置付けられており、デバイス上にWebサービスを搭載し、探索/接続をサポートするものです。
WSDサンプルアプリケーション
CE 6.0 R2では、WSDを利用するためにWSDライブラリとサンプルアプリケーションを提供しています。
それでは実際にサンプルアプリケーションを利用して、どのように実装していくのかを見ていきましょう。
まず、カタログから次のコンポーネントを選択します(画面12)。
- Web Services on Devices
- Web Services on Devicesのサンプルアプリケーション
上記のコンポーネントを選択して、ビルドすると次の3つがOSイメージに含まれます(表3)。
サンプルアプリケーション名 | モジュール | 概要 |
---|---|---|
Stock Quote | stockquoteservice.exe stockquoteclient.exe |
メソッド呼び出しを行う単純なサンプルアプリケーション |
Eventing Sample | basiceventingservice.exe basiceventingclient.exe |
イベントの受信を行うサンプルアプリケーション |
File Service | fileservice.exe fileclient.exe |
WSD経由でファイル操作を行うサンプルアプリケーション |
表3 OSイメージに含まれるサンプルアプリケーション |
表3のサンプルアプリケーションはホストサービスとクライアントの構成となっており、Windows Embedded CEデバイス間での通信を行います。
サンプルアプリケーションは、Webサービスを利用するクライアントとWebサービスを提供するホストサービスに分かれています。クライアントとホストサービス間でWebサービスを探索する「WS-Discovery」、Webサービスに接続するための「WS-MetadataExchange」、Webサービスを利用するための「WS-Eventing」「MTOM」を実行しています。
また、File Serviceサンプルアプリケーションでは、次のようなシーケンスを実行しています(図1)。
File Serviceサンプルアプリケーションは、$(_WINCEROOT)\PUBLIC\SERVERS\SDK\SAMPLES\WSD\FILESERVICEに格納されており、次のようなフォルダ構成になっています(表4)。
フォルダ名 | 内容 |
---|---|
CLIENT | クライアントの実装 |
CONTRACT | WsdCodeGen設定ファイル(codegen.config、WSDLファイル) |
GENERATED | WsdCodeGenから生成されたコード |
SERVICE | ホストサービスの実装 |
表4 File Serviceサンプルアプリケーションのフォルダ構成 |
WSDはC++で記述しますが、CE 6.0 R2にはクライアントとホストサービスの通信を行うコードの自動生成ツール「WsdCodeGen」が提供されています。
ホストサービスが公開するメソッドやイベントなど、どのようなWebサービスであるかを設定ファイルに記述して、WsdCodeGenに設定ファイルを読み込ませることで、クライアントとホストサービスが通信を行うためのコードが自動的に生成されます。そして、自動生成されたコードを利用して実装を追加します。ホストサービス側では公開するメソッドの中身を実装し、クライアント側ではWebサービスの呼び出しを実装します。
File Serviceサンプルアプリケーションについて
続いて、File Serviceサンプルアプリケーションの内容を簡単に説明します。
ホストサービスは、サービス起動時に指定したフォルダをクライアントに対して公開します。クライアントは、ホストサービスが公開しているフォルダのファイル一覧の取得、ファイルのダウンロードを行うことができます。
それでは、実際にFile Serviceサンプルアプリケーションを実行してみましょう。
このサンプルアプリケーションはホストサービス側のデバイス、クライアント側のデバイスを用意して確認を行うほかに、スタンドアロンでも動作を確認できます。
以下にその手順を示します。
ホストサービスの起動
- 「Web Services on Devices」「Web Services on Devicesのサンプルアプリケーション」を追加したOSイメージを起動します。
- コマンドプロンプトを起動します。
- コマンドプロンプト上で、fileservice.exe 公開フォルダのパスを実行します。1番目のパラメータには公開したいフォルダのパスを入力します(例 fileservice.exe \windows)。
- コマンドプロンプトに「>>> Service running. Press any key to stop service. <<<」というメッセージが表示され、ホストサービスが開始します。
- メッセージの中に表示されている「urn:uuid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX」の部分をメモしておきます(次の手順でのクライアントからの接続で必要になります)(画面13)。
クライアントの起動、ホストサービスへの接続
- 「Web Services on Devices」「Web Services on Devicesのサンプルアプリケーション」を追加したOSイメージを起動します。
- コマンドプロンプトを起動します(スタンドアロンで確認する場合は、ホストサービスを起動したデバイス上でさらにコマンドプロンプトを起動します)。
- コマンドプロンプト上で、fileclient.exe ダウンロード先パス
urn:uuid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXを実行します。1番目のパラメータにはダウンロードしたファイルを格納するパスを指定します。2番目のパラメータには「ホストサービスの起動」手順5で控えたUUIDを入力します(例 fileclient.exe /temp urn:uuid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)。 - ホストサービスと接続すると、以下のようなメッセージが表示され、ホストサービスへのコマンド待機状態になります(画面14)。
ホストサービスへのアクセス
1.クライアント側のコマンドプロンプトでdirを入力し、[Enter]キーを押下します。ホストサービス側で公開したフォルダに格納されているファイル一覧が列挙されます(画面15)。
2.次にクライアント側のコマンドプロンプトでget ファイル名を入力し、[Enter]キーを押下します。ホストサービス側から指定したファイルをダウンロードして、クライアント側で指定したフォルダにコピーされます(画面16)。
3.次にクライアント側のコマンドプロンプトでquitを入力し、[Enter]キーを押下します。ホストサービス側との接続を切断します。
このようにFile Serviceサンプルアプリケーションは、WSDにより読み取り専用共有フォルダとして利用できます。
WSDまとめ
WSDを利用することにより、同一ネットワーク上でCEデバイスを利用した柔軟な分散処理が可能になります。
提供されているサンプルアプリケーションは、CEデバイス対CEデバイスですが、Windows Vista対CEデバイスなどさまざまな利用シーンで活用できるかと思います。
以上が、CE 6.0 R2で新たに追加された3大機能「RDP」「VoIP」「WSD」の説明となります。
以前の連載「Windows CE 6の全貌」では、アーキテクチャから実際の開発手法までを詳しく解説しましたが、この連載の執筆時はCE6.0がまだベータ版でした。そこで、次回はWindows Embedded CE 6.0の開発手法の最新版ということで、「Windows CE 6の全貌」の連載では触れられていないノウハウをいくつか紹介したいと思います。(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.