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 
AlexNek патриот23.06.22 18:30
AlexNek
NEW 23.06.22 18:30 
в ответ alex445 23.06.22 16:56
В Blazor надо прыгать по 3 файлам

А третий какой? Можно всё в одном сделать но мне так не нравится.

Что то проблему не могу понять

https://blazor-tutorial.net/component-parameters

Что называете шаблоном?

#21 
alex445 коренной житель24.06.22 00:50
NEW 24.06.22 00:50 
в ответ alex445 23.06.22 16:56

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

#22 
alex445 коренной житель24.06.22 00:52
NEW 24.06.22 00:52 
в ответ AlexNek 23.06.22 18:30, Последний раз изменено 24.06.22 00:52 (alex445)
А третий какой?

Файл razor с разметкой компонента, файл razor.cs с шарповским кодом, файл, что я выше показал - место, где компонент непосредственно используется и где задаются шаблоны для его свойств. Ну и можно привести четвёртый файл - стили. Т.е. чтобы работать с Blazor нормально, нужно минимум четыре окна открытыми держать одновременно, иначе задолбаешься переключаться.

#23 
alex445 коренной житель24.06.22 00:54
NEW 24.06.22 00:54 
в ответ AlexNek 23.06.22 18:30, Последний раз изменено 24.06.22 00:56 (alex445)
Что называете шаблоном?


Templated components

https://docs.microsoft.com/en-us/dotnet/architecture/blazo...


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

#24 
alex445 коренной житель24.06.22 01:03
NEW 24.06.22 01:03 
в ответ alex445 24.06.22 00:54, Последний раз изменено 24.06.22 01:23 (alex445)

При этом заметьте, как запутана логика отрисовки - чтобы понять, что будет в итоге, чёрт ногу сломит метаться между файлами:


1) встречаем такую разметку, которая использует компонент


<ChildContentComponent>
    <ChildContent>
        <p>The time is @DateTime.Now</p>
    </ChildContent>
</ChildContentComponent>


2) идём в code-behind смотреть, что это за ChildContent


@code {
    [Parameter]
    public RenderFragment ChildContent { get; set; } }


3) смотрим в разметке компонента, куда будет отрисован ChildContent


<h1>Component with child content</h1>

<div>@ChildContent</div>


4) пытаемся собрать воедино всю эту бурду - вставляем в ChildContentComponent (пункт 1) разметку из компонента (пункт 2)


<ChildContentComponent>
    <h1>Component with child content</h1>

    <div>@ChildContent</div>
</ChildContentComponent>


5) убираем лишнее обрамление (оно не отрисовывается в конечной HTML-разметке)


<h1>Component with child content</h1>

<div>@ChildContent</div>


6) вставляем в свойство ChildContent его шаблон (снова возвращаемся за ним в пункт 1)


<h1>Component with child content</h1>

<div><p>The time is @DateTime.Now</p></div>


Вот что будет отрисовано вместо изначальной разметки в пункте 1.


Офигеть как всё запутали! И это простой случай - без кучи параметров со своими шаблонами, без иерархических шаблонов, без привязок, без параметров типа и без рекурсивных отрисовок шаблонов (нужно для отрисовки древовидной структуры данных). Конечно, можно привыкнуть к любому дерьму, но почему, ска, обязательно через задницу всё?!

#25 
alex445 коренной житель24.06.22 01:16
NEW 24.06.22 01:16 
в ответ alex445 24.06.22 01:03, Последний раз изменено 24.06.22 01:22 (alex445)

Ещё не забудьте такой долбанутый параметр как Context, про который в МСДН не объяснено толком, что это такое. В этой разметке


<SimpleListView Items="messages" TItem="string">
    <Heading>
        <h1>My list</h1>
    </Heading>
    <ItemTemplate Context="message">
        <p>The message is: @message</p>
    </ItemTemplate>
</SimpleListView>


это, оказывается, экземпляр объекта типа, переданного в параметре TItem. Т.е. если у типа в TItem есть свойства, то их можно достать через @context.MyProperty, или переименовав параметр context в удобный, как показано выше, чтобы он назывался не context, а соответственно объекту. В примере это просто строка message, но можно обращаться к её свойствам, типа @message.Length.

#26 
alex445 коренной житель24.06.22 01:45
NEW 24.06.22 01:45 
в ответ AlexNek 23.06.22 18:23

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


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

Я думал, вы в одиночку всё переписали.

#27 
AlexNek патриот24.06.22 12:50
AlexNek
NEW 24.06.22 12:50 
в ответ alex445 24.06.22 00:50
нихрена нет толком из коробки

ну не нужно это микрософту для себя, всегда так было.

Да и бесплатное тоже есть


#28 
AlexNek патриот24.06.22 12:51
AlexNek
NEW 24.06.22 12:51 
в ответ alex445 24.06.22 00:52
Т.е. чтобы работать с Blazor нормально, нужно минимум четыре окна открытыми держать одновременно

никогда не было подобной проблемы, странно...

#29 
AlexNek патриот24.06.22 12:53
AlexNek
NEW 24.06.22 12:53 
в ответ alex445 24.06.22 00:54
Без этих шаблонов...

можно спокойно жить и пользоваться нормальными либами.

#30 
AlexNek патриот24.06.22 12:56
AlexNek
NEW 24.06.22 12:56 
в ответ alex445 24.06.22 01:03
Офигеть как всё запутали!

Как по мне, так всё достаточно просто и прозрачною И не нужно никуда переключаться для понимания работы. Делаешь или одну часть или другую.

#31 
AlexNek патриот24.06.22 12:58
AlexNek
NEW 24.06.22 12:58 
в ответ alex445 24.06.22 01:45
в одиночку всё переписали.

зачем? В короткий срок обычно не переписывается, делается сразу как надо.

Да и в команде всё делаем.

#32 
alex445 коренной житель24.06.22 14:35
NEW 24.06.22 14:35 
в ответ AlexNek 24.06.22 12:50

Это где такое бесплатное с три вью? Задолбался свой писать - не получается без навыков в этом Блейзоре.

#33 
AlexNek патриот24.06.22 17:27
AlexNek
NEW 24.06.22 17:27 
в ответ alex445 24.06.22 14:35
Это где такое бесплатное с три вью?

А что гугла молчит как партизан на допросе? спок

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

https://blazor.radzen.com/

https://blazorise.com/

#34 
alex445 коренной житель24.06.22 21:17
NEW 24.06.22 21:17 
в ответ AlexNek 24.06.22 17:27

Гугл первые две страницы по treeview blazor выдаёт спам ссылок на Дев Экспрее, Телерик и ещё несколько вендоров платных компонентов.


Спасибо за ссылки.

#35 
AlexNek патриот24.06.22 22:33
AlexNek
NEW 24.06.22 22:33 
в ответ alex445 24.06.22 21:17

попробуйте поискать blazor component library free

#36 
alex445 коренной житель31.10.22 13:49
NEW 31.10.22 13:49 
в ответ AlexNek 24.06.22 22:33, Последний раз изменено 31.10.22 16:58 (alex445)

А это принципиальное решение, что в проекте Блейзор с подключенным EF Core нет шаблона в визуальном меню для генерации контекста БД (ADO.NET Data Model или что-то такое, как было раньше через меню Add - New Item), и всё надо делать через командную строку с кучей параметров? Ещё и две версии сделали, чтобы жизнь лёгкой не казалась


https://learn.microsoft.com/en-us/ef/core/cli/dotnet#dotne...

https://learn.microsoft.com/en-us/ef/core/cli/powershell?s...


Теперь вместо того, чтобы быстро через меню добавить что нужно, я должен изучать эту портянку с кучей параметров, городить длиннющую строку команды и куда-то в консоли её вводить?

#37 
alex445 коренной житель31.10.22 21:18
NEW 31.10.22 21:18 
в ответ alex445 31.10.22 13:49

#38 
AlexNek патриот03.11.22 22:00
AlexNek
NEW 03.11.22 22:00 
в ответ alex445 31.10.22 13:49
нет шаблона в визуальном меню для генерации контекста БД

А зачем? Они ориентированы на code first. DevArt отлично справляется с DB First.

Или Я что тот не понимаю?

#39 
AlexNek патриот03.11.22 22:01
AlexNek
NEW 03.11.22 22:01 
в ответ alex445 31.10.22 21:18

Письма разносил спок Не была тута

#40 
alex445 коренной житель04.11.22 00:42
NEW 04.11.22 00:42 
в ответ AlexNek 03.11.22 22:01, Последний раз изменено 04.11.22 00:48 (alex445)
Письма разносил спок Не была тута

Да это я не вам лично, а вообще. Просто ваше сообщение последнее, а просто "ответить в тему, никому" тут нельзя. ))


нет шаблона в визуальном меню для генерации контекста БД
А зачем? Они ориентированы на code first. DevArt отлично справляется с DB First.
Или Я что тот не понимаю?

Раньше был так называемый мастер (серия форм с настройками) для создания контекста БД по существующей БД. А теперь надо команду какую-то формировать, путаясь в её синтаксисе. А если надо много опций, выбор конкретных таблиц, то команда может на несколько строк растянуться. Дебильный подход для любителей командной строки. Вместо того, чтобы в нескольких окнах мастера потыкать опты и выбрать нужные таблы.

#41 
AlexNek патриот04.11.22 18:25
AlexNek
NEW 04.11.22 18:25 
в ответ alex445 04.11.22 00:42
для создания контекста БД по существующей БД

Ну так это и есть DB First. Ms считает что оно не сильно так и нужно.

Что в принципе и правильно эту фигню от мелкософта никак не хочется использовать. Достаточно попробовать Entity Developer

#42 
alex445 коренной житель04.11.22 20:52
NEW 04.11.22 20:52 
в ответ AlexNek 04.11.22 18:25, Последний раз изменено 04.11.22 20:56 (alex445)

А зачем какая-то тулза, тем более ещё и безапелляционно платная, если стандартный бесплатный мастер делал всё нужное, просто протыкав несколько опций? Ну мне не нужны лишние изъёпства, пусть даже этот Entity Developer супер-пупер - просто нужно простой ORM-контекст накидать, чтобы руками не возиться.


А давайте все мастера и тулзы в Студии заменим пачкой команд с портянкой параметров? Круто же будет? И вообще, выкинем эту сраную Студию, а будем всё компилить из командной строки, как тут в примерах. Сравните переключатели для одного и того же шага в Винде, Линухе и Макоси. В Винде - нормальные визарды с менюшками. Для мамкиных красноглазиков - портянки в командной строке с пачками параметров. Сразу виден подход нормальных людей и сумасшедших, затрявших в семидесятых годах прошлого века.


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

#43 
AlexNek патриот05.11.22 09:24
AlexNek
NEW 05.11.22 09:24 
в ответ alex445 04.11.22 20:52
А зачем какая-то тулза

Вам шашечки или ехать?

До 10 таблиц бесплатно на попробовать, кстати.

#44 
alex445 коренной житель05.11.22 10:59
NEW 05.11.22 10:59 
в ответ AlexNek 05.11.22 09:24

Т.е. эти шашечки начинают играть роль только на фоне выкидывания МСом тулзы с удобным интерфейсом? Без этого эти шашечки не нужны нафиг никому в 99% случаев?

#45 
AlexNek патриот05.11.22 11:22
AlexNek
NEW 05.11.22 11:22 
в ответ alex445 05.11.22 10:59

Мс делает то, что удобно им. Раз им не нужно то и остальным также. Обсуждать тут вроде нечего, разве что как более удобно это обойти.

Лично у меня не возникало желания с ЕФ начинать с БД. Один раз было интересно пробовать, но заломало во всём разбираться, да и без редактора БД неудобно.

А так редактор есть, нажал сгенерить и всё готово, причем можно настроить чтобы генерились только определённые таблицы.

#46 
alex445 коренной житель05.11.22 12:11
NEW 05.11.22 12:11 
в ответ AlexNek 05.11.22 11:22

Так и у меня уже готовая БД. И прежняя бесплатная тулза в комплекте со Студией тоже умела и выбранные таблицы генерить, и имена им плюрализовать-сингуляризовать. Тока теперь вы за это бабки платите. И не просто, а две-три сотни самый минимум. Хренасе - на Юнити 3Д за две-три сотни такой набор покупается, что игра делается просто натыкиванием готовых ассетов по автосгенеренной карте. Затем добавляешь лутбоксы, покупаешь рекламу и вуаля - ты миллионер (через пару лет, если повезёт). А тут за сраный маппинг столько по минимому отдать. ))

#47 
AlexNek патриот05.11.22 12:48
AlexNek
NEW 05.11.22 12:48 
в ответ alex445 05.11.22 12:11
и выбранные таблицы генерить

И всё остальное? Дома мне хватает и за 120

https://www.devart.com/entitydeveloper/features.html


За бесплатно пользуйтесь командной строкой ну или петицию в спортлото спок что мс гады убрали клёвую тулзу.

#48 
alex445 коренной житель05.11.22 16:07
NEW 05.11.22 16:07 
в ответ AlexNek 05.11.22 12:48, Последний раз изменено 05.11.22 16:09 (alex445)

Я не раз наблюдал, как сами разработчики из МСа по-бырому добавляли разные тулзы и фреймворкочки к недавно вышедшим дефолтным тулзам и фреймворкам МСа. Зачастую - добавляли платно. Т.е. этакий изъян, как-будто сделанный при разработке специально, чтобы было "room for improvement making the money". Потому, конечно, спустя два-три релиза функционал дефолтных бесплатных тулзов допиливают, так что платные уже можно оставить. Но несколько лет за платные ты всё равно заплатишь. И сказать, что они не успевали добавить платный функционал в бесплатный, нельзя. Т.е. они на работе не успевали, а потом после работы резко успели (только за доп. деньги). Причём так успели, что после работы, по вечерам, за несколько месяцев напилили функционала, который потом в бесплатный вариант будут годами добавлять (копипастом, я так понимаю).


Хитровы...е, короче. ))) Интересно, им так дают подзаработать? Т.к. бабки идут не в кассу МС, а команде МС лично, как я понимаю. Оно им и сподручней, конечно - они же сами это разрабатывали и знают, как там всё работает.

#49 
1 2 3 все