0

У меня есть служба данных WCF, которая предоставляет мою модель данных. Защита данных/фильтрация и бизнес-правила применяются с использованием перехватчиков запросов и операций обслуживания на основе текущего пользователя в cookie Forms Authentication.Правильный способ доступа к данным на веб-страницах ASP.NET?

Служба данных используется для управления элементами AJAX на некоторых страницах и может также использоваться мобильным приложением в какой-то момент.

У меня также есть несколько не-AJAX MVC-представлений, которые должны отображать и редактировать одни и те же данные. Если бы я должен был использовать Entity Framework непосредственно в контроллерах, мне нужно было бы переопределить любую соответствующую фильтрацию данных для зарегистрированного пользователя. Правильный ли подход заключается в том, что локальная служба данных запрашивает локальную службу в одном приложении?

ответ

0

Моей рекомендацией было бы реорганизовать ваш слой DataFiltering таким образом, чтобы его можно было использовать в обоих случаях (т. Е. Существующие WCFDS и непосредственно в EF), вытащив его в свой отдельный модуль с оберткой, чтобы абстрагировать детали из которых используется метод аутентификации (FormsAuthentication или пользователь LoggedIn). Это имеет немного более высокие затраты на реализацию, но, безусловно, намного эффективнее, чем повторное запрос одного и того же приложения (и впоследствии сэкономит вам некоторую стоимость, если в будущем вам понадобится реализовать другой модуль).

+0

Если я это сделаю, не потеряю ли я способность выполнять расширенные операции LINQ на возвращаемых объектах? В настоящее время я могу использовать LINQ или ODATA для выполнения каких-либо операций в WCFDS. Как насчет обновлений? Должен ли я писать отдельные функции для каждой возможной операции обновления/вставки, которую я мог бы выполнить? В настоящее время я использую EF в режиме базы данных. Если я переключусь на первый режим кода, я смогу выполнить фильтрацию в классах сущностей? Если это так, то он сохранит полный набор функций LINQ и возможность вставки/обновления. – Monstieur

+0

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

+0

Это приведет к тому, что люди, работающие в разных частях сайта, забудут фильтровать данные или скопировать собственную фильтрацию вместо вызова общих функций фильтрации. Я хочу, чтобы любые средства доступа к данным были уже отфильтрованы (т. Е. DbContext или WCFDS, если требуется) – Monstieur

Смежные вопросы