2012-06-05 3 views
0

Когда я разрабатываю приложение WinForms или WebForms, я создаю решение и добавляю несколько проектов. Проект BOL представляет собой библиотеку классов для бизнес-объектов, есть проект SQL и DAL для связанных с ADO.NET материалов, у меня есть проект Utilities, который содержит классы для таких вещей, как валидация и многое другое. Теперь уровень представления, который я обычно называю графическим интерфейсом, содержит формы. Формы работают непосредственно с BOL, который подключается к SQL, который подключается к DAL и т. Д.Укладка ASP.NET MVC Web Application

Я уверен, что вы все это уже знаете, поэтому я смущаюсь. При работе с MVC проекты, которые я вижу, содержат этот тип функциональности, но все они находятся в одном проекте, просто разделены на папки. Я посмотрел приложение Nerd Dinner, и даже это все в одном проекте. Конечным результатом является одиночная DLL для обработки всего этого. Это хорошая идея, или вы, ребята, разделяете части на разные проекты? Обычно одна DLL должна пройти через другую DLL, прежде чем она сможет достичь типа DLL для доступа к данным. Может быть, я просто запутался во всей концепции.

ответ

2

Вы всегда можете разделить эти логические слои на отдельные физические слои (проекты). Вы можете создать отдельный проект для лиц, один для кода доступа к данным и т.д ..

Вот структура я сделал для одного из моих receny проекта

1) UI: Стандарт MVC проекта с Пользовательский интерфейс. Контроллеры и представления и соответствующие материалы CSS & Скрипты.

2) Объекты: Проект библиотеки классов. Здесь есть объекты моего бизнеса. Это всего лишь POCO, которые представляют мой доменный модальный (я использую это для генерации базы данных CodeFirst).

3) Доступ к данным: Проект библиотеки классов. У меня есть код доступа к данным. Repository, Interfaces и мой класс DBContext.

4) Тест: В этом проекте находятся мои тесты.

Проект пользовательского интерфейса имеет ссылку на мои объекты и проект доступа к данным.

Проект доступа к данным имеет ссылку на мои объекты, потому что мой метод репозитория возвращает объекты.

У меня есть несколько классов ViewModel также в моей папке ViewModels проекта пользовательского интерфейса. Я использую это для некоторых экранов, где я должен показывать данные из нескольких доменных объектов. У меня есть класс сопоставления/службы, который отображает объект домена для просмотра объекта модели. Если ваш проект биф, вы можете сохранить это как серповидный проект под тем же самым решением.

Решение выглядит следующим образом. (Это открытый проект я работаю над)

enter image description here

+0

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

+0

@ user1066133: Добро пожаловать. Рад, что смог помочь. – Shyju