Wir haben es in der großen Firma benutzt, in der ich arbeite. Wir haben es von Anfang an nicht geplant, aber es hat einfach so geklappt.
Wir hatten ein internes Projekt, das wir in .NET entwickelt haben, als wir zu UAT kamen, wollte der Geschäftsinhaber die App für einige Kunden sowie für die internen Mitarbeiter öffnen. Die meisten unserer externen (DMZ) Server basieren auf Linux, und die Windows-Server in der DMZ waren nicht gut geeignet (zu dicht an der Kapazität). Anstatt neue Hardware zu kaufen, schlug jemand vor, die App auf Mono auszuführen. Wir haben ein paar Tage damit verbracht, unsere eigenen Tests durchzuführen, und dann die App für die Qualitätssicherung und dann für UAT freigegeben. Wir hatten keine Probleme.
Wenn wir die Anforderung zu Beginn des Projekts erhalten haben, haben wir uns möglicherweise nicht dafür entschieden, sie in .NET zu schreiben, aber dies war ein gutes Ergebnis für eine sehr, sehr späte Anforderungsänderung. Jetzt sind wir ziemlich zuversichtlich, dass wir Mono erfolgreich bereitstellen könnten, wenn es wieder auftaucht (obwohl ich denke, dass wir irgendwann etwas Code optimieren müssten, ich denke, wir haben einfach Glück).
Ich habe Mono nicht kommerziell genutzt, aber ich benutze es privat, weil ich in einer Windows-Firma arbeite, aber privat ein Linux-Benutzer bin (damit ich das, was ich bei der Arbeit mache, wiederverwenden kann).
Insgesamt stimme ich Miguel de Icaza zu, der sagt:
Mono funktioniert ziemlich gut, aber es gibt einige Probleme:
Dann die kleinen Probleme:
Bilden Sie, was ich sagen kann:
Wenn Sie .NET unter Linux entwickeln möchten
Mit anderen Worten:
Edit (Update 2015):
Ich wollte hinzufügen, dass das 'Step-through'-Debugging jetzt hervorragend funktioniert und Sie MonoDevelop verwenden können, um Webanwendungen unter Linux zu entwickeln, auch mit NuGet-Abhängigkeiten. Das Problem mit Excel- und Word-Bibliotheken ist ebenfalls behoben, und das Entity-Framework ist jetzt Open Source. Der Rest ist so ziemlich "wie er ist" (ich weiß nicht, ob Mono-Service behoben ist, aber ich würde es hoffen).
Was sich ebenfalls verbessert hat, ist, dass Sie jetzt aktuelle Pakete für Ihre Distribution haben können, was bedeutet, dass Sie nicht bis zur nächsten Veröffentlichung von Debian / Ubuntu warten müssen, bis Sie die neueste Mono-Version erhalten (ohne sie selbst kompilieren zu müssen) ). Dies ist eine große Zeit sicherer.
Mit der Veröffentlichung von Roslyn dürfte der VB.NET-Support in naher Zukunft noch viel besser werden.
quelle
Mein Unternehmen entwickelt hauptsächlich .NET-Desktopanwendungen und veröffentlicht Linux-Versionen, die auf Mono ausgeführt werden. Ich würde also sagen, dass es in Windows-basierten Unternehmenslösungen definitiv einen Platz für Mono gibt.
Wir packen Mono mit der Installation unserer Anwendung, ohne dass die Benutzer sie separat installieren müssen (und auf diese Weise steuern wir auch die Version).
quelle
Ich denke, die Hauptsorge vieler Unternehmen sind die Lizenzprobleme zwischen Mono und Microsoft. Mein Verständnis ist, dass Microsoft zwar offiziell zugestimmt hat, dass Mono die .NET-Kerntechnologien verwenden kann, aber außerhalb dessen, einschließlich einiger sehr häufig verwendeter Dinge, rechtlich eher eine Grauzone ist, in der Microsoft keine feste Position in der einen oder anderen Richtung angibt andere.
Das lässt natürlich die Möglichkeit offen, dass sie Lizenzgebühren verlangen oder nur wegen Patentverletzung klagen. Es ist unwahrscheinlich, dass beides von der Art und Weise ausgeht, wie sie sich gerade verhalten, aber die meisten Unternehmen mögen diese Art von Unsicherheit nicht, insbesondere nicht, wenn es um potenzielle Verbindlichkeiten und damit verbundene Kosten geht.
quelle
Ich glaube, da ist nicht viel Platz für Mono:
Java ist bereits eine unter Linux etablierte Plattform mit einer riesigen Community und einer Fülle von Bibliotheken und Tools in Unternehmensqualität, sowohl kommerziell als auch als Open Source. Ich sehe keinen Grund, Mono über Java zu wählen, wenn ich ein neues Projekt für Linux (oder Mac) starte, es sei denn, es gibt einen bestimmten Umstand (siehe Walters Antwort).
quelle
Bevor Sie Mono verwenden, müssen Sie sicherstellen, dass sich kein fest codiertes '\' für Pfadzeichenfolgen (verwenden Sie Path.Combine ()) oder das Präfix "COM" (akzeptieren Sie einfach Zeichenfolgen anstelle von Ganzzahlen) für die serielle Schnittstelle im Programm befindet.
Was funktioniert gut:
Probleme aufgetreten:
Es ist besser, Mono intern (z. B. ERP-System) als kontrollierte Umgebung zu verwenden.
quelle
Mono ist eine großartige Alternative, wenn Sie bereits über .NET-Code verfügen, der in einer plattformübergreifenden Umgebung ausgeführt werden muss. Mono wird in der Geschäftswelt ziemlich häufig verwendet, um genau dieses Problem zu lösen.
Ich würde dagegen argumentieren, die Existenz von Mono als Ausrede für das Starten eines Projekts mit .NET zu verwenden, von dem Sie wissen, dass es plattformübergreifend sein muss. Der Grund dafür ist die Verzögerung zwischen dem Stand der Technik bei .NET und der Entwicklungsgeschwindigkeit von Mono.
Auf der anderen Seite, wenn Sie tun Mono beabsichtigen , in einem zukünftigen Projekt zu verwenden, würde ich Dich warnen , den Mono - Framework und laufe auf .NET Ziel als eine sekundäre Alternative , da Mono weitgehend eine Teilmenge der vollständigen .NET - Funktionalität ist.
quelle