당신이 필요로하는 것이 무엇, 재료의 측면에서, 다음과 같습니다
- 방법을 업데이트를 다운로드 - 나는 라이센스를 인코딩하는
- 하는 방법에 대한 HTTP (S)를 제안 포함한 것 어떤 종류의 업데이트를받을 수 있으며 얼마나 오래 업데이트 할 수 있습니다. 이상적으로 이것은 사용자에게는 불투명하지만 양쪽에서 쉽게 확인할 수 있습니다 (따라서 서버에 연결할 필요없이 잘못된 항목을 사용자에게 알릴 수 있음)
- 업데이트 사용 가능 여부를 쉽게 알 수 있고 확인을 다시
나는 그런 간단한 API와 (뻔뻔한 플러그) Arachnida로, 임베디드 HTTP 클라이언트를 사용하여 HTTP 서비스를 통해 간단한 XML을 정의하는 것입니다 제안 무엇 - 같은 :
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의 일종. 만료 정보가 키 자체에 인코딩 될 수 있지만 (사용자가 라이센스를 연장하면 키를 변경한다는 의미 일 수도 있지만) 만료 날짜를 포함하여 나머지 키는 서버 측에서 관리 할 수 있습니다. 키와 갱신에 대한 요청되게 서버 측,에 관해서는
, 서버 것
- 검사 업데이트는 소프트웨어를 사용할 수 있는지 여부를 키
- 검사의 타당성 키를위한 것입니다 (데이터베이스에서 키를 관리 할 것인지 또는 라이센스 키의 일부로 만들 것인지에 따라 키 자체에 포함되거나 포함되지 않을 수있는 정보)
- 파일을 고유하고 추측하기 힘든 이름으로 다운로드 할 수있는 곳
- 은 클라이언트에 다운로드 할 URL을 제공합니다 (예 :HTTP 요청에 대해 반환 된 XML 스트림
- N 초/분/시간 동안 파일을 다운로드하지 않은 후 파일을 제거하려면 시간 제한을 시작하십시오.
- 클라이언트에서 파일을 다운로드 한 후 제거하십시오.
다운로드가 실패하면 다시 시작하거나 다시 요청할 수 있습니다. 개별 다운로드에 대해 요금을 청구하려는 경우 클라이언트가 다운로드 성공을 확인하거나 실패시 오류를보고해야하므로 개별 다운로드를 두 번 계산하지 않아도됩니다.
물론이 모든 것이 내 머리 꼭대기에서 떨어져 있습니다. 여기에서 생각하지 못한 세부 사항이있을 수 있습니다. 각 재료는 매우 쉽게 먹을 수 있습니다. Arachnida의 오픈 소스 버전은 available on SourceForge이며 필요에 따라 라이센스 키를 인코딩하는 몇 가지 코드가 있습니다 (내 제품의 다른 용도로 사용).하지만 광산을 사용하고 싶지 않으면 라이센스 키를 작성할 수 있습니다. .
당신이 생각하고 싶은 몇 가지 사항은 클라이언트의 보안 인증입니다. 따라서 클라이언트는 라이센스 키를 공유하지 않으므로 HTTP 연결을 보호하므로 업데이트를 전세계에 게시하지 않게됩니다. 대부분의 빌딩 블록이 이미 존재하므로 서버 또는 클라이언트를 구현하는 데 매우 복잡 할 필요가 있습니다.
HTH
RLC
출처
2011-03-24 01:09:36
rlc
어떤 플랫폼 (사용자가 업데이트를 지불해야하기 때문에 내가 Windows를 생각하지만, 내가 잘못 될 수있다) 당신이 어떤 라이센스를 원하는가? 또한 구현하기가 매우 쉽습니다. –
죄송합니다. 언급하지 않았습니다. Windows입니다. 나는 예제 구현을 찾고있다. –