製品に自動更新または更新通知を追加したい (C++)。
更新はサブスクリプション ベースである必要があります。
- ユーザーは 1 年間の更新のサブスクリプションを購入します
- サブスクリプションの有効期限が切れると、それ以上の更新は利用できなくなります。
そのようなサービスを実装するためのソフトウェアまたはプロバイダーを提案できますか?
自動更新の例をいくつか見つけましたが、それらはすべて時間無制限です。
このサービスは、ユーザーごとに制限され、拡張を許可する必要があります。
製品に自動更新または更新通知を追加したい (C++)。
更新はサブスクリプション ベースである必要があります。
そのようなサービスを実装するためのソフトウェアまたはプロバイダーを提案できますか?
自動更新の例をいくつか見つけましたが、それらはすべて時間無制限です。
このサービスは、ユーザーごとに制限され、拡張を許可する必要があります。
材料に関して、あなたが必要とするものは次のようになります:
私が提案するのは、(恥知らずなプラグ)Arachnidaなどの埋め込み可能なHTTPクライアントを使用して単純なAPIを使用して単純なXMLoverHTTPサービスを定義することです。
class UpdateAgent
{
/* boilerplate */
public :
/* set the key to use. Throws an InvalidKey exception if not valid
* validity is checked locally - no HTTP queries are used.
* Key may have been invalidated on the server without notification
* at this point */
void setKey(const std::string &key);
// Get the key currently set
std::string getKey() const;
/* using a synchronous HTTPS query, check with the server if updates are
* available for the current key. Throws on error: one of the QueryError
* subclasses if there has been a query error, or InvalidKey is the
* key is either not set or is not valid (i.e. invalidated server-side) */
bool isUpdateAvailable() const;
/* etc. */
};
それらのキー自体は、上記のように、そのエンコーディングを通じて、その有効性に関するある種の情報を含む文字列になります。たとえば、入力された文字列が有効かどうかを知るためのある種のCRCです。キーの残りの部分(有効期限を含む)はサーバー側で管理できますが、有効期限情報はキー自体にエンコードすることもできます(ただし、ユーザーがライセンスを延長した場合はキーを変更する必要があります)。
サーバー側に関しては、キーと更新の要求が提示されると、サーバーは
ダウンロードが失敗した場合は、再起動するか、再度要求することができます。個別のダウンロードに対して課金する場合は、クライアントがダウンロードの成功を確認するか、失敗時にエラーを報告する必要があるため、個別のダウンロードを2回カウントすることはありません。
もちろん、これはすべて私の頭のてっぺんから外れています-私がここで考えていなかったいくつかの詳細があるかもしれません。それぞれの材料はとても簡単に手に入ります。ArachnidaのオープンソースバージョンはSourceForgeで入手でき、必要に応じてライセンスキーをエンコードするためのコードがあります(他の製品で使用しています)が、必要がない場合は、それを記述できると確信しています。私を使用してください。
あなたが考えたいと思うかもしれないいくつかのことはあなたのクライアントの安全な認証です-それで彼らはライセンスキーを共有しません-あなたがあなたの更新を世界に公開することになることのないようにあなたのHTTP接続を保護しますほとんどのビルディングブロックはすでに存在するため、クライアントの実装は非常に複雑である必要があります。
HTH
rlc