Портирование Rhino Security на Entity Framework — почему его еще нет?

Я использую (Code First) Entity Framework 4.3 для проекта ASP.NET MVC и хотел реализовать детализированные функции авторизации на основе разрешений, предоставляемые Rhino Security.

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

  1. Такая структура разрешений не является обычным требованием в проектах, поэтому она не так известна.
  2. Entity Framework не так эффективен и поэтому не так вездесущ, как NHibernate.
  3. Репозиторий Rhino настолько тесно связан с NHibernate, что его невозможно просто перенести на EF.

Самое главное, если я действительно настаиваю на использовании его с EF, и если вы скажете мне, что это невозможно, не могли бы вы помочь мне понять, почему. И если ваш ответ ДА, не могли бы вы мне помочь? с КАК ЭТО СДЕЛАТЬ


ДРУГИЕ ИДЕИ, пожалуйста

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

Поскольку я новичок как в Entity Framework, так и в MVC, есть ли что-то, что я упускаю из виду. Так что, пожалуйста, помогите мне все ГЕНИУСЫ там.

Любые идеи, как начать?


person WiseGuy    schedule 20.03.2012    source источник


Ответы (2)


Мое мнение:

Его нельзя портировать напрямую. Rhino-Security следует концепции отделения (абстрагирования) безопасности от модели предметной области. Это разделение осуществляется через интерфейс IUser. Реализация интерфейса IUser в вашем классе User будет единственной связью между вашей моделью предметной области и инфраструктурой безопасности, предоставляемой фреймворком. Вот в чем проблема. В настоящее время EF не поддерживает интерфейсы, поэтому вы не можете использовать интерфейс вместо реального типа сущности в сопоставлении и не можете использовать интерфейс вместо реального типа сущности в качестве свойства навигации в своих сущностях. Из-за этого Rhino-Security нельзя портировать на EF, не нанеся вреда его основной идее — вам придется создать User объект непосредственно в портированной библиотеке безопасности, и все приложения должны будут зависеть от этой User реализации.

person Ladislav Mrnka    schedule 20.03.2012
comment
Итак, если я решу согласиться с идеей соединения Security Framework с моделью путем создания пользовательского объекта, какие еще проблемы вы заметите? И как мне начать с него? - person WiseGuy; 20.03.2012
comment
И какие важные моменты я должен иметь в виду, особенно учитывая последствия для производительности. - person WiseGuy; 20.03.2012
comment
Это вопросы, на которые нельзя легко ответить, не пытаясь сделать порт - вам придется найти ответ самостоятельно. Я не стал углубляться в реализацию. Я знаю только основы. - person Ladislav Mrnka; 20.03.2012

Я бы сказал третий ответ:

Репозиторий Rhino настолько тесно связан с NHibernate, что его невозможно просто перенести на EF.

Я не уверен, в чем причина этого, но я уверен, что это тесно связано с NHibernate (или с Castle Active Record, основанным на NHibernate).

person themarcuz    schedule 20.03.2012