我们想为我们的产品 (C++) 添加自动更新或更新通知。
更新应该是基于订阅的:
- 用户购买订阅 1 年的更新
- 订阅到期时,不再提供更新。
有人可以建议实施此类服务的软件或提供商吗?
我发现了一些自动更新的例子,但它们在时间上都是无限的。
此服务必须在每个用户的基础上进行限制,并允许扩展。
我们想为我们的产品 (C++) 添加自动更新或更新通知。
更新应该是基于订阅的:
有人可以建议实施此类服务的软件或提供商吗?
我发现了一些自动更新的例子,但它们在时间上都是无限的。
此服务必须在每个用户的基础上进行限制,并允许扩展。
就成分而言,您需要的是:
我的建议是使用可嵌入的 HTTP 客户端(例如(无耻的插件)Arachnida)使用简单的 API 定义一个简单的 XML over HTTP 服务,例如:
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 以了解输入的字符串是否有效。密钥的其余部分 - 包括其到期日期 - 可以在服务器端进行管理,尽管到期信息也可以编码在密钥本身中(但这意味着如果用户延长许可证,则需要更改密钥)。
至于服务器端,当出现密钥和更新请求时,服务器会
如果下载失败,可以重新启动或再次请求。如果您想对单个下载收费,则需要客户端确认下载成功 - 或在失败时报告错误 - 这样您就不会重复计算单个下载。
当然,这一切都在我的脑海中——可能有一些我没有想到的细节。每种成分都很容易获得。SourceForge 上提供了 Arachnida 的开源版本,如果您需要,我有一些代码可以对许可证密钥进行编码(用于我的另一个产品),但我相信如果您不想这样做,您可以编写用我的。
您可能需要考虑的一些事情是对您的客户端进行安全身份验证 - 因此它们不会共享许可证密钥 - 保护您的 HTTP 连接,这样您就不会最终将您的更新发布到世界等。无论是服务器还是客户端需要非常复杂的实现,因为大多数构建块已经存在。
高温高压
rlc