Мы сделали что-то похожее для клиента (за исключением того, что нам пришлось сохранять поисковые запросы, а не пользовательские настройки, но применяются те же принципы).У нас также было требование, что « страница посетителя должна быть доступна как постоянная ссылка и может быть перенаправлена на другой vistor для просмотра того же контента » (хотя и не с использованием GUID).
То, что мы в итоге сделали, это просто сохранение пользовательских настроек в строке запроса.В вашем случае, например:
http://website/pageThatYouBuilt.aspx?item1={guid}&item2={guid} //etc
конечно, это в конечном итоге приведет к созданию ginormous URL, так что вы можете поместить направляющие в простой объект DTO
public class State {
public Guid Item1 {get;set;}
public Guid Item2 {get;set;}
}
или даже
public class State {
public List<Guid> Items {get;set;}
}
Затем мы сериализовали этот «объект состояния» в строку.и вставил это в url (querystring).Мы использовали Protobuffer для достижения действительно эффективной сериализации (более короткие URL)
, например:
http://website/pageThatYouBuilt.aspx?state=GhIJgUc9EVb%2bk0cRnRABsX%2bob8UyAA%3d%3d
Когда пользователь посещает вашу страницу, просто возьмите состояние из строки запроса, десериализуйте его изаполнить страницу необходимыми элементами контента.Это также дает то преимущество, что посетители могут делиться своими ссылками с другими пользователями, и они все будут видеть один и тот же материал.
для получения дополнительной информации о protofbuffer, см. http://code.google.com/p/protobuf-net/wiki/GettingStarted
, а неМежду прочим, конкретный вопрос на сайте:)