ASP.NET Core 2.0 Бритви проти кутових / Реагувати / тощо


101

Ми з моєю командою отримали фінансування, щоб розпочати розробку веб-додатків на рівні підприємства (не будемо деталізувати, що це робить). У додатку буде багато окремих веб-сторінок, але дві з цих сторінок більш цілеспрямовані та дуже важкі - важкі, як і в умовах багато взаємодії з користувачами, модалі, які відображають масові дані, підключення до веб-сокетів, чат тощо.

Мене призначили головним архітектором проекту, тому я займаюся деякими дослідженнями останніх веб-рамок. Для заднього кінця ми провели кілька тестувань і вирішили перейти з платформою Azure SQL. Поки що мені подобаються вдосконалення, які були внесені та які вносяться до ASP.NET із Core 2.0. Зокрема двигун Razor, порівняно з попередніми версіями ASP.NET MVC.

Я хотів отримати декілька експертних висновків щодо "нового" Бритва проти Кутового / Реагування тощо. Я особливо більше переймаюся продуктивністю. Як Core 2.0 Razor підтримує рамки візуалізації на стороні клієнта? Чи різниці незначні? Наш додаток орієнтовано на потенційних 1 000 000 користувачів (приблизно 100 000 одночасно).

Спасибі заздалегідь!


4
Під " новою бритвою " ви маєте на увазі сторінки Razor?
Вернер

36
Отже, кого ви вибрали врешті-решт і як це відбувається?
stt106

5
Як ви продовжували (або ви продовжуєте) працювати з цим проектом? Зараз я перебуваю у майже однаковій для вас ситуації, і я б хотів оновити!
JLo

10
Привіт JLo та stt106. Вибачте, щоб відповісти так довго. Ми закінчилися з кутовим фронтальним процесом та ASP.NET Core API, використовуючи Azure SQL. На сьогодні це для нас чудово вийшло! Я думаю, що React буде подібною заміною Angular, якщо вам це зручніше. Мені довелося вивчити Angular, який був дуже легким переходом, і я це зараз люблю!
TchPowDog

Порівняння швидкості ASP.Net Core проти Angular / React є поза темою? На це можуть бути канонічні відповіді. Щодо сьогодні у нас є Core 2.2 і незабаром 3.0.
MikroDel

Відповіді:


74

Ми закінчилися з кутовим фронтальним процесом та ASP.NET Core API, використовуючи Azure SQL. Ми протестували Core Razor, і, хоча краще, ніж старі Razor, Angular виявився нам набагато швидшим. Що стосується досвіду користувачів, Angular (або React) набагато перевершує з точки зору продуктивності. Аспекти кутового зв’язування моделі ми виявили гігантською перевагою серверного візуалізації. Однак, використовуючи Razor (або загальну візуалізацію на сервері взагалі), все-таки надається краща загальна цілісність, що стосується даних, і це сприяє кращому переходу даних з переднього на задній. Існує справжній розрив між фронтальним фреймворком та API. Усі дані, передані на сервер, повинні бути введені в набрані об'єкти - це означає, що вам потрібно керувати двома окремими наборами моделей POCO. Це може спричинити проблеми, якщо об’єкти сервера та об'єкти, що перебувають на передньому рівні, не вирівнюються. Наразі Entity Framework Core не дуже зрілий, тому у нас виникають проблеми з оновленням об'єктів, запитами об'єктів, включаючи дочірні об’єкти тощо.

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


5
Що стосується збереження двох наборів моделей POCO синхронізувати, є дійсно корисне розширення для VS, яке створює кутові інтерфейси з моделей MVC, ознайомтеся з машинописом
Енді Брахам

ну особисто, якби мені довелося їхати з Angular, я б використовував NoSql для частини БД.
Вензенткс

2
Я не уявляю, як вибрати бритву ASP.NET над кутовою. Раніше ASP.NET давав деякий звичний код для розробників .NET, але при RAZOR крива навчання вище, ніж за допомогою Angular. MVC розбиває логіку з HTML.
Марк

1
@ Марк Я не вірю в це. Сторінки Razor ідеально підходять саме тому, як вони обробляють прив'язку даних. Вони просто занадто Гуд. Але джерело для його сценарію кутовий ідеально підходить.
Мосія Табо

2
@MosiaThabo, Марк не говорить про сторінки Razor, він говорить про Razor. На що йдеться про мій ОП. У своєму первісному дописі я не мав на увазі Сторінки Razor (або зараз я називаюся Blazor). Я спеціально говорив про рендеринг на стороні клієнта проти надання сервера. Razor Pages - це аромат Microsoft Angular / React, який, на мою думку, вони вважають необхідним через переваги, які ви маєте у Angular та React.
TchPowDog

49

Використовуючи Angular / React з API на стороні сервера:

  • ви виключаєте процес генерації HTML на стороні сервера і заощаджуєте процесор
  • api виробляє невелику корисну навантаження (json), а Razor (html) курсу буде набагато більшим за розміром, постійним перезавантаженням повних сторінок та зворотним переїздом. тому api та spa економлять пропускну здатність
  • api та spa можуть мати різні варіанти версій, масштабування та розгортання
  • Використовуючи api, ви також можете підтримувати мобільний додаток, і якщо ви почнете роботу з Razor, можливо, в майбутньому api може знадобитися

Але використовуючи Angular / React, ви повинні турбуватися про клієнтів:

  • клієнт повинен включити JavaScript
  • клієнт повинен мати сучасні браузери
  • клієнт повинен мати достатньо потужне обладнання
  • SEO

1
Я розумію відмінності в двох рамках, мене більше хвилювало продуктивність.
TchPowDog

Для обох сторінок існують однакові трубопроводи, але я не знаю, що для сторінок бритви існує тест. це посилання може допомогти - Сторінки бритви ASP.NET проти MVC: Як сторінки Razor вміщуються у вашій панелі інструментів?
Mohsen Esmailpour

1
Razor підтримує мобільний, недоліки насправді не мають значення, що перелічені. Обидва швидко по-своєму. Я віддаю перевагу Angular, але обидва оптимізовані. Razor оптимізує код, не використовуючи дерево, як MVC. Angular є клієнтською стороною, тому він насправді не використовує дерево, але також оптимізує дані в HTML.
Нік Тернер

@ NickTurner Я розумів це як не просто перегляд веб-сторінки на своєму смартфоні, а повноцінний власний додаток. Наприклад, додаток для Android, яке може отримати дані з незмінного API сервера таким, як є, а з іншого боку, використовуючи функціональність, яку забезпечує Android - краща підтримка анімації, сповіщення, тост-повідомлення тощо
Рафаель Шмітц,

23

У мене немає орієнтирів. Але, у мене є кілька проектів, що працюють на JQuery, Razor, .NET MVC (C #), AJAX. Не в масштабі, з яким ти вирішуєшся.

Порада. Обов’язково продумайте справи та дотримуйтесь найкращих практик. Щоб зберегти речей речі, не забудьте розбити контролери, погляди, моделювати на менші та значущі групи. Коли я почав, я помилився, вклавши все в один контролер Home, і в топі перегляду в загальній папці. Спочатку було добре, але коли почалося повзування, стало безлад і важко повернутися назад і переробити дизайн.

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

Якщо ви переходите на .NET MVC і піклуєтесь про продуктивність, це такі речі, на які я натрапив:

НЕ повертайте часткові представлення, які створюють великі блоки HTML! Не забудьте все звести до мінімуму. Позбавтеся від усього білого простору. Використовуйте менші імена ідентифікаторів. Знайдіть час, щоб створити максимально легкий html. Поверніть JSON і запропонуйте клієнту виконати деяку роботу.

Будьте уважні до того, як розробляєте свій CSS. Не використовуйте купу стилів вбудованих файлів, знайдіть час, щоб включити у файли CSS, які згодом ви можете мінімізувати.

Те саме стосується і вашого клієнта JS. Заманливо розміщувати СВ всередині часткових поглядів. Будьте організовані.

Візуалізація на IE - жахлива. Особливо, якщо зображень багато. Обов’язково стискайте зображення максимально, не втрачаючи при цьому якості.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.