Кросс-платформенный .Net?

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

Я рассматривал Java, поскольку ее было бы относительно легко подобрать из-за ее сходства с C#, а затем я мог бы использовать JVM.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
3 909
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Ответ принят как подходящий

Вам следует ознакомиться с Моно проект и MonoDevelop; явной целью этих проектов является создание и выполнение кода .NET на различных платформах, включая Windows, Linux и Mac OSX.

Поскольку Mono является повторной реализацией .NET, он всегда немного отстает от Microsoft.NET, но они хорошо охватывают .NET 2.0 и некоторые функции .NET 3.x. Обратите внимание, что Mono выполняет двоичные файлы .NET, поэтому, пока функции вашей программы поддерживаются Mono, вы можете взять исполняемый вами EXE-файл приложения в Windows и запустить его в Linux / Mono без перекомпиляции.

Есть ли проблемы с разработкой пользовательского интерфейса в Mono? Вы должны сами катить?

Dan 11.09.2008 12:25

Mono поддерживает Winforms и ASP.NET 2.0 и частичную поддержку функций 3.x, поэтому вам не нужно создавать собственные.

Jon Galloway 11.09.2008 12:36

Единственное известное мне предостережение относительно запуска .Net-кода в Mono, который был скомпилирован в Windows, - это использование PInvoke (обращение к Win32 API), который, что неудивительно, не полностью поддерживается Mono в Linux или Mac. Это не будет проблемой для вашего приложения с графическим интерфейсом, которое вызывает веб-сервис: o)

Andrew 11.09.2008 14:17

Запуск Mono WinForms - плохой пользователь XP, потому что он не использует собственные виджеты, а «рисует» элементы управления, подобные Windows. Для реального кроссплатформенного графического интерфейса с Mono вы можете разработать графический интерфейс для каждой платформы (WinForms для Windows, Cocoa # для Mac, Gtk # / Qt # для Linux). Поскольку логика заложена в WS, это должно

Vincent Robert 11.09.2008 14:49

Вы также можете использовать remobjects C#. remobjects.com/elements/hydrogene

Gbolahan 15.08.2014 15:19

Проверьте Моно проект

Также обратите внимание на Silverlight или Вспышка для богатых интернет-приложений.

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

Mono - не единственный текущий вариант - REALsoftware имеет продукт под названием REALbasic, который может компилировать тот же проект в собственные исполняемые файлы для Windows, Mac и Linux: realsoftware.com/products/realbasic

Andrew 11.09.2008 14:32

Моно на самом деле - единственный серьезный вариант. REALBasic не имеет ничего общего с .NET framework, и этот вопрос касался кроссплатформенной разработки .NET.

lubos hasko 11.09.2008 17:02

Лучше написать это с помощью какого-нибудь кроссплатформенного инструментария. Скорее всего, вы не сможете использовать хороший визуальный дизайнер (на самом деле это зависит от того, какой набор инструментов вы выберете), но написать пользовательский интерфейс вручную не так уж и сложно. Ребята, занимающиеся HTML, делают это постоянно, и это довольно обычная практика в мире, не относящемся к MS.

Некоторые кросс-платформенные инструменты пользовательского интерфейса с привязками .NET

  • GTK # (де-факто стандарт для разработки Mono, MonoDevelop IDE имеет встроенный конструктор форм, который использует этот инструментарий)
  • wxNET (на основе wxWindows, довольно зрелый, но вам придется создать свой пользовательский интерфейс вручную)
  • Qyoto (на основе QT, вероятно, лучше, чем wxWindows, но вам может потребоваться коммерческая лицензия от Trolltech, если ваше приложение не может иметь лицензию с открытым исходным кодом)

Почему бы не использовать встроенные Winforms от mono? Отказ от использования Winforms усложнит развертывание.

Troels Arvin 11.09.2008 14:23

потому что поддержка WinForms поддерживается только разработчиками Mono, и, как вы можете видеть на их веб-сайте, это по-прежнему их второй приоритет. Первый - GTK #. GTK +, wxWindows и QT имеют гораздо более крупные и специализированные команды, чем WinForms на Mono, поэтому я бы не стал делать ставку на очень долгую поддержку WinForms в Mono.

lubos hasko 11.09.2008 16:55

Фактически, Qt находится под лицензией LGPL уже почти ровно два года, нет необходимости получать лицензию, даже если ваше программное обеспечение является проприетарным. Кроме того, Nokia теперь использует Qt.

Jim Brissom 23.01.2011 19:26

Как было сказано ранее, Моно проект - ваш лучший выбор, учитывая его поддержку сообщества.

Если вы используете Visual Basic, стоит взглянуть на REALbasic, так как в нем есть кросс-компилятор, который создает собственные исполняемые файлы. У них есть пробная версия можно скачать тоже

Недавно я написал небольшое приложение с графическим интерфейсом на C# для Linux, которое компилируется и запускается с использованием моно. Я обнаружил, что мне пришлось использовать компилятор "gmcs", чтобы иметь доступ к современным функциям C# и .Net (mono 1.9 поставляется с несколькими разными компиляторами).

И при компиляции файла .exe я обнаружил, что мне нужно добавить переключатель «-target: winexe», чтобы приложение запускалось в Windows без появления командной строки позади приложения.

Мне еще предстоит выяснить, как скомпилировать приложение .Net, которое в Windows будет запускаться с сетевых дисков, не требуя специальной конфигурации безопасности .Net на ПК. (Я думаю, что это общая проблема с приложениями .Net, но я все еще учусь.)

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

Честно говоря, я бы оценил вашу клиентскую базу и ваши существующие навыки. Если у вас есть разделение 50/50 или даже 70/30 Windows на не-Windows, вам, вероятно, будет лучше с Java или каким-либо другим кроссплатформенным инструментарием.

Mono - достойная платформа (см. этот ТАК вопрос задан около недели назад), но если вы делаете что-нибудь существенное, я бы выбрал инструментарий, предназначенный для этого.

Кстати, если вы хотите увидеть, как выглядит приложение .NET GUI на Mono, вот сообщение, которое я делал всякий раз, когда у меня был графический интерфейс NUnit, работающий на Mono:

http://www.cornetdesign.com/2006/07/nunit-gui-running-green-on-monolinux.html

Другой относительно новый вариант кроссплатформенной разработки .NET - это использование платформы Eto.Forms с открытым исходным кодом, которая позволяет использовать одну базу кода пользовательского интерфейса, нацеленную на собственный инструментарий каждой платформы.

Для Windows он использует WinForms или WPF, для Linux он использует GTK #, а для OS X он использует MonoMac / Cocoa.

Также в разработке находятся мобильные порты (iOS / Android).

https://github.com/picoe/Eto

Другие вопросы по теме