Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Миграция проекта с ASP.NET Web Forms на Blazor

1814  1 2 3 все
alex445 коренной житель27.03.22 18:02
27.03.22 18:02 

Нашёл такие ресурсы по миграции


Blazor for ASP.NET Web Forms Developers | Microsoft Docs

From Web Forms to Blazor - Introducing the Blazor Web Forms Components - YouTube


Что понял, что если на веб-формах было изначально написано модульно, то по сути надо только перенести UI-часть и немного обновить модули (возможно, там старые версии фреймворка и доступа к данным использовались), ну и добавить немного конфигураций для Blazor-проекта для подключения этих модулей. Как я понял, в Blazor всё делается через dependency injection, включая внедрение того же доступа к БД через модель БД, созданную, например, через Entity Framework.


UI-часть придётся переписывать страница за страницей вручную... Ну или есть разные типа конвертеры, но за ними всё перепроверять нужно. Особенно разные кастомные компоненты на веб-формах нужно будет в любом случае заново написать на Blazor. А ещё некоторые стандартные из веб-форм контролы не имеют прямых аналогов в HTML - тоже придётся делать замены. Т.е. это всё нужно в ручном режиме проработать.


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


Итого миграция ASP.NET Web Forms to Blazor - это переписывание значительной части или всего приложения. Почти как новый проект по спецификации написать сразу на Blazor. Так?

#1 
AlexNek патриот28.03.22 12:49
AlexNek
NEW 28.03.22 12:49 
в ответ alex445 27.03.22 18:02
Почти как новый проект по спецификации написать сразу на Blazor. Так?

Скорее всего так. Еще и + .Коре

Но получится гораздо проще и удобнее. Проблема только UI найти подходящую

https://antblazor.com/en-US/

https://blazor.radzen.com

https://blazorise.com/

Ну и где хостить тоже проблема.

Если есть еще логин и "по-старому", то ой

#2 
alex445 коренной житель28.03.22 17:48
NEW 28.03.22 17:48 
в ответ AlexNek 28.03.22 12:49, Последний раз изменено 28.03.22 17:49 (alex445)

Я server-side предложу вариант, а не веб-ассембли на клиенте.


А что с логином? В веб формах какой-то замшелый вариант используется, который на Blazor не натягивается?


И почему Коре? Там же вовсю уже .NET 5 и 6 используются?

#3 
AlexNek патриот28.03.22 17:58
AlexNek
NEW 28.03.22 17:58 
в ответ alex445 28.03.22 17:48
Я server-side предложу вариант, а не веб-ассембли на клиенте.

У каждого есть свои недостатки. У серверного только необходимость обновления signalR сессии. На "своем" сервере особых проблем не замечал.

А вот на Azure не всегда пересоединяется хорошо.


И почему Коре?

Пока не встречал блазора без него. Да и взаимодействие с JS без .NET 5 не очень приятно


А что с логином?

надо просто смотреть. "Из коробки" будет немного по другому.

#4 
alex445 коренной житель29.03.22 12:58
NEW 29.03.22 12:58 
в ответ AlexNek 28.03.22 17:58, Последний раз изменено 29.03.22 12:59 (alex445)

Ещё, как я выяснил, проект, похоже, на старой версии фреймворка работает - вообще 2.0 или что-то такое (проект в 2002 года идёт, и неизвестно пока, до какой версии они всё обновляли). Т.е. даже если там модульно что-то написано, нужно будет весь код обновить до той версии, на которой новое приложение будешь писать... Или как-то можно заставить код .NET 2.0 заставить работать в среде 5.0 (без обмена всякими джейсонами и тому подобное "интероперабилити")?


Ну и если там база данных кундов, то придётся новую систему авторизации-аутентификации на базе этой БД делать?

#5 
alex445 коренной житель29.03.22 14:44
NEW 29.03.22 14:44 
в ответ AlexNek 28.03.22 17:58

А вы можете напомнить, почему вы отказались от Blazor, от какой конкретно версии Blazor (серверной с SignalR или клинетской с WebAssembly), и на что перешли в итоге? Есть ли планы по возврату, если Blazor "починят"?

#6 
AlexNek патриот29.03.22 17:31
AlexNek
NEW 29.03.22 17:31 
в ответ alex445 29.03.22 12:58
похоже, на старой версии фреймворка работает - вообще 2.0

тогда надо забыть о старом коде. Еще придется попотеть чтобы его запустить


то придётся новую систему авторизации-аутентификации

Нужно вначале узнать что там сделано

#7 
AlexNek патриот29.03.22 17:33
AlexNek
NEW 29.03.22 17:33 
в ответ alex445 29.03.22 14:44

Нам нужно было PWA, а это WebAssembly. Долгая первая загрузка, нет шифрования и некоторые вещи работают медленно.

Взяли angular.

#8 
alex445 коренной житель29.03.22 18:04
NEW 29.03.22 18:04 
в ответ AlexNek 29.03.22 17:33, Последний раз изменено 29.03.22 18:04 (alex445)

PWA полностью standalone, или как-то общается с сервером? Если да, то общается независимо от сервисов на стороне сервера (через тот же REST, написаны на любом языке), или через так называемый Blazor Server?

#9 
AlexNek патриот29.03.22 19:10
AlexNek
alex445 коренной житель29.03.22 20:44
NEW 29.03.22 20:44 
в ответ AlexNek 29.03.22 19:10

Я понимаю. Я говорю про то, что у Blazor же есть серверная составляющая - была ли она у вас? Может, там при старте интенсивное общение с сервером было, потому и так долго стартовало?

#11 
AlexNek патриот29.03.22 22:09
AlexNek
NEW 29.03.22 22:09 
в ответ alex445 29.03.22 20:44
Может, там при старте интенсивное общение с сервером было, потому и так долго стартовало

хаха

#12 
alex445 коренной житель30.03.22 06:54
NEW 30.03.22 06:54 
в ответ AlexNek 29.03.22 22:09

Т.е. да? А Ангуляр не общается с сервером и потому стартует быстро? Или общается, и всё равно быстро?

#13 
AlexNek патриот30.03.22 07:52
AlexNek
NEW 30.03.22 07:52 
в ответ alex445 30.03.22 06:54
Т.е. да?

Перевести - "полная глупость" как да нужно еще уметь. спок

Смотрим на размер "базового кода" без которого вообще ничего не запустится

#14 
uscheswoi_82 старожил30.03.22 17:23
NEW 30.03.22 17:23 
в ответ alex445 30.03.22 06:54
Ангуляр не общается с сервером и потому стартует быстро?

Google Mail загружается 5-10 секунд, имхо вроде сделан на ангуляре, а сам обычный ангуляр имхо весит 4 мегабайт, а тот который для nodejs весит аж 34 мегабайт, там очень много всяких модулей.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#15 
uscheswoi_82 старожил30.03.22 17:27
NEW 30.03.22 17:27 
в ответ uscheswoi_82 30.03.22 17:23

Меня тоже одни форумчаны заставляли переходить на Blazor, хотя он тогда сырой был (2019 год или 2020 год).

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#16 
AlexNek патриот30.03.22 19:51
AlexNek
NEW 30.03.22 19:51 
в ответ uscheswoi_82 30.03.22 17:23
имхо вроде сделан на ангуляре

mail.google.com

Web servers:OpenGSE

Programming languages:Java


Для мобилы

First Contentful Paint:4.2 s

Time to Interactive:7.4 s

Speed Index:4.4 s

Total Blocking Time: 580 ms

Largest Contentful Paint: 5.8 s

#17 
alex445 коренной житель23.06.22 13:00
NEW 23.06.22 13:00 
в ответ AlexNek 30.03.22 19:51, Последний раз изменено 23.06.22 13:00 (alex445)

Вы вроде занимались Блейзором? Клиентской версией с веб-ассембли, или с серверным рендерингом через SignalIR?


Вы переписали ваше приложение на Блейзор, протестировали и отказались, или только тестовый кусочек сделали?

#18 
alex445 коренной житель23.06.22 16:56
NEW 23.06.22 16:56 
в ответ alex445 23.06.22 13:00, Последний раз изменено 23.06.22 17:02 (alex445)

Ойляяяя... Читаю описание, как в Blazor работает рендеринг составных шаблонов. Помню, ещё в в ASP.NET MVC оно было запутанным, а тут ещё немного запутали.


В WPF всё проще - вот модель, вот её шаблон представления. В Blazor надо прыгать по 3 файлам (особенно, если для компонента вместо кода и разметки вперемешку используется отдельный файл с кодом) в разном порядке и по нескольку раз, чтобы понять, что куда отрисовывается. Какого-то хрена в Blazor описание шаблона разделено на две части - для всего компонента и для отдельных свойств. При этом шаблоны для свойств должны быть тут же по месту использования компонента:


<Component TypeParam="" Property1="" Property2="">

    <Property1> - это шаблон для свойства, а есть ещё шаблон для всего компонента - в другом файле
        <разметка>
    </Property1>

    <Property2> - шаблон для другого свойства
        <разметка>
    </Property2>

</Component>


А нельзя как в WPF - один дефолтный шаблон на тип и, если надо, template selector? А конкретное определение шаблона по месту сделать опциональным?


Или это можно сравнить с разными типами шаблонов в WPF. Тогда шаблон для всего компонента в Blazor это аналог шаблона представления в WPF, а шаблоны для свойств в Blazor - это аналог шаблона данных в WPF.

#19 
AlexNek патриот23.06.22 18:23
AlexNek
NEW 23.06.22 18:23 
в ответ alex445 23.06.22 13:00
Вы переписали ваше приложение на Блейзор, протестировали и отказались

Готовое приложение на блазоре работает относительно нормально, особенно если не на Azure хостится.


А вот для PWA делали спец. тест Blazor vs Angular - просто небольшое приложение. Потом еще одно для CPU интенсивных задач.

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


#20 
1 2 3 все