Где делать преобразования - часовые пояса, единицы измерения и т. Д. - PullRequest
3 голосов
/ 29 декабря 2008

Где в коде должны выполняться преобразования? клиент, сервер, бизнес или дб?

В настоящее время мы выполняем преобразования часовых поясов и единиц измерения в нашей базе данных, и производительность убивает нас, и мы хотели бы изменить логику. Как вы думаете, где это лучшее место?

Спасибо

Ответы [ 4 ]

5 голосов
/ 29 декабря 2008

Я бы определенно вывел этот код из БД. Вы хотите хранить данные все в общем наборе единиц, когда вы можете. Хранение данных о времени для одной конкретной локали (обычно вашей) является обычным явлением.

Я бы также не включил его в бизнес-уровень, потому что тогда вы столкнетесь с ситуациями, когда вам придется выполнять вычисления, используя времена из разных локалей, и вам понадобится, чтобы они имели одинаковую исходную ссылку. Опять же, вы должны оставить их всех на общей базе, и самое логичное здесь - просто позволить этой базе быть той локалью, в которой вы их храните.

Я думаю, что наиболее логичным является преобразование времени в язык пользователя в самый последний момент, непосредственно перед его отображением. Это делает его надежным на уровне графического интерфейса.

2 голосов
/ 29 декабря 2008

Обычно это выбор клиента / пользовательского интерфейса. но это предпочтение может быть передано на сервер или в бизнес-правила.

Я бы сделал это в клиенте для нормализации данных везде.

EDIT:

Если у вас действительно тонкий клиент и вы не хотите добавлять к нему логику, найдите следующее место, где у вас есть код / ​​правила / и т.д., и добавьте их туда. Найдите самый внешний / клиентский код и добавьте его к нему.

0 голосов
/ 29 декабря 2008

Я не уверен, что вы подразумеваете под "конверсиями". Если вы имеете в виду локализацию, то это традиционно делается на уровне GUI.

0 голосов
/ 29 декабря 2008

Мы пытаемся сделать это «как можно раньше» (в нашем случае это где клиенты подключены) и работать с унифицированными данными сквозной на сервере. Конечно, при отправке обратно данные преобразуются соответствующим образом.

...