DataSnap モバイル コネクタ入門
DataSnap モバイル コネクタは、DataSnap REST サーバー上のサービスにアクセスするのに使用できるフレームワークで、これにより、その他の DataSnap プロキシ ジェネレータの場合とちょうど同じようにサーバー メソッドを呼び出せるようになります。
目次
サポート対象プラットフォーム
以下のモバイル プラットフォームがさまざまな DataSnap コネクタで現在サポートされています。
- iOS 4.x、5.x、6.x、7.x (Objective-C)
- Android 2.x、3.x、4.x(Java)
- Windows Phone 7(C#Silverlight - このプラットフォームと互換性のあるすべてのデバイス)
- BlackBerry Java SDK 5 および 6(Java)
DataSnap コネクタの動作の仕組み
DataSnap コネクタは、既存のプロキシ ジェネレータ、メタデータ プロバイダ、サーバー クラス コンポーネントと共に動作する新しいプロキシ ディスパッチャとなります。このプロキシ ディスパッチャは、リモート マシンで作業する開発者がサーバー上にプロキシを生成し、それを開発者のマシンにダウンロードできるようになる機能を提供します。この新しいプロキシ ディスパッチサービスが導入されているのは、このようなモバイル開発が RAD Studio 内では行われないからです。
DataSnap でのモバイル開発を始めるには、まず、DataSnap サーバーをプロキシ ディスパッチ用に適切にセットアップして、モバイル プラットフォームのプロキシを生成できるようにする必要があります。たとえば、Android アプリケーションを開発する際には、サーバーで生成されたコードが記述された DSProxy.java ファイルが必要です。また、com.embarcadero.javaandroid パッケージも必要になります。このパッケージには、プロキシで必要な追加の静的ファイルが含まれています。これらの静的ファイルの大部分は、DataSnap でサポートされている Delphi データ型に対応するデータ型(TStream など)です。
DataSnap モバイル コネクタに関する IDE による支援
DataSnap ウィザードには、[モバイル コネクタ]チェック ボックスが用意されています。[モバイル コネクタ]チェックボックスをオンにした場合、ウィザードは以下を自動的に行います。
- "proxy" ディレクトリとコネクタ コンポーネント(プロキシ ジェネレータ、メタデータ プロバイダ、プロキシ ディスパッチャ)をセットアップします。
- 静的ファイル ディレクトリ(proxy、js、templates、css、images)をプロジェクトの出力場所にコピーするビルド後イベントを生成します。 (なお、プロジェクトの出力場所を "."、または、プロジェクトのルート ディレクトリに解決される任意の相対パスまたは絶対パスに手動で設定した場合、このコピーは省略されます)。 JavaScript REST ファイルを含んだプロジェクトにも、同じビルド後イベントが作成されます(「DataSnap REST アプリケーション ウィザード」を参照)。
プロキシの生成方法
DataSnap サーバーをプロキシ ディスパッチ用に構成するには、まず、プロキシ生成ができるように適切に構成されるかどうかを確認する必要があります。
DataSnap REST サーバーでプロキシを生成できるようにするために必要なコンポーネントを以下のスクリーンショットに示します。
以下は、必要なコンポーネントのリストと、それぞれで遂行されるタスクの簡単な説明です。
- TDSProxyGenerator はプロキシ生成を行います。
- TDSServerMetaDataProvider は、REST サーバー メタデータ(サーバー メソッド)をプロキシ ジェネレータに公開します。
- TDSProxyDispatcher / TDSHTTPServiceProxyDispatcher(WebBroker/Indy) は、特定のプロキシを必要とする HTTP 要求を処理するほか、proxy というデフォルトの仮想パスを処理します。
そのため、サーバーが http://www.myserver.com/ で到達可能であれば、プロキシは http://www.myserver.com/proxy/... に要求される必要があります。
プロキシのダウンロードを簡単にするため、2 つのプロキシ ダウンローダ(Win32 コンソール アプリケーションと Java コマンドライン アプリケーション)が用意されています。
また、プロキシをディスパッチさせる各プロキシ ジェネレータ ユニット(つまり、DSProxyJavaAndroid
、DSProxyJavaBlackBerry、DSProxyCsharpSilverlight、DSProxyObjectiveCiOS)を uses 句に追加する必要があります。これらのユニットを uses
句に追加しない場合は、対応するプロキシをディスパッチしようとするクライアント要求は失敗するおそれがあります。
各プロキシには、その他にも、生成された主要なプロキシ ファイルと共に配置されなければならない一連のファイルが必要です。これらは、DBX データ型や JSON 解析ライブラリなどの従属要素です。 必要なファイルはすべて、インストールされている製品のフォルダ \ObjRepos\<言語>\dsrest\connectors に置かれます。
各プロキシには、関係するフォルダに格納されているファイルがすべて必要であることに注意してください。 このフォルダは、サーバーの実行可能ファイルと一緒にコピーされ再配布される必要があります。サーバー アプリケーションの典型的な配置を以下のスクリーンショットに示します。
特定の言語/プラットフォーム用のプロキシを生成する必要がある場合、サーバーは、適切なフォルダ内にそれを生成した後、そのフォルダを圧縮して "言語/プラットフォーム".zip ファイル(Android プロキシを生成する場合は java_android.zip)を作成し、それをクライアントにダウンロードさせます。このプロセスは TDSProxyDispatcher(または TDSHTTPServiceProxyDispatcher)で完全に管理されています。
ディスパッチされたプロキシの受信方法
プロキシの生成およびディスパッチの要求は、http://serveraddress:port/proxy/mobile_client.zip などの URL で HTTP 要求としてサーバーに着信します(ここで、<serveraddress>、<port>、<mobile_client> は実際の値に置き換えられます)。<mobile_client> に現在使用可能な値は、上記のディレクトリ構造における("proxy" 内の)以下のディレクトリ名です。
- csharp_silverlight
- objective_ios71
- java_blackberry
- java_android
Web ブラウザを開いて、この URL に直接アクセスできます。そこでは、DataSnap サーバーで公開されているサーバー メソッドをモバイル プラットフォームで呼び出すのに必要なソース コードがすべて格納されている .zip ファイルをダウンロードする必要があります。
便宜上、上記の代わりに JAR/EXE プロキシ ダウンローダを使ってプロキシを取得することもできます(これらのダウンローダは C:\Program Files (x86)\Embarcadero\Studio\23.0\bin
にあります)。JAR/EXE プロキシ ダウンローダはどちらも同じパラメータを取り、必要なモバイル プロキシの自動ダウンロードおよび解凍が可能になっています。
プロキシ ダウンローダ コマンドの -help オプションを使用すれば、以下のように、使用可能なパラメータと使用例を参照できます。
WIN32 DATASNAP PROXY DOWNLOADER HELP COMMAND: Win32ProxyDownloader.exe [-protocol protocol] -language language_platform [-output output_folder] [-host hostname]
OPTIONS: -language <language> (required) The language_platform identifier. e.g. java_android or objectivec_ios71 -host <hostname:port> (optional) Hostname and port where the server is running. Default is localhost:80 -protocol <http|https> (optional) protocol can be http or https. Default http -output <local_proxy_path> (optional) is the full path where the proxy must be downloaded. Default current_folder
EXAMPLES: Win32ProxyDownloader.exe -language java_android Win32ProxyDownloader.exe -host localhost:8080 -language java_android -output c:\ Win32ProxyDownloader.exe -protocol http -language java_android -output folder
これらのプロキシ ダウンローダの使用方法の詳細については、各モバイル プラットフォームの入門ドキュメントを参照してください。
トピック
- iOS Objective-C DataSnap モバイル コネクタ入門
- CSharp Silverlight DataSnap モバイル コネクタ入門
- Java Android DataSnap モバイル コネクタ入門
- Java BlackBerry DataSnap モバイル コネクタ入門