Как разделить проект MVC на несколько небольших проектов MVC - PullRequest
3 голосов
/ 12 марта 2012

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

Проект состоит из форума, движка блога, обмена сообщениями между пользователями + 4-5 предстоящих модулей.

Я заглянул в блог ScottGu о MVC 2 и нашел что-то, что казалось идеальным:

enter image description here

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

Но в MVC 3 нет очевидного способа использовать Области таким образом, вы знаете, как?

Состояние Я постараюсь добавить переносимые области MVCContrib к своему существующему решению и преобразовать их, и опубликую результаты. Если это сработает, я отмечу это как принятое решение.

Ответы [ 2 ]

3 голосов
/ 12 марта 2012
1 голос
/ 12 марта 2012

Это возможно в MVC3: с: http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects

Right click on the shell project and "Add Area...". Type in the area name. This will create an Areas folder with your area in it. (This is not 100% needed but you do need the "Areas" folder and you can steal the XXXXAreaRegistration class for your application.)

Create a new MVC3 empty project in your solution to match your area. Move the XXXXAreaRegistration.cs file from the shell mvc project to the new project and adjust the namespace as applicable. (Or you can manually create an area registration class, it's a pretty simple class. Just use the Add area template generated one as an example.)

Edit the routes in the AreaRegistration folder as needed.

Delete the folder under the areas folder that the template wizard added.

Modify the web.config of the new project and take out the connection strings and the authentication, membership, profile, rolemanger sections. You will not need to deploy this web.config but the razor intellisense doesn't work without it during dev time.

Delete the global.asax file from the area's project or you will get extra default routes.

Create a virtual directory in the "Areas" folder of the shell project with the name of your area as the alias and point it to your "area" project. You will need to use IIS or IIS Express for this. I use IIS. For IIS Express you can use the appcmd.exe in the IIS Express folder or you can edit the applciationhost.config file.
...