連載
» 2008年02月15日 00時00分 公開

ココが変わったWindows Embedded CE 6.0 R2(2):サンプルで確かめる「CE 6.0 R2」の3大新機能 (3/3)

[宮島剛/松井俊訓(富士通ソフトウェアテクノロジーズ),@IT MONOist]
前のページへ 1|2|3       

その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のサンプルアプリケーション
コンポーネントの選択 画面12 コンポーネントの選択

 上記のコンポーネントを選択して、ビルドすると次の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のシーケンス図 図1 File Serviceのシーケンス図

 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サンプルアプリケーションを実行してみましょう。

 このサンプルアプリケーションはホストサービス側のデバイス、クライアント側のデバイスを用意して確認を行うほかに、スタンドアロンでも動作を確認できます。

 以下にその手順を示します。

ホストサービスの起動

  1. 「Web Services on Devices」「Web Services on Devicesのサンプルアプリケーション」を追加したOSイメージを起動します。
  2. コマンドプロンプトを起動します。
  3. コマンドプロンプト上で、fileservice.exe 公開フォルダのパスを実行します。1番目のパラメータには公開したいフォルダのパスを入力します(例 fileservice.exe \windows)。
  4. コマンドプロンプトに「>>> Service running. Press any key to stop service. <<<」というメッセージが表示され、ホストサービスが開始します。
  5. メッセージの中に表示されている「urn:uuid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX」の部分をメモしておきます(次の手順でのクライアントからの接続で必要になります)(画面13)。
ホストサービスが開始 画面13 ホストサービスが開始

クライアントの起動、ホストサービスへの接続

  1. 「Web Services on Devices」「Web Services on Devicesのサンプルアプリケーション」を追加したOSイメージを起動します。
  2. コマンドプロンプトを起動します(スタンドアロンで確認する場合は、ホストサービスを起動したデバイス上でさらにコマンドプロンプトを起動します)。
  3. コマンドプロンプト上で、fileclient.exe ダウンロード先パス
    urn:uuid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXを実行します。1番目のパラメータにはダウンロードしたファイルを格納するパスを指定します。2番目のパラメータには「ホストサービスの起動」手順5で控えたUUIDを入力します(例 fileclient.exe /temp urn:uuid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)。
  4. ホストサービスと接続すると、以下のようなメッセージが表示され、ホストサービスへのコマンド待機状態になります(画面14)。
ホストサービスへのコマンド待機状態 画面14 ホストサービスへのコマンド待機状態

ホストサービスへのアクセス

1.クライアント側のコマンドプロンプトでdirを入力し、[Enter]キーを押下します。ホストサービス側で公開したフォルダに格納されているファイル一覧が列挙されます(画面15)。

ホストサービス側で公開したフォルダに格納されているファイル一覧が列挙 画面15 ホストサービス側で公開したフォルダに格納されているファイル一覧が列挙

2.次にクライアント側のコマンドプロンプトでget ファイル名を入力し、[Enter]キーを押下します。ホストサービス側から指定したファイルをダウンロードして、クライアント側で指定したフォルダにコピーされます(画面16)。

getでファイルをダウンロードした様子 画面16 getでファイルをダウンロードした様子

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の全貌」の連載では触れられていないノウハウをいくつか紹介したいと思います。(次回に続く)


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.