Разработка веб-платформы с модулями с использованием EF 4.3 - PullRequest
3 голосов
/ 09 марта 2012

Я пытаюсь построить веб-платформу (король CMS), используя EF 4.3 с миграциями.Поэтому я хочу отделить всю свою работу от других проектов, таких как интернет-магазин, информационный бюллетень, блог и т. Д .;в отдельные проекты ClassLibrary, содержащие модели (возможно, создайте несколько пакетов NuGet позже).И я надеялся, что смогу интегрировать их в свой пользовательский шаблон mvc3, а затем использовать некоторые расширенные леса для своих контроллеров и представлений.

Итак, сначала у меня есть пользовательский шаблон MVC3, в котором есть проект ClassLibrary, содержащий мою модель аутентификации (некоторыерепозитории и некоторые пользовательские поставщики с двумя объектами Entity Framework: User и Role с использованием «BaseDataContext»).Во-вторых, у меня есть еще один проект ClassLibrary под названием Blog, который содержит модель для моего блога (все POCO EF, некоторые репозитории и «BlogDataContext»). Я также использую IoC.

Первая проблема, с которой я столкнулся, была CircularDependecy, яМне нужна ссылка из моего блога на мой шаблон и одна ссылка из моего шаблона обратно в мой блог, если я хочу, чтобы мой Blog.Author наследовал от моего Template.User и моего POCO пользователя, чтобы содержать ссылку на моего Автора.Я знаю, что аутентификация и модель блога находятся на одном и том же «уровне» и должны находиться в одной библиотеке классов, но при этом следует учитывать тот факт, что многие другие библиотеки должны быть добавлены позднее (как, например, библиотека «бюллетень новостей»)Я не могу выделить сущности в одну библиотеку.Вторая проблема, о которой я думаю, - это использование нескольких DataContexts, но это уже другая тема.

Итак, мой вопрос не очень конкретен.Это скорее вопрос архитектурного дизайна.Что я пытаюсь достичь, даже возможно?Или это безопасно, чтобы попытаться найти обходной путь проблемы CircularDependency?Если нет, то как мне спроектировать «CMS» или как упростить повторное использование моей работы.(Функция миграции показалась интересной, если, например, у вас есть работающий интернет-магазин и клиент запрашивает добавление блога)

Заранее спасибо.

1 Ответ

1 голос
/ 26 марта 2012

Я хотел бы изучить разделение всего вашего проекта, сделать все логические единицы (единый вход, cms, e-comm, отчеты и т. Д.) Независимыми друг от друга и выяснить, как взаимодействовать между ними с минимальным объемом данных. возможный. Например, вы можете передать GUID аутентифицированного пользователя в CMS вместо всего объекта User. Как только вы это поймете, используя WCF и WF , вы можете организовать упомянутые коммуникации, создать рабочие процессы и т. Д. Самое большое преимущество, которое вы получите, - ваша платформа будет подключаемой и масштабируемой, а также добавлять или удалять компоненты в зависимости от ваших потребностей или добавлять и удалять ресурсы в зависимости от вашей нагрузки.

...