Ultra Light では、設定されている通信ストリーム (ネットワーク・プロトコル) で Mobile Link サーバとの特定の接続を開始することで同期が開始されます。ネットワークに直接接続している場合の同期のサポートに加えて、Palm OS デバイスでは HotSync 同期が、Windows Mobile デバイスでは ActiveSync 同期がサポートされます。
各 Ultra Light リモートは、ネットワーク・プロトコルによって Mobile Link サーバと同期します。ネットワーク・プロトコルは同期ストリーム・パラメータを使用して設定します。サポートされているネットワーク・プロトコルには、TCP/IP、HTTP、HTTPS、TLS があります。選択するプロトコルについて、Mobile Link サーバのホストやポートなどその他の必要な接続情報を定義するストリーム・パラメータを指定する必要があります。
また、user_name パラメータと version パラメータで Mobile Link のユーザ情報と同期スクリプトのバージョンを指定する必要もあります。
同期動作は、さまざまな同期パラメータを設定することで制御できます。パラメータの設定方法は、使用している Ultra Light インタフェースによって異なります。
検討する必要がある重要な動作は、次のとおりです。
同期の方向 デフォルトでは、同期は双方向です。一方向だけの同期を行うには、upload_only パラメータまたは download_only パラメータを使用します。一方向の同期を実行することによって、同期に必要な時間を最小限に抑えることができます。また、ダウンロード専用同期では、Ultra Light データベースに対してあらかじめすべての変更をコミットする必要はありません。コミットしなかった変更は同期に含まれず、アップロードされません。したがって、不完全なトランザクションでも問題は起こりません。
ダウンロード専用同期を使用する場合は、ダウンロードと重なっているローがローカル・レベルで変更されていないことを確認してください。ローカル・レベルでデータが変更されていると、SQLE_DOWNLOAD_CONFLICT エラーによって、Ultra Light アプリケーションの同期は失敗します。
同期中の変更 アップロード・フェーズでは、Ultra Light アプリケーションは、読み込み専用として Ultra Light データベースにアクセスできます。ダウンロード・フェーズでは、読み込み/書き込みアクセスが許可されますが、アプリケーションがローを変更してからダウンロードによってこのローが変更されようとすると、ダウンロードが失敗し、ロールバックが行われます。disable_concurrency 同期パラメータを設定することで、同期中のデータへの同時アクセスを無効にすることができます。
同期情報の構造体のフィールドとして、セッションに必要な同期パラメータとプロトコル・オプションを指定します。
たとえば、C/C++ API を使用する場合は、ul_synch_info 構造体に適切な値を設定して、Ultra Light アプリケーションに同期を追加します。
ul_synch_info info; // define a sync structure named "info" ULEnableTcpipSynchronization( &sqlca ); // use a TCP/IP stream conn->InitSynchInfo( &info ); // initialize the structure info.stream = ULSocketStream(); // specify the Socket Stream info.stream_parms= UL_TEXT( "host=myMLserver;port=2439" ); // set the MobiLink host information info.version = UL_TEXT( "custdb 11.0" ); // set the MobiLink version information info.user_name = UL_TEXT( "50" ); // set the MobiLink user name info.download_only =ul_true; // make the synchronization download-only |
同期を初期化します。
TCP/IP を使用して直接同期する場合は、API 固有の同期関数を呼び出します。これらの関数は、同期操作の成功または失敗を示すブール値を返します。同期が失敗した場合は、別の構造体で詳細なエラー・ステータスのフィールドを検証して、追加のエラー情報を取得できます。
HotSync 同期の場合は、引数として ul_synch_info 構造体を指定して ULSetSynchInfo 関数を使用する必要があります。ul_synch_info 構造体を指定すると、以後の同期で使用できるように、この構造体が現在のデータベースにアタッチされます。
ActiveSync 同期の場合は、ActiveSync プロバイダからの同期メッセージを取得し、DoSync 関数を使用して ULSynchronize を呼び出す必要があります。
同期の進行状況をユーザにレポートする場合は、observer コールバック関数を使用します。
DLL が非常に大きいか、ネットワーク接続の信頼性が低いため、DLL を正常に実行できない場合は、再開可能なダウンロードを実装できます。失敗したダウンロードの処理と失敗したダウンロードの再開を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |