2014-05-03 6 views
0

Я в настоящее время имеют многоуровневую архитектуру, которая выглядит следующим образом:обнажая существующий Service Layer с помощью ASP.NET WebAPI

  1. Service Layer - Это главное взаимодействие с доменом. Содержит все коммерческие правила, валидацию и т. Д.
  2. Слой данных/репозитория - это слой, который обрабатывает всю сохранность данных. Не содержит бизнес-логики или проверки. Содержит в основном Repository<T>, UnitOfWork (EF Specific) и все EF вещи, как DbContext, EntityTypeConfiguration «s и т.д.
  3. Entity Framework
  4. SQL Server

Я использую домен модель анемии, так основной ПОКО-х которые представляют собой проблемную область.

У меня есть пара вопросов об экспонировании через ASP.NET WebApi.

  1. Где находится охрана? В основном такие вещи, как пользователь, имеют доступ к редактированию записи или типу записи. Может ли пользователь выполнить конкретное действие и т. Д. Также, как и аутентификация/авторизация на основе ролей.
  2. Должен ли я использовать WebApi в качестве фактического уровня обслуживания или использовать его для отображения существующего уровня сервиса поверх HTTP в RESTful?
  3. Учитывая основной пример того, как изменить имя категории, где я могу обеспечить, чтобы текущий пользователь имел полномочия изменять указанную запись? Я полагаюсь на Thread.CurrentPrincipal, чтобы получить Identity для проверки заданной роли и установить это в WebApi? Приложение Mvc?

Есть ли хорошие примеры, которые показывают такую ​​ситуацию, о которой я говорю?

BTW - Я использую ASP.NET MVC 5 для обслуживания оболочки приложения (SPA), а затем передним интерфейсом будет все AngularJS.

+0

Обратите внимание, что если вы собираетесь использовать Angularjs и WebApi, вам не нужен ASP.NET MVC5 – Dalorzo

+0

@Dalorzo. Мы используем ASP.NET MVC для обслуживания оболочки приложения и предоставляем шаблонный контроллер. Также используйте кассету для комплектации/минимизации. – Sam

ответ

1

Что касается вашего первого вопроса об уровне безопасности своих услуг должны иметь правильный ответ, что я считаю, что это должно быть принципом во всех приложениях:

услуга должна иметь достаточный уровень безопасности для защиты данных от нежелательные пользователи.

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

WebApi был создан с целью предоставления услуг через Http/Rest, все принципы и функции встроенных были сделаны с этим намерением, так что в отношении вашего второго вопроса и, как вы предполагали, в конце этого это слой обслуживания, но Уровень обслуживания Http/Rest.

WebApi использует атрибут Authorize для обеспечения безопасности, как это обычно бывает с .NET Framework, которую вы можете наследовать от него и расширить его. Вы можете узнать больше об этом here.

И поскольку вы используете Angularjs, и хотя вам понадобится MVC5 для использования WebApi, моя рекомендация заключается в том, что вы не используете бритву MVC или любую другую серверную технологию для рендеринга ваших страниц.

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