Можно ли преобразовать WinForm в WebForm in.NET?

Я не думал, что это возможно, но я просто разговаривал с коллегой, которая сказала, что она делала это раньше. Она дергает меня за цепь?

5 ответов


Это не то, что вы можете сделать автоматически.

фокус в том, что в winforms и webforms форма представлена простым старым классом. Однако каждый раз, когда вы обрабатываете событие для своей формы в asp.net webforms вы работаете с совершенно новым экземпляром класса. Microsoft приложила много усилий, чтобы попытаться покрыть эту проблему как можно больше, но в конце концов это просто не хорошая идея думать о веб-форме в тех же терминах, что и winform.

Так вы можете определенно взять приложение winforms и переписать его для использования webforms, но это будет именно так: переписать.


Да, это возможно. Если вы достаточно хорошо спроектировали приложение, будет относительно легко преобразовать приложение Win Forms в приложение web forms, просто заменив слой пользовательского интерфейса и заменив его. Вы повторно используете логику и слои данных (где будут все функции).

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

однако, есть некоторые gotchas, даже если у вас есть очень хорошо написанное приложение. Логический уровень может принимать приложение с состоянием, и в этом случае он может полагаться на ленивую загрузку. В веб-приложении у вас есть модель без состояния, которая запускается на запросы и ответы. В этом сценарии вы точно знаете, что вам нужно, и можете загружать только нужные вам биты, а не другие вещи, которые могут понадобиться позже... потому что позже будет другой цикл запроса / ответа и все данные, которые вы собираете сейчас, будут удалены, как только текущий ответ будет завершен.

недавно я помещал логику приложения, которое изначально было WinForms в MVC, и самым большим препятствием для получения отзывчивой скорости является тот факт, что, хотя достаточно хорошо написано, логический слой принял среду с состоянием. То же приложение также переписывается для WPF (другой среды с состоянием) без so многие вопросы.


добавляя к предыдущим ответам, обратите внимание, что есть некоторые функции winform, которые просто не существуют в веб-форме, поэтому это зависит от того, что находится в winform в первую очередь.


преобразование настольного приложения в веб-приложение имеет несколько проблем:

  • доступ к оборудованию
  • вызовы API Windows
  • управление состоянием приложения
  • доступ к файловой системе
  • контроль доступа
  • использование рабочего стола конкретного UI/UX / controls

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

даже при использовании средств автоматической миграции в большинстве случаев вам придется выполнять значительный объем ручной работы, чтобы приложение работало так же, как и оригинал один.

некоторые из этих инструментов помогут с различными целями, первый поможет вам конвертировать только пользовательский интерфейс и в WebForms, последние два из них будут генерировать ASP.NET MVC, один из которых использует пользовательскую среду выполнения и набор библиотек, а другой с общими библиотеками HTML/JS/CSS, такими как Kendo MVVM, Kendo UI, AngularJS или Bootstrap среди других. Эти инструменты обеспечат решение, которое будет быстрее, чем написание приложения в интернете с нуля, и предоставит решения или наименьшие руководящие принципы для подхода к упомянутым выше проблемам. Однако будут некоторые отличия от приложения, которое было разработано для Интернета, просто потому, что архитектуры разные, и обычно способ написания кода для настольного приложения предполагает то, что нельзя предположить для веб-приложения.

отказ от ответственности: я работаю для Mobilize.Net, кто построил WebMAP2.


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

проблема в том, конечно, что 90% приложений не является чем-то более сложным CRUD UI (без реальной бизнес-логики)...