У меня есть клиент-серверное приложение, написанное на WCF / C # 3.5.
Сервер находится в моем локальном часовом поясе, и клиенты разбросаны по всему миру.
Моя текущая стратегия - использовать UTC DateTime везде на сервере и в базе данных, и позволить клиентам правильно обрабатывать UTC DateTimes, которые они получают.
Это означает, что каждый раз, когда клиент получает сообщение, его первой задачей является преобразование DateTimes, содержащихся в сообщении, из UTC в Local.
Я определил интерфейс, реализованный всеми моими объектами [DataContract], чтобы помочь этой задаче:
public interface IConvertToLocalTime {
void ConvertToLocalTime();
}
Поэтому я обычно обрабатываю сообщение с сервера следующим образом:
public void ServerCallbackFoo(MyObject a, MyObject2 b)
{
a.ConvertToLocalTime();
b.ConvertToLocalTime();
// my business code goes there
}
Это отлично работает, но я не очень доволен тем, что мне нужно вручную вызывать метод преобразования.
Мне кажется, что эта задача должна управляться платформой WCF. Я что-то там упускаю? Есть ли лучший способ автоматизировать преобразование?