Архитектура для нового веб-приложения ASP.NET - PullRequest
5 голосов
/ 21 мая 2010

Я поддерживаю приложение, которое в настоящее время является просто веб-службой (созданной с помощью WCF) и базой данных базы данных. Веб-сервис состоит из слоев с частью доступа к данным linq-to-sql с основными функциональными возможностями в собственной сборке и поверх той сборки веб-сервиса, которая содержит код WCF. Базовая сборка также обрабатывает все правила бизнес-логики (на самом деле очень немногие).

Теперь клиенту нужен веб-интерфейс для приложения, а не просто доступ к нему через другие приложения, которые используют веб-службу. Я совершенно заблудился в дизайне современных веб-приложений, поэтому мне хотелось бы дать несколько советов о том, какую архитектуру и фреймворки использовать для веб-приложения. Веб-приложение будет использовать ту же базовую сборку с бизнес-правилами и слой доступа к данным linq-sql, что и веб-служба.

Вот некоторые концепции, о которых я подумал:

  • ASP.NET MVC (или MVC-2)
  • WebForms
  • Элементы управления AJAX - возможно, предоставляя элементам управления AJAX доступ к существующей веб-службе через JSON.

Есть еще какие-нибудь концепции, на которые я должен обратить внимание? Какой из них лучше для нового проекта?

Средства разработки - Visual Studio 2008 Team Edition для разработчиков, ориентированные на .NET 3.5. Обновление до Visual Studio 2010 Premium (или, может быть, даже Ultimate) возможно, если оно дает какие-либо преимущества.

Ответы [ 5 ]

11 голосов
/ 24 мая 2010

Определенно копаться в ASP.NET MVC2 .

Все наши проекты сейчас разрабатываются с использованием ASP.NET MVC2. Это не просто масштабируемый . Это также тестируемый . Что приводит к лучшему обслуживанию приложений в долгосрочной перспективе.

WebForms против MVC2 очков - (говорит на собственном опыте):

Масштабируемость:

В нашей компании было много приложений, использующих веб-формы, которые затем обновлялись и менялись по мере необходимости нашими клиентами.

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

А с появлением Cloud Computing и платформой Windows Azure вам, вероятно, придется идти в ногу со своим кодом.

ASP.NET MVC полностью поддерживает концепцию возможности масштабирования вашего приложения в любое время.

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

Это не было большой проблемой при настройке этой функции. (заняло около 2 часов, включая написание тестов) - перейдем к тестам:


Тестируемость:

Используя WebForms, у нас не было особого интереса к написанию тестов, потому что это было просто больно. Я помню, как писал несколько тестов, чтобы иметь хоть какие-то доказательства, но давайте отбросим эту тему .. (: p)

У нас были тесты для наших пользовательских классов, но мы не могли действительно протестировать все EventHandlers в WebForms.

Благодаря этой тестируемой среде наша CodeBase удобнее и безопаснее в использовании. Я просто проверяю некоторый код, модифицирую его, запускаю все тесты и: О, он сломался из-за странного поведения! - Давайте исправим это снова. Ранее я помню, как сидел с отладчиком и пытался найти эти ошибки часами.

С ASP.NET MVC2 нам не хватает тестов! Мы просим всех людей (даже не веб-пользователей) предоставить тестовые наборы, которые мы могли бы добавить в наш TestSuite .

И да, есть и некоторые AJAX-элементы управления:


AJAXability:

Вы спрашивали об элементах управления AJAX, и в связи с ASP.NET MVC я настоятельно рекомендую вам проверить Telerik ASP.NET MVC UI Controls .

Если это не для вас, мы также широко используем jQuery и jQuery UI

С ASP.NET MVC и представлениями HTML эти библиотеки не просто приятно использовать, они просто потрясающе выглядят.

Больше нет random-html-tag-id-value автогенерации!

Но что мне больше всего нравится, так это то, что вы, наконец, действительно можете снова использовать свой код.


В этих рамках гораздо больше, чем просто система шаблонов T4. Авто-леса для ViewModels / DomainModels с методом Html.EditorFor() и, конечно, есть отличный и простой способ использования IoC и DI парадигмы.

Предполагая, что вы задали вопрос, главным образом, с тегами, связанными с .NET Framework, вы, вероятно, будете придерживаться его.

Просто, чтобы сохранить пост завершенным, есть и другие фреймворки, которые так же хороши (или даже лучше):

И многое, многое другое!

1 голос
/ 21 мая 2010

Также есть DynamicData , что может быть целесообразно, если вам нужен простой CRUD-доступ к вашим данным.

0 голосов
/ 27 мая 2010

Я бы тоже порекомендовал заглянуть в Silverlight.

http://www.silverlight.net/learn/

0 голосов
/ 25 мая 2010

Web Service Software Factory (WSSF) может пригодиться в вашей ситуации.

Это позволит вам определять ваши контракты (возвращаемая сущность XML (если вы выберете XML) и т. Д.) При проектировании взаимодействия сервер / клиент с использованием WCF (или стандартного протокола связи веб-службы).

WSSF одобряет либо ASP.NET MVC, либо ASP.NET MVP. Простой пример архитектуры MVP показан здесь , плюс , эта статья .

Что касается меня, я часто бываю с гибридной архитектурой, использующей немного как MVC, так и MVP, так как оба имеют разные сильные стороны, которые в совокупности заполняют точки улучшения друг друга.

0 голосов
/ 21 мая 2010

Только мое мнение об использовании MVC на клиентских сайтах и ​​веб-формах внутри страниц администрирования (сайта)

...