2008-12-29 19 views
3

Où le code doit-il être effectué? client, serveur, entreprise ou db?Où faire Conversions - Fuseaux horaires, unité de mesure, etc.

Actuellement, nous effectuons des conversions de fuseaux horaires et d'unités de mesure dans notre base de données. La performance nous tue et voudrait déplacer la logique. Où pensez-vous que le meilleur emplacement pour cela est?

Merci

Répondre

5

Je voudrais certainement obtenir ce code hors de la base de données. Vous voulez stocker des données dans un ensemble commun d'unités chaque fois que vous le pouvez. Avoir vos données de temps stockées pour un lieu spécifique (généralement le vôtre) est commun. Je ne le mettrais pas non plus dans le niveau métier, car vous rencontrerez alors des situations où vous devrez faire des calculs en utilisant des temps de différentes locales, et vous aurez besoin d'avoir la même référence de départ. Encore une fois, vous devriez les laisser tous à une base commune, et la chose la plus logique ici est de laisser cette base être n'importe quel endroit où vous les stockez.

Je pense que la chose la plus logique à faire est d'avoir le temps converti en paramètres régionaux de l'utilisateur au dernier moment possible, juste avant de l'afficher. Cela le place fermement dans la couche GUI.

+0

Tout à fait d'accord. Assurez-vous également de suivre le fuseau horaire/décalage préféré de l'utilisateur et du membre du personnel pour la conversion à leur heure locale. Je recommande toujours UTC/GMT comme zone de base. – devstuff

+1

Je suis d'accord avec la recommandation UTC/GMT. Avoir une norme peut vraiment aider à intégrer les applications. –

+2

En accord - TOUTES les dates doivent être stockées et transmises sur le réseau en UTC et converties uniquement si nécessaire. J'ai dû maintenir le code une fois où les temps étaient stockés et envoyés avec une variété de fuseaux horaires et c'était un cauchemar pour déterminer les durées et autres. +1 – paxdiablo

2

En général ce sont des choix client/de l'interface utilisateur. mais cette préférence peut être transmise au serveur ou aux règles métier.

Je le ferais dans le client pour normaliser les données partout ailleurs.

EDIT:

Si vous avez un client vraiment mince et ne veulent pas d'ajouter une logique à elle, puis trouver le prochain endroit où vous avez le code/règles/etc et les ajouter là. Trouvez le code le plus externe/côté client et mettez-le avec ça.

0

Nous essayons de les faire "le plus tôt possible" (dans notre cas, c'est là où les clients sont connectés) et de travailler avec des données unifiées de bout en bout sur un serveur. Bien sûr, lors de la réexpédition, les données sont converties de manière appropriée.

0

Je ne suis pas sûr de ce que vous entendez par "conversions". Si vous voulez dire la localisation, cela se fait traditionnellement dans la couche GUI.