Портирование C # Windows GUI в веб-приложение C #: как заставить его работать "из коробки" для Win, Mac и Linux? - PullRequest
1 голос
/ 10 марта 2012

Я хотел бы переписать приложение, которое в настоящее время работает как Windows GUI в C #.Проблема в том, что он хорошо работает в Windows, но не адаптирован для Mac и Linux из-за проблем с графическим интерфейсом в Mono.

Так что моя идея заключалась в том, чтобы продолжить работу с C # (необходимо из-за важной подпрограммы, которая требуетзапустить C # и не может быть портирован) и попытаться переписать его как веб-приложение, к которому любой пользователь в Windows, Mac или Linux может легко получить доступ и заставить его работать.

Также важно, чтобы мое приложение продолжало работать ""из коробки", потому что он нацелен на высокую доступность.

Я искал такие решения, как:

  • KayakHTTP , но он не поддерживает POSTданные !(необходим для веб-интерфейса)
  • XSP2 от Mono и создание веб-приложения ASP.NET MVC, но будет ли оно действительно работать с моим веб-приложением для создания готового приложения?

В качестве альтернативы, есть ли у вас какая-нибудь другая идея для меня, чтобы веб-приложение на C # работало из коробки для конечных пользователей?Единственное, что нужно, это установить Mono на Mac и Linux.

Большое спасибо за вашу помощь.

EDIT 1 : я понимаю, что не объяснилвсе аспекты правильно.На самом деле в моем проекте есть 2 приложения:

  • Приложение CORE, написанное на C # и слишком большое для переноса или перезаписи, поэтому для работы на Mac и Linux необходимо использовать Mono
  • Мое приложение с графическим интерфейсом пользователя, использующее Windows Forms, также написанное на C # и контролирующее приложение CORE

Моя цель - преобразовать мое приложение с графическим интерфейсом в приложение веб-приложения, чтобы больше не было форм Windows FormsПроблемы с графическим интерфейсом на Mac и Linux.

Ответы [ 2 ]

1 голос
/ 10 марта 2012

Требуется ли запуск вашего основного приложения на клиенте?

Если НЕТ, то лучший подход - переписать все как веб-приложение (ASP.NET), которое будет работать на сервере Windows. Пользователи всех ваших целевых платформ получат доступ к этому приложению через веб-браузер.

Если ДА, тогда веб-приложение не очень хорошая идея. Вы действительно не хотите требовать веб-сервера для своих клиентов. У вас есть две возможности:

  • Взгляните на GUI инструментарий , доступный для моно, и выберите тот, который доступен на всех ваших целевых платформах, чтобы избежать использования разных интерфейсов для каждой из ваших платформ.
  • Чтобы обеспечить наилучшее взаимодействие с пользователем на всех платформах, вы должны выбрать собственный инструментарий GUI для каждой из платформ и написать для них разные внешние интерфейсы: либо с помощью Mono, либо с помощью собственной среды разработки, если ваше основное приложение имеет интерфейс к нему можно получить доступ (например, из командной строки или подобного).
0 голосов
/ 11 марта 2012

Это дублирующий вопрос, но у меня нет времени, чтобы найти его.

Вкратце, ответ таков: не делайте этого.Вы не можете перевести настольное приложение в веб-приложение один на один: две парадигмы слишком разные.

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

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

Возможно, это не то, что вы имели в виду.

...