2009-09-15 6 views
0

J'ai une application qui stocke chaque rôle d'utilisateur comme une chaîne délimitée par des virgules dans la partie userData du ticket d'authentification de formulaires..net: raccourcir une chaîne, la stocker comme une nouvelle chaîne, et plus tard «réhydrater»

Nous avons rencontré une situation dans laquelle un utilisateur faisait partie de plusieurs rôles, et ces rôles ont tous des noms longs. Il y a un maximum de caractères que vous pouvez mettre dans les données utilisateur, probablement une limitation des cookies. Donc, y a-t-il un moyen économique de raccourcir cette chaîne et de la «réhydrater» plus tard? Malheureusement, la partie userData du ticket est une chaîne - si c'était un objet, je pourrais le stocker comme byte [] et utiliser System.Text.Encoding.Unicode.GetString() plus tard. Je suppose que c'est vraiment une question de pouvoir raccourcir une chaîne, la stocker comme une chaîne, et la réhydrater plus tard sans perdre sa valeur d'origine.

+1

Je ne recommande pas verser de l'eau dans votre programme. –

+0

Ok, alors peut-être que 'décompresser' aurait été un meilleur terme! – ScottE

+0

Comment définissez-vous "low-cost"? – orip

Répondre

4

Que diriez-vous d'utiliser le roleId? Si la configuration est correcte, vous pouvez même les combiner pour former un seul entier contenant tous les rôles.

+0

Ce serait ma réponse, bien que cela affecterait probablement un peu de son autre code. –

+0

+1 Bitwise est très approprié pour cette situation en supposant que les roleid s'excluent mutuellement. – statenjason

+0

Correct, cela affecterait un tas de code. – ScottE

3

Alors, compression de chaîne?

Je commence par regarder System.IO.Compression

http://msdn.microsoft.com/en-us/library/system.io.compression.aspx

+0

Bien que, avec des chaînes courtes, <500 caractères, il sera probablement difficile de trouver un moyen de le compresser, et en fait être un avantage. – CaffGeek

+0

Cela ne semble pas très bon marché. – ScottE

+0

+1, je viens de faire un test arbitraire avec des données de texte de 500 octets à 4096 octets (le maximum dans IE pour la taille des cookies), en utilisant gzip et ensuite base64, et toujours une diminution de la taille de% 10-% 40. Pas mal. – orip

Questions connexes