Можно ли конвертировать WinForm в WebForm в .NET? - PullRequest
8 голосов
/ 07 декабря 2010

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

Ответы [ 5 ]

9 голосов
/ 07 декабря 2010

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

Хитрость заключается в том, что Winforms и Webforms представляют форму с использованием простого старого класса.Однако экземпляры класса в веб-формах недолговечны по сравнению с Winforms;каждый экземпляр класса Webforms представляет только один HTTP-запрос, а не весь срок жизни формы, как в Winforms.Каждый раз, когда вы обрабатываете событие для своей формы в ASP.Net Webforms, вы работаете с новым экземпляром класса.Microsoft приложила немало усилий, чтобы как можно больше попытаться найти решение этой проблемы, но, в конце концов, не стоит думать о веб-форме в тех же терминах, что и Winform.

Таким образом, вы можетеопределенно возьмите приложение Winforms и перепишите его, чтобы использовать Webforms, но это будет просто переписать.

3 голосов
/ 07 декабря 2010

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

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

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

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

2 голосов
/ 19 марта 2015

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

  • Доступ к оборудованию
  • Вызовы Windows API
  • Управление состоянием приложения
  • Доступ к файловой системе
  • Контроль доступа
  • Использование рабочего стола / UX / элементов управления

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

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

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

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

2 голосов
/ 07 декабря 2010

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

1 голос
/ 07 декабря 2010

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

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

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