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

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

1814  1 2 3 все
alex445 коренной житель27.03.22 18:02
NEW 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
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
uscheswoi_82
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
uscheswoi_82
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 все