Региональные параметры для n-уровневого поиска данных

Мне интересно, какое лучшее место на моих уровнях веб-приложений для пользовательских региональных настроек для форматирования вывода столбца даты из запроса результатов базы данных.

Я могу получить региональные настройки из HttpContext.Request и передать их в виде строки на бизнес-уровень, а затем использовать System.Globalisation на уровне бизнес-объектов для создания объекта DateTimeFormatInfo.

т.е. DateTimeFormatInfo dtfi = CultureInfo.CreateSpecificCulture(cultureString).DateTimeFormat;

Бизнес-уровень извлекает данные из уровня доступа к данным, и с помощью селектора запросов LINQ столбец даты может быть отформатирован с помощью объекта dtfi, указанного выше.

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

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


person matthewbaskey    schedule 10.06.2013    source источник
comment
Да, я бы не стал добавлять его на бизнес-уровень, за исключением того, что бизнес-уровень возвращает анонимный тип, и мне нужно добраться до этого объекта и найти набор строк, а затем строки, которые являются датами, а затем отформатировать их.   -  person matthewbaskey    schedule 12.06.2013


Ответы (1)


Лично я предпочитаю иметь дело со всеми культурными вещами как можно раньше для ввода и как можно позже для вывода, что означает в пользовательском интерфейсе и коде контроллера. Бизнес-уровень должен заниматься только обычным объектом DateTime.

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

person Jason Berkan    schedule 10.06.2013
comment
да, я согласен, просто все методы действия контроллера короткие и лаконичные, и мне придется загрузить новый анонимный тип для форматирования даты в данных, возвращаемых из BizObject. - person matthewbaskey; 11.06.2013