Как создать хороший идентификатор в документах ATOM? - PullRequest
22 голосов
/ 30 сентября 2008

Видимо, использование URL не годится - почему это так, и как создать хороший?

Ответы [ 2 ]

29 голосов
/ 30 сентября 2008

Статья Марка Пилигрима Как сделать хорошее удостоверение личности в Атоме - это хорошо. Вот часть этого:

Почему вы не должны использовать постоянную ссылку в качестве идентификатора атома

Допустимо использовать постоянную ссылку URL как ваш , но я не одобряю это потому что это может создать путаницу какой элемент должен рассматриваться как Постоянная ссылка. Разработчики, которые не читают спецификации будут смотреть на ваш канал Atom, и они видят два одинаковых кусочка информация, и они выбирают один и используют это как постоянная ссылка, а некоторые из них выберет неправильно. Затем они идут в другой канал, где два элемента не идентичны, и они получают запутался.

В Atom есть всегда постоянная ссылка на запись. всегда является уникальным идентификатором Вход. Оба требуются, но они служить разным целям. ID записи никогда не должен меняться, даже если Постоянная ссылка изменяется.

«Постоянная ссылка меняет»? Да, постоянные ссылки не так постоянны, как вы могли бы считать. Вот пример, который произошел мне. URL моей постоянной ссылки были автоматически генерируется из заголовка моей записи, но потом я обновил запись и изменил название. Угадай что, «постоянная» ссылка просто изменилось! Если вы умны, вы можете использовать HTTP перенаправление для перенаправления посетителей от старой постоянной ссылки к новой (и я сделал). Но вы не можете перенаправить ID.

Идентификатор записи Atom никогда не должен менять! В идеале вы должны генерировать идентификатор записи один раз и сохраните ее где-то. Если вы автоматически генерируете это раз за разом из данных, которые меняется со временем, затем идентификатор записи изменится, что побеждает цель.

2 голосов
/ 30 сентября 2008

Используйте GUID для идентификатора.

зависит от того, какой язык вы используете, но вы можете использовать

System.Guid для .NET.

...