これは、モノタッチ/xamarin 環境のより一般的なソフトウェア アーキテクチャに関する質問です。
これが私の問題です:
私が現在構築しているアプリは、アプリの起動時に約 30k の json オブジェクト (6mb) をダウンロードします。その後、データはローカルに保存されるため、すべての画面でローカル db (sqlite) 呼び出しが行われます。
主な問題は、ダウンロードの実行にかかる時間です。現時点では、シミュレーターで合計約 36 秒かかり、次のタスクに分割されます。
- ダウンロード〜10秒
- データ変換 (json からネイティブ obj へ) ~ 16 秒
- データベース挿入 ~ 10 秒
特にアプリストアにある同様のアプリと比較すると、これは長すぎます。ここで何かをしていないように感じますか、それとも別の方法を認識していませんか? 私が実装した改善点は次のとおりです。
- gzip 応答 - 現在 6 MB ですが、gzip を使用すると最大 1 MB になります
- インストールされた ServiceStack.Text json シリアライザー、json.net よりも約 2.5 倍高速 (ただし、それでも 16 秒は長すぎます)
- フラット化された json 応答により、応答配列で db.InsertAll() を実行して (余分なループなどを行わずに)、より堅牢な db インポート (トランザクション) を実現できます。
- 1日1回の通話制限
今、私がやりたいことは、アプリの起動時にローカル データを表示し、バックグラウンドでダウンロード/アップデーターを初期化することです。唯一の問題は、ダウンロードに時間がかかることと、新しくインストールされたアプリに表示するローカル データがないことです...
私の質問は次のとおりです。
- mvc 4 api -> json convert -> sqlite import は、このタイプのアプリに適したアプローチですか? そうでない場合 - 代替手段は何ですか?
サーバーが代わりに実際のsqliteファイルをzip形式の応答で返すか、zip形式のdbコマンドを返すことを考えていました...または、sqliteはこのタイプのアプリには適していませんか? ローカル ストレージのより良い代替手段はありますか? .netシリアライザー/xmlなど?
ご提案いただきありがとうございます。