3

私は VB.NET (コンパクト フレームワーク) でモバイル アプリケーションを構築していますが、デバイス上で発生する可能性のあるオフライン インタラクションにアプローチする最善の方法を考えています。基本的に、デバイスにはセルラーと 802.11 がありますが、まだオフラインの場合があります (受信状態が悪いなど)。ドライバーはトラックを離れるときにボックスをスキャンします。ネットワーク信号がある場合はすぐに新しい場所を更新し、オフラインの場合はキューに入れ、後で処理します。しかし、一般的にオフライン性をどのように処理するかについて考えさせられました。

  • デバイスがオフラインの場合に使用できるように、できるだけ多くのデータをデバイスにキャッシュしますか? 基本的に、各デバイスには (関連する) 運用データのコピーがありますか? それとも、後で同期するという頭痛の種を避けるために、オフラインのときに特定の機能を無効にする方がよいでしょうか? これは私のアプリに依存するかなり具体的な質問であることは知っていますが、他の人がこのルートをたどったかどうかを知りたいです.
  • 常にオフラインであるかのように動作するようにアプリケーション自体を構築し、ローカル クラスが所有する種類のローカル キューにすべてを送信し (本質的にオンライン/オフラインのものを抽象化します)、クラスに次のようにサーバーに送信させますか?できる?データ ルックアップについてはどうですか?「セミライブ」方式でどのように処理できますか?
  • または、アプリケーションが要求をサーバーに直接、リアルタイムで送信し、要求自​​体が失敗した場合にそれを処理するように試行する必要がありますか? ユーザーをタイムアウトまで待たせる潜在的な問題があることがわかりますが、これが最も信頼できる方法ですか?

私は特定の解決策を探しているわけではありませんが、実際には開発者が可能な限りスムーズなユーザー エクスペリエンスでこれを達成する方法の話であり、ハウツーやここで考慮すべきことなどへのリンクが含まれています。ご指摘ありがとうございます。

4

3 に答える 3

2

すべての使用シナリオに適合する「正しい」答えはないため、決定的な答えを提供することはできません。たとえば、バック エンドで SQL Server を使用し、ローカルで SQL CE を使用している場合は、常にマージ レプリケーションを設定し、データ エンジンにこれらすべてを処理させることができます。それはかなりきれいです。オフライン アプリケーション ブロックを使用すると、解決する場合があります。ストア アンド フォワードの使用はオプションかもしれません。

ローカルに保存してから、ネットワークが検出されたときに使用される直接接続、WCF サービスの Web サービスとの独自の同期をロールすることができます。配信には MSMQ を使用できます。

考えなければならないのは、「正しい」方法が何であるかではなく、実装がアプリケーションの使いやすさにどのように影響するかです。接続できないために機能を無効にしても、アプリは引き続き使用できますか? 古いデータがある場合、それは問題ですか? GSM/GPRS (通常は無料ではない) を使用している場合は重要なデータを転送する必要があり、802.11. おそらく、ルックアップ テーブルを朝にプルダウンして 1 日中実行し、トランザクションのみをアップロードして、デバイスが加えられた変更を追跡することができます。

基本的には、それがどのように使用されるか、データの性質、フィールド デバイス間のデータ トランザクションの重要性、データ レイテンシの影響、およびおそらく私がすぐには思いつかないその他の要因に大きく依存します。

したがって、最初のステップは、アプリをどのように使用する必要があるかを判断し、次に必要な接続とデータ アクセスを提供するインフラストラクチャとアーキテクチャを判断することです。

于 2008-10-22T13:12:22.747 に答える
0

これに取り組む最善の方法は、常にオフラインで作業し、メッセージキューを使用してデバイスとの間の変更の送信を処理することです。たとえば、ドライバーが何かを配信済みとしてマークした場合、ローカルストアで配信済みとしてアイテムを更新し、送信キューにメッセージを配置して、サーバーに配信済みであることを通知します。接続が確立したら、キューに入れられたアイテムをサーバーに送り返し、サーバーからキューに入れられたメッセージを取得します。

于 2008-10-22T11:49:52.867 に答える
0

私自身は使用していませんが、CF の「ストア アンド フォワード」機能について調べましたか? それはあなたのニーズに合うかもしれません。デバイスとの間で SOAP パケットを送受信するメッセージ キューとして Exchange メールボックスを使用していると思います。

于 2008-10-22T04:45:02.350 に答える