Где мы должны вычислять поля? - PullRequest
0 голосов
/ 15 июня 2011

В настоящее время я работаю в проекте Silverlight / MS SQL, где Entity Framework не был реализован, и я хотел бы знать, как лучше всего работать с вычисляемыми полями в этой конкретной ситуации.

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

1) Принудительно любая внешняя система использует данные через веб-сервис и создает все вычисляемые поля только в объектах.

2) Создайте вычисляемые поля в представлении БД и повторно синхронизируйте ваш объект с сервером каждый раз, когда необходимо вычислить значение.

3) Реплицируйте правила расчета в объекте и представлении базы данных.

Любые другие предложения также приветствуются.

Ответы [ 2 ]

3 голосов
/ 15 июня 2011

Я бы рекомендовал следовать двум принципам: разделение данных и минимальное дублирование функциональности.Оба предложили бы разместить ваши расчеты только в одном месте и обслуживать их уже рассчитанными.Поэтому я бы реализовал расчеты в БД и обслужил их через веб-сервис.

Однако вы должны рассмотреть ваш конкретный случай.Например, если расчеты ОЧЕНЬ тяжелые, вы можете делегировать их клиенту, чтобы сэкономить ресурсы сервера.Это может даже быть причиной того, что вы используете Silverlight.Я нахожусь в похожей ситуации в проекте, и я обнаружил, что лучший компромисс - это передать необработанные данные клиенту и заставить их выполнять сложные вычисления.

1 голос
/ 15 июня 2011

Использование лучших практик или подходов для решения подобных проблем затруднено, так как обстоятельства меняются, и то, что раньше было хорошим подходом, может начать казаться менее полезным.Тем не менее, где это возможно, я буду делать все, что связано с данными на уровне БД, включая вычисляемые поля.Таким образом, вы знаете, независимо от того, где вы смотрите на данные, вы увидите те же результаты.Таким образом, ваш веб-сервис, отчеты SQL и все, что нужно для просмотра или получения данных, увидят тот же результат.

...