| データ同期の問題 | |
オフライン ネイティブ モバイルアプリケーションのアーキテクチャで説明しているように、オフラインアプリケーションはサーバーと通信します。この通信では、デバイスとサーバーの同期を保つために情報を送受信します。データを送受信するこのメカニズムを次のように呼びます: 同期
理由は次のとおりです:
- アプリケーションが、より大きなシステムのサブセットである場合、このシステムとの通信が必要です。
- システム全体のデータベースをデバイスに格納する必要がない場合があります。ほとんどの場合、タスクを実行するためにデバイス上に必要なのはテーブルとレジスタの一部だけです。
- サーバーは、デバイスで実行できないタスクやリソース使用量が多いタスクなど、負荷の高い処理を実行する能力がある場合があります。
- 一部のビジネスロジックは、メインアプリケーションでのみ実行できます。インベントリ管理がその一例です。
- デバイスに最新のデータが必要なので、サーバーからデバイスにデータを送信する必要がある場合があります。
Web サービスを利用します。デバイスは、Web サービスを利用、実行して、サーバーとデータをやり取りできます。 注: すべてのサービスを同じサーバーでホストできない場合もあります。
最初に、次の情報を定義します:
- オフライン時にアプリケーションで実行する処理
- オフラインで使用するテーブル
- オフラインで必要なテーブル内のレコード
同期は、必ずデバイスによる情報の要求または送信から始まります。これは、いつインターネットに接続されたか、また接続が十分に良好であるかどうかを認識できるのが、デバイスだからです。情報の要求または送信は、デバイスから行われます。
この関係を考慮して、同期処理の名前を定義します。処理には、デバイスの立場から見た名前をつけます:
- 受信: サーバーからデータを取得する処理
- 送信: ローカルでの変更をサーバーにアップロードする処理
最適な同期のタイミングは、アプリケーションによって異なります。従うべきルールはありません。要件は場合によって異なります。できるだけ同期を維持する必要がある場合もありますし、それほど頻繁な同期が必要ではない場合もあります。
ルールはなくても、この点に関する検討事項はあります:
- 同期するには、デバイスをネットワークに接続する必要があります。
- 情報の送信: デバイスは送信するデータ量を認識しています。送信するデータの量が多い場合は、インターネット接続の状態が良好である必要があります。
- 情報の受信: デバイスは受信するデータ量を認識できません。デバイスが、同期を実行できるかどうかを判断できるように、中間のステップが推奨される場合があります。ネットワーク接続の状態と、送信する必要があるデータ量を考慮します。
- 移動しながらデバイスを使用すると接続が切断され、同期の完了前に処理を中断する必要がある場合があります。このため、処理中に接続が失われた場合には、同期を再開できなければなりません。
データ受信に関しては、次の 2 つの選択肢があります:
- すべての必要な情報を常に受信し、既存のデータと置換する
- 変更点だけを受信し、既存のデータに適用する
最初の選択肢では送受信されるデータが多くなり、2 番目の選択肢ではサーバーの処理量が多くなります。
サーバーとデバイスの間でデータを送受信するときに、LAN やインターネットが使われる場合があります。そのため、セキュリティが非常に重要です。
アプリケーションで同期の競合が発生する場合があります。このような問題と解決方法については、次のドキュメントを参照してください:
オフラインで実行された処理は、デバイスで実行された順序と同じ順序でサーバーで再現する必要があります。この方法で、処理の一貫性が維持されます。オフラインで登録された処理が原因で、その後のイベントが無効になる場合があります。たとえば、デバイスで発注書を挿入した後に製品の在庫が切れた場合、その後のイベントは失敗する必要があります。
同期後は、デバイスにフィードバックが必要です。サーバーの検証が原因でイベントが失敗した場合は、エラーが発生したことをデバイスに通知する必要があります。これにより、ユーザーが問題に対応できるようになりますし、少なくとも、同期エラーの発生をユーザーに知らせることができます。
マルチメディア (画像、ビデオ、オーディオ) が原因で、同期時の問題が発生する場合があります。
マルチメディアファイルは大きくなりがちで、画像やビデオの数によっては、同期に必要な容量と時間が膨大になる可能性があります。
オフラインアプリケーションの生成に関する問題の解決については、「オフライン ネイティブ モバイルアプリケーションの生成」を参照してください。 同期の問題の解決については、「データ同期」を参照してください。
|
|
|
|
|