it-swarm.com.de

Entwicklungsunterschiede zwischen .NET und Mono

Ich beschäftige mich mit Mono und .NET C # und wir müssen den Code in der Zukunft auf Linux-Servern ausführen, wenn das Projekt entwickelt wird. An dieser Stelle habe ich mir ASP.NET MVC und Mono angesehen. 

Ich betreibe eine Ubuntu-Distribution und möchte eine Webanwendung entwickeln. Einige andere Entwickler verwenden Windows und führen andere .NET-Elemente mit Visual Studio aus. 

Was bietet Mono nicht wie Visual Studio?

Wenn wir dies später unter Linux ausführen, sollten wir dann nicht MonoDevelop verwenden?

Gibt es Tools oder Add-Ins von Drittanbietern, die später ein Problem mit Mono darstellen könnten?

24
Jason

Was bietet Mono nicht wie Visual Studio?
MonoDevelop ist vermutlich das, was Sie hier meinen. MonoDevelop bietet plattformübergreifende Entwicklung unter Linux, Mac OS X und Windows basierend auf GTK. Es ist jedoch aus offensichtlichen Gründen nicht so ausgereift wie Visual Studio - drei Leute machen es, nicht Hunderte. Es verfügt über einige Nice-Funktionen, insbesondere die Source-Control-Plugin-Architektur. Da Visual Studio Express jedoch kostenlos ist, bietet Windows nicht viele Vorteile.

Es verwendet dasselbe .csproj- und .sln-Format wie Visual Studio, jedoch unterscheidet sich das XML-Dokumentformat.

Wenn wir dies später unter Linux ausführen, sollten wir dann nicht MonoDevelop verwenden?
Wie ich bereits erwähnt habe, sind die Projektformate interoperabel.

Gibt es Tools oder Add-Ins von Drittanbietern, die später ein Problem mit Mono darstellen könnten?
Im Gegensatz zu Visual Studio gibt es nicht viele Add-Ins für Monodevelop. Diejenigen, die Sie in Monodevelop verwenden, wirken sich nicht auf Ihre .csproj-Dateien aus, da sie von Visual Studio nicht gelesen werden können.


Wie die Leute sagten, verwechseln Sie Mono nicht mit MonoDevelop. MonoDevelop ist ein IDE für Mono, das ursprünglich aus (gespaltenem) SharpDevelop stammte.

Mono ist das plattformübergreifende Framework, das die CLR- und Framework-Bibliotheken von Microsoft "affen".

19
Chris S

Ich habe nicht viel Erfahrung in diesem Bereich, aber ...

Die Mono-Projekt-Roadmap bietet einen Überblick über Funktionen, die im Vergleich zu MS.NET neu, bevorstehend und in Mono nicht vorhanden sind. Auch wenn Mono dieselben Klassen wie .NET hat, ist zu beachten, dass die Kompatibilität nicht 100% beträgt (obwohl dies im Allgemeinen das Ziel ist). Ich bin mir nicht sicher, ob es eine umfassende Liste der in Mono fehlenden Dinge gibt.

MonoDevelop ist jetzt sowohl für Windows als auch für Linux verfügbar. Sie sollten es also am besten verwenden. Anscheinend verwendet MonoDevelop jedoch dasselbe Projektdateiformat wie Visual Studio und SharpDevelop. Sie können also versuchen, IDEs zu mischen.

Beachten Sie bei der Verwendung von .NET-Bibliotheken von Drittanbietern, dass viele von ihnen nicht mit Mono getestet wurden. Insbesondere für P/Invoke ist alles unter Mono für Linux nicht möglich. Die meisten Inkompatibilitäten mit Mono sind jedoch geringfügig, und wenn Sie sich an Open-Source-Bibliotheken halten, können Sie immer die Inkompatibilitäten beheben, auf die Sie stoßen.

5
Qwertie

Sie können sich auch die Mono Tools für Visual Studio ansehen. Damit können Ihre Visual Studio-Entwickler die Mono-Plattform gezielt ansprechen und testen.

5
Joel Coehoorn

Sie streben an, immer Support zu haben und/oder die Software hauptsächlich unter Linux zu verwenden, richtig? Dies ist eigentlich eine Frage, die ich den Mono-Entwicklern vor einiger Zeit auf einer Konferenz gestellt habe, und sie ging im Wesentlichen auf das zurück, was Sie damit anfangen wollen.

Wenn Sie möchten, dass es immer unter Linux funktioniert, verwenden Sie Mono. Wenn Sie sich nur für Windows interessieren, verwenden Sie Visual Studio.

Wenn Sie Mono verwenden, verwenden Sie MonoDevelop für alle Entwickler. Es macht das Leben später einfach viel einfacher und es wird dafür sorgen, dass alles, was Sie in diesem Schreiben schreiben, für alle funktionieren wird.

Leider weiß ich nicht die Antwort auf die genauen Grenzen/Vorteile von Mono vs. .NET, abgesehen davon, dass .NET weiter vorne liegt, und Mono spielt Aufholjagd oder verschiedene Addons.

1
Tarka

Wenn keiner Ihrer Entwickler für bestimmte Funktionen auf Mono entwickeln muss, sollten Sie Visual Studio unter Windows verwenden. Dann testen Sie die Anwendungen auf Mono via

  1. Mono-Tools für Visual Studio 
  2. kopieren Sie die Binärdateien manuell
  3. schauen Sie sich den Code unter Linux an und bauen Sie MonoDevelop ein.

Ich persönlich hatte viele kleine Probleme, als ich den dritten Weg ausprobierte, aber zum Glück bin ich in der Lage, Abhilfen zu finden.

Nur wenn Sie Mono berühren, wissen Sie, welcher Teil Ihrer Anwendung abgestimmt werden muss.

http://www.mono-project.com/Start

1
Lex Li

Wenn Sie helfen können, empfiehlt es sich, die Mono-Implementierung von Remoting zu vermeiden. Es scheint einige unerwartete Probleme zu geben, und das Debuggen ist nicht einfach.

Wir hatten ein sehr starkes Remoting-Produkt, das wir auf Mono portieren wollten, um Linux zu unterstützen. Da wir die Remoting-Probleme nicht lösen konnten, mussten wir unsere Versuche, Linux zu unterstützen, endgültig aufgeben.

Vorbehalt : Meine Erfahrungen können veraltet sein. Siehe unten stehende Kommentare

1
Dinah

Sie benötigen MonoDevelop nicht, um das ASP.NET-Programm unter Linux auszuführen, einen freigegebenen Ordner auf Ihrem Entwicklungsserver (VMWare oder real) anzulegen. Testen Sie häufig, damit Sie das, was Mono fehlt, problemlos umgehen können

Das ist der gleiche Ansatz, den ich in meinem .NET Remoting-Programm verwende, das ich auf dem Ubuntu-Server hoste. Aber ich mache das Gegenteil, da ich ein Solo-Programmierer bin, erstelle ich einen freigegebenen Ordner auf meinem Windows-Entwicklungscomputer und greife dann auf diesen freigegebenen Ordner auf meinem Ubuntu-Testserver (vmware) zu. Wenn die Änderungen auf ASP.NET nicht auf Ihrem Ubuntu-Testserver angezeigt werden, berühren Sie in Terminal einfach die Datei "Web.Config" auf Ihrem Ubuntu-Testserver. touch Web.Config, dann aktualisieren Sie die Seite

0
Michael Buen

Mono hat eine voll funktionsfähige Implementierung von ASP.NET. Dies umfasst die vollständige Unterstützung für ASP.NET-Webformulare und Webdienste. Dies bedeutet im Wesentlichen, dass mehr oder weniger alle ASP.NET-Anwendungen, die Sie mit .NET Framework entwickelt haben, mit Mono funktionieren. Offensichtlich sind möglicherweise Änderungen erforderlich, z. B. Änderungen des Datenzugriffs, Entfernen von , Die auf .NET Framework-BCL-Typen angewiesen sind . Mono-Oracle-Benutzer. NET-Programmierung C #: ubuntu 11.04

0
abhilash