Расположение Business Logic в WCF RIA Service - PullRequest
3 голосов
/ 21 сентября 2011

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

Любая помощь приветствуется

Ответы [ 3 ]

1 голос
/ 21 сентября 2011

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

0 голосов
/ 22 сентября 2011

Идея WCF RIA Services заключалась в том, что ваша бизнес-логика может быть общей как для клиента, так и для сервера. Очевидно, что вы не можете встроить сложные вычисления, но все ваши проверки и правила для бизнес-классов должны быть в метаданных объекта , чтобы они автоматически отображались как на клиенте, так и на сервере.

Самое важное, что следует помнить при выполнении этих типов вычислений, это:

1) Любой код, который вы отправляете клиенту, может быть просмотрен клиентом. 2) Любые вычисления, сделанные на клиенте, могут (потенциально) быть изменены клиентом.

Таким образом, если у вас есть служба заказа и вы рассчитываете сумму заказа только на клиенте, злоумышленник может отправить вам заказ с просчитанной суммой.

0 голосов
/ 22 сентября 2011

Производительность - одно из соображений, но вы также должны учитывать свой IP.Помните, что приложение Silverlight доставляется клиенту, и весь код .Net на клиенте может быть переработан.Да, вы можете скрыть (sp!) Код, но это дополнительный шаг в развертывании.Независимо от того, если ваш IP является ценным, я бы порекомендовал, чтобы сбор данных и проверка выполнялись на клиенте (в любом случае это просто хорошая практика).После того, как работа вернется на сервер, вы можете внедрить / перехватить запрос служб WCF RIA и выполнить «дополнительную» работу.Я задал симлиарный вопрос здесь: ChangeSet Complete

...