コンテンツ管理システムを考える

公開日:2016/12/20
更新日:2020/01/20

要件:
サーバからDLしたコンテンツを
なるべく最新版に
なるべく低コストで管理する仕組みを構築する。
仕様:
【サーバ側】
サーバに現在のコンテンツの
ContentVer コンテンツデータのVer(コンテンツデータ全体のVer)
List<ItemVer> 個別コンテンツのデータ
を配置する。
ItemVerについては、以下のパラメータを保持する。
id ユニークなもの
Name ファイル名
Ver コンテンツを更新するごとにインクリメントする。
Url コンテンツのダウンロードURL
Flag ダウンロードタイミングに関するフラグ(0:随時、1:初回、2以降特定のタイミング)
Apiについては、
int GetContentVer(string platform)・・・コンテンツデータ全体のVer確認API
byte[] GetContentDate(string platform)・・・個別コンテンツデータのJson文字列をzip圧縮したバイナリ
【クライアント側】
起動時、コンテンツデータ全体のVer確認APIを呼び出し、コンテンツデータのVerを確認する。
前回取得成功時のVerと比較し、前回バージョンと異なっている場合、
個別コンテンツのデータをダウンロード・保存・展開する。
それぞれのコンテンツについて、
前回取得成功時のVerよりも上がっているものについて、
Flagを勘案し、DLする必要があるものについては、
コンテンツDL処理を行い、成功したものについては、個別取得成功時の情報を書き換える。
DLする必要がない物については、
既にDLしたものがある場合、削除し、個別取得成功時の情報を書き換える。
また、必要になった時に置いて、保存された個別コンテンツデータを参照し、DLする。
保存情報
コンテンツデータ全体のVer
コンテンツテーブル
id ユニークなもの
Name ファイル名
Ver コンテンツを更新するごとにインクリメントする。
Url コンテンツのダウンロードURL
Flag ダウンロードタイミングに関するフラグ(0:随時、1:初回、2以降特定のタイミング)
SuccessVer Urlの成功、もしくは削除の成功に成功したVer
HasContent コンテンツがDL済みかどうか

最終更新日:2020年1月20日