Laden...

Verständnisfragen eines Umsteigers

Erstellt von Therion vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.689 Views
T
Therion Themenstarter:in
56 Beiträge seit 2006
vor 18 Jahren
Verständnisfragen eines Umsteigers

Hallo, also programmiert habe ich durch meine Uni bisher in Delphi. Jetzt möchte ich aber auf C# umsteigen, als meine favorisierte .Net Sprache.

Da ich interdisziplinäre Forschung betreibe, möchte ich eine möglichst plattformunabängige und sprachunabhängige Simulation schreiben.

Der zweite Punkt ist, dass möglichst wenig "installiert" werden soll. Also sprich, wenn jemand meine Simulation laufen lassen will, dann sollte er bestenfalls nur die Laufzeit-Umgebung installieren müssen.

Erste Problem bezüglich Plattformunabhängigkeit:
Wie realisiere ich am besten die Benutzeroberfläche (GUI), gibt es da eine Bibliothek die ich als Komponenten z.b. in Sharpdevelopment oder VisualStudio Express 2005 einbinden kann, ähnlich der VCL in Delphi?

Es gibt wohl verschiedene Ansätze:

1.) Wx.NET, arbeitet mit einer Zwischenbibliothek, die Aufrufe an die Systembibliothek weitergibt (einheitliche API). Aber das hat wohl den Nachteil, dass man auf jedem Betriebssystem was zusätzlich installieren muss oder?

2.) Man benutzt die Bibliothek eines Systems und schreibt für den Rest Zwischenbibliotheken, z.b. Gtk+, Winelib.

3.) Man nimmt die kleinste Untermenge aller GUI's, sowas wie OpenOffice.org dann.

Ich habe gelesen, dass Mono Windows.Forms zu 98% unterstützt, aber wie kann ich mir das genau vorstellen? Arbeite ich dann mit der GDI+ aus Windows und Mono sorgt automatisch dafür, dass die Methoden usw. übersetzt werden? Und was macht genau Cairo, dass in dem Zusammenhang erwähnt wird? Ist diese Lösung nicht bei den obigen Ansätzen unter 2 einzuordnen, wobei hier die native GDI+ benutzt wird und Cairo dann die Zwischenbibliothek für Linux ist?
Wie sieht dass mit der Darstellung aus? Sieht das Programm unter XP aus wie ein XP Programm und unter Linux wie ein Linux Programm?

Die GDI+ ist im Moment nicht Teil der FCL und greift auf Win32 zurück? Wobei das + für managed steht, was immer das heißt genau...Mir ist zu Ohren gekommen dass in Net 3.0 eine Oberfläche mit XML realisiert werden soll, stimmt das oder habe ich das falsch verstanden? Dann wäre ja die GUI Teil von .Net und stände einer Umsetzung in Mono nicht mehr im Wege.

Achso nochwas anderes, braucht man wenn man Direct X oder OpenGL nimmt immernoch sowas wie eine GUI?

DirectX interessiert mich eher nicht wegen der Plattformabhängigkeit, weiss jemand ob OpenGL zukünftig offiziell .Net unterstützen wird? Im moment tut es dass nicht oder? Ich bin nur auf Projekte gestossen, die das Umzusetzen versuchen. Da wurde ein Wrapper genant? Was ist ein Wrapper und welche Nachteile hat sowas, wird dadurch die Ausführungsgeschwindigkeit langsamer? Aber vielleicht haben die OpenGL Entwickler ja garkeine Lust auf .Net da ja Windows Vista kein OpenGL standartmässig installiert hat.

Habe jetzt vielleicht einiges durcheinandere gebracht oder falsch dargestellt, bin dankbar für jeden Meinung hierzu und für jede Hilfestellung/Tips etc.

Mfg, Therion

M
456 Beiträge seit 2004
vor 18 Jahren

1.) Wx.NET, arbeitet mit einer Zwischenbibliothek, die Aufrufe an die Systembibliothek weitergibt (einheitliche API). Aber das hat wohl den Nachteil, dass man auf jedem Betriebssystem was zusätzlich installieren muss oder?

Eigentlich reicht es die Wx.NET Lib im gleichen Verzeichnis zu haben wie deine Executables.

Ich habe gelesen, dass Mono Windows.Forms zu 98% unterstützt, aber wie kann ich mir das genau vorstellen? Arbeite ich dann mit der GDI+ aus Windows und Mono sorgt automatisch dafür, dass die Methoden usw. übersetzt werden? Und was macht genau Cairo, dass in dem Zusammenhang erwähnt wird? Ist diese Lösung nicht bei den obigen Ansätzen unter 2 einzuordnen, wobei hier die native GDI+ benutzt wird und Cairo dann die Zwischenbibliothek für Linux ist?
Wie sieht dass mit der Darstellung aus? Sieht das Programm unter XP aus wie ein XP Programm und unter Linux wie ein Linux Programm?

Der managed GDI+ Code ist für Windows und Linux gleich. Beide sprechen eine C-Bibliothek mit dem gleichen Interface an. Unter Win ist es eben die normale GDI+ Dll und unter Linux ist es eine Wrapper-Bibliothek (libgdiplus.so), die die Aufrufe zu Cairo weiterleitet.

Die GDI+ ist im Moment nicht Teil der FCL und greift auf Win32 zurück? Wobei das + für managed steht, was immer das heißt genau...

Das "+" steht nicht für managed, sondern ist einfach eine Erweiterung des alten GDI. (Transparenzen, Transformationen, Hardwarebeschleunigung, verbessertes AA, usw, ,,,)

Mir ist zu Ohren gekommen dass in Net 3.0 eine Oberfläche mit XML realisiert werden soll, stimmt das oder habe ich das falsch verstanden? Dann wäre ja die GUI Teil von .Net und stände einer Umsetzung in Mono nicht mehr im Wege.

Ja, Oberflächen werden bei WinFX mit Xml beschrieben (so ähnlich wie Glade bei Gtk). Ich behaupte aber, dass das "richtige" .NET 3.0 wohl erst nach WinFX kommen wird. WinFX ist eigentlich mehr ein Interims.

Achso nochwas anderes, braucht man wenn man Direct X oder OpenGL nimmt immernoch sowas wie eine GUI?

DirectX braucht ein WinForms Control um initialisiert zu werden. OpenGL natürlich einen gültigen Renderkontext. Da ändert sich bei .NET nicht viel. Die wgl/glx Funktionen brauchst du immernoch. Wenn du es Plattforumunabhängig und unkompliziert magst, dann nimm am besten GLUT (Tao hat Wrapper dafür).

DirectX interessiert mich eher nicht wegen der Plattformabhängigkeit, weiss jemand ob OpenGL zukünftig offiziell .Net unterstützen wird? Im moment tut es dass nicht oder? Ich bin nur auf Projekte gestossen, die das Umzusetzen versuchen. Da wurde ein Wrapper genant? Was ist ein Wrapper und welche Nachteile hat sowas, wird dadurch die Ausführungsgeschwindigkeit langsamer? Aber vielleicht haben die OpenGL Entwickler ja garkeine Lust auf .Net da ja Windows Vista kein OpenGL standartmässig installiert hat.

Offiziel wird OpenGL wohl nie von .NET unterstützt werden (Eigentlich schade, da ich z.B GLSL für die eine bessere Shadersprache halte als HLSL).
Der zur Zeit wohl meistgenutzte Wrapper ist Tao (http://www.mono-project.com/Tao). Ein kleiner Nachteil ist natürlich der etwas langsamere Funktionsaufruf, der durch das Marshalling entsteht (Managed DIrectX hat das gleiche Problem). Das sollte aber eigenlich micht dein Problem sein, da die Bottlenecks in deinen OGL-Anwendung garantiert woanders liegen werden.
OpenGL existert nach wie vor in Vista und muss nicht nachinstalliert werden. Der alte Software Rasterizer (Version 1.1) wird durch einen Direct3D Rasterizer ersetzt (Version 1.4). Installierst du dann noch einen OpenGL ICD, kannst du natürlich auch OpenGL 2.0 voll nutzen, nur wird dann deine Aero Oberfläche vorrübergehen auf Classic umgeschaltet.

I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.

T
Therion Themenstarter:in
56 Beiträge seit 2006
vor 18 Jahren

Hm, dann scheint es für echte, zeitkritische 3D Anwendungen zumindestens noch keine plattformunabhängige Lösung zu geben, sehr Schade, auch wenn es jetzt meine Simulation eher nicht trifft vermutlich.