2013-07-13 2 views
1

Я буду руководить командой для создания сложного веб-приложения для производства в ASP.NET (веб-формы) в ближайшее время, и ранее наша бизнес-логика была бы в одном проекте или даже хуже , в коде позади страницы.ASP.NET Веб-формы и разделение проблем

Я понимаю, что разделение ответственности имеет важное значение, и делает тестирование гораздо проще (тестирование всегда была проблема у нас), так что это направление мы хотим войти.

Я немного запутался о том, как это можно реализовать, однако мы используем много RadGrid и т. д., которые мы связываем с SqlDataSources. Как такие вещи будут работать со всей бизнес-логикой в ​​другом проекте?

+2

SqlDataSources - это арки-враги изоляции бизнес-логики. Не можете ли вы заменить какой-либо объектный источник данных? Уровень бизнес-логики должен отвечать за получение этих объектов. –

+0

SqlDataSource очень плохо .. –

ответ

1

Вы можете использовать ObjectDataSource вместо SqlDataSource для использования классов в других проектах (т. Е. На другом уровне), но вы по-прежнему будете бороться с тяжелой битвой, используя веб-формы.

Если разделение проблем и тестируемости является серьезной проблемой, я бы настоятельно рекомендовал использовать ASP.NET MVC.

+0

Я хотел бы использовать MVC, но наше приложение, вероятно, будет очень сложным, и мы любим использовать библиотеку Telerik AJAX, а относительно редкая библиотека сторонних элементов управления для MVC - проблема – Chris

+2

@Chris Telerik для MVC - это потрясающе (Kendo UI сейчас). Попробуй это. На самом деле .. Вы оцените это. –

2

Мои советы являются:

  • Если вы можете забыть о SqlDataSources. Если вы используете SqlDataSources, вы все равно сможете изолировать отдельные бизнес-правила, но для приложений, ориентированных на данные, большинство бизнес-правил связаны с редактированием и извлечением данных. Лучший тип источников данных - простые IEnumerables. Большинство элементов управления сеткой будут поддерживать его. Ваши бизнес-правила должны извлекать простые объекты C#, привязанные к элементам управления Grid. ObjectDataSource также является хорошим выбором.
  • Используйте ASP.NET MVC вместо ASP.NET WebForms, если сможете. Преимущество с точки зрения проверяемости и разделения проблем огромно. Вот почему эта технология была создана. Когда вы начинаете новый проект, я настоятельно рекомендую его. На самом деле ASP.NET MVC связан с тем, что объект Controller передает объекты в представление, которые могут отображать их.
1

Другой вариант - сохранить ваши веб-формы, но использовать шаблон MVP. Мы обнаружили, что у него был гораздо более низкий барьер для новых или младших разработчиков, так как это просто просто C# (не нужно изучать Razor или соглашения MVC), и мы обнаружили, что 90% развития могут быть сделаны разработчиками, которые знали абсолютно ничего о веб-разработке (мы в основном абстрагировали использование чего-либо связанного с веб-сайтом, такого как пользователь или профиль, чтобы сделать бизнес-код более многоразовым).

Вам нужно будет покончить с SqlDataSource, но я согласен со всеми, что они тоже злы. В нашей реализации данные будут извлекаться из базы данных и завернуты в POCO DTO, переданы в представление как IEnumerable, а затем привязаны к привязке к коду кода страницы.

Еще одно преимущество MVP в мире предприятия - его способность к изменению. Поскольку представление является глупым, насколько это возможно, его очень просто отключить. Вы можете использовать те же модели и презентаторы, и одновременно иметь представления в Winforms, Silverlight, Webforms и консольном приложении. Реализация представления не влияет на презентатор или модель.

MVC - это новая жара, но с использованием MVC и MVP для крупных корпоративных веб-приложений, где важна ремонтопригодность и надежность, я бы рекомендовал MVP.

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