Моя команда и я получили финансирование для начала разработки веб-приложения корпоративного уровня (не буду вдаваться в подробности того, что оно делает). В приложении будет много отдельных веб-страниц, но две из них будут более сфокусированными и очень тяжелыми - тяжелыми, как при большом количестве взаимодействия с пользователем, модальными окнами, отображающими массовые данные, соединениями через веб-сокеты, чатом и т.
Меня назначили главным архитектором проекта, поэтому я занимаюсь некоторыми исследованиями последних веб-фреймворков. Что касается серверной части, мы провели некоторое тестирование и решили использовать платформу Azure SQL. Пока что мне нравятся улучшения, которые были внесены и вносятся в ASP.NET с Core 2.0. В частности, движок Razor по сравнению с предыдущими версиями ASP.NET MVC.
Я хотел узнать мнение экспертов о «новой» Razor против Angular / React и тому подобном. Меня особенно больше беспокоит производительность. Насколько Core 2.0 Razor соответствует фреймворкам рендеринга на стороне клиента? Различия незначительны? Наше приложение нацелено на 1 000 000 потенциальных пользователей (примерно 100 000 одновременно).
Заранее спасибо!
Ответы:
В итоге мы выбрали интерфейс Angular и серверную часть API ASP.NET Core с использованием Azure SQL. Мы протестировали Core Razor, и, хотя и лучше, чем предыдущая версия Razor, Angular в итоге оказался для нас намного быстрее. Что касается взаимодействия с пользователем, Angular (или React) намного превосходит по производительности. Аспекты привязки к модели Angular, которые мы обнаружили, являются огромным преимуществом серверного рендеринга. Однако использование Razor (или рендеринга на стороне сервера в целом), тем не менее, обеспечивает лучшую общую целостность данных и способствует лучшему переходу данных от внешнего интерфейса к внутреннему. Между интерфейсной структурой и API существует настоящая пропасть. Все данные, которые передаются на сервер, должны быть преобразованы в типизированные объекты - это означает, что вам нужно управлять двумя отдельными наборами моделей POCO. Это может вызвать проблемы, если объекты сервера и объекты интерфейса не совпадают. На данный момент Entity Framework Core не очень развит, поэтому у нас есть проблемы с обновлением объектов, запросами объектов, включая дочерние объекты и т. Д.
В целом, эта установка пока работает для нас отлично! Я бы предположил, что React будет похожей заменой Angular, если вам это удобнее. Мне пришлось изучить Angular, это был очень простой переход, и теперь мне он нравится!
источник
Используя Angular / React с API на стороне сервера:
Но используя Angular / React, вы должны беспокоиться о клиентах:
источник
У меня нет тестов. Но у меня есть несколько проектов под управлением JQuery, Razor, .NET MVC (C #), AJAX. Не в том масштабе, за который вы беретесь.
Совет .. Обязательно все продумайте и следуйте лучшим практикам. Чтобы поддерживать удобство обслуживания, не забудьте разбить контроллеры, представления, модели на более мелкие и значимые группы. Когда я начал, я совершил ошибку, поместив все в один домашний контроллер и множество представлений в общей папке. Сначала все было хорошо, но когда началось расползание функций, это превратилось в беспорядок, и было трудно вернуться и изменить дизайн.
Я также использую Linq2SQL. Я совершил ошибку, создав модели для всего, а затем понял, что могу просто вернуть набор результатов из моих запросов в качестве модели. ага.
Если вы используете .NET MVC и беспокоитесь о производительности, вот с чем я столкнулся:
НЕ возвращайте частичные представления, которые создают большие блоки HTML! Обязательно все свести к минимуму. Избавьтесь от всего белого пространства. Используйте меньшие имена ID. Найдите время, чтобы создать как можно более легкий HTML-код. Верните JSON и попросите клиента выполнить часть работы.
Будьте осторожны при разработке CSS. Не используйте кучу встроенных стилей, найдите время, чтобы включить их в файлы CSS, которые впоследствии можно будет минимизировать.
То же самое касается JS на стороне клиента. Заманчиво поместить JS в частичные представления. Держите вещи организованными.
Рендеринг в IE ужасен. Особенно, если изображений много. Обязательно сжимайте изображения как можно сильнее, конечно без потери качества.
источник