Hallo allerseits
Wir planen eine neues Projekt "from scratch". .NET als Präsentationsschicht ist beschlossene Sache, ebenso wie natives (unmanaged) C++ als Business-Schicht oder wenigstens in Form einer eine C++-Klassenbibliothek für leistungskritische Operationen. Obwohl wir eine breite Wissensbasis sowohl in C++ als auch in C# vorweisen können, fehlt uns die Erfahrung bez. der Interoperabilität. So stellen sich uns folgende Fragen:
So, das sind doch nun einige Fragen und ich habe keine Zweifel, dass diese in diesem Forum am besten aufgehoben sind!
Besten Dank für jede Antwort im Voraus!
U. Kant
Wir planen eine neues Projekt "from scratch". .NET als Präsentationsschicht ist beschlossene Sache, ebenso wie natives (unmanaged) C++ als Business-Schicht oder wenigstens in Form einer eine C++-Klassenbibliothek für leistungskritische Operationen. Obwohl wir eine breite Wissensbasis sowohl in C++ als auch in C# vorweisen können, fehlt uns die Erfahrung bez. der Interoperabilität. So stellen sich uns folgende Fragen:
- Wenn ich es richtig verstehe, wurde C++/CLI eingeführt, um bestehenden Code möglichst einfach zu modernisieren.
FRAGEN:- Wenn man allerdings, wie wir, "from scratch" beginnt, sollte man dann lieber gleich C# statt C++/CLI benutzen und C# mit den nativen C++-Objekten kommunizieren lassen?
- Ich nehme an, dass, wenn alle leistungskritischen Berechnungen von nativen DLLs durchgeführt werden, es keinen Unterschied machen sollte, ob die Präsentationschicht in C# oder C++/CLI implemeniert ist?
- Eine native C++-Klasse wird innerhalb eines C++/CLI-Objekts wie folgt mit new (und nicht etwa gcnew) instanziiert:
Code:myScope::BusinessClass* pBs = new std::BusinessClass();
- Ist der so allokierte Speicher gemanaged? 2
- Ist das Objekt ein C++- oder ein .NET-Objekt?
- Gibt es einen Performanceverlust im Vergleich zu einem in einem nativen Objekt instatziierten Objekt dieser Klasse, z.B. durch irgendwelchen Overhead?
- Es ist also möglich, ein Objekt aus einer native Klasse innerhalb eines gemanagedten C++/CLI-Objekt direkt zu instanziiren.
FRAGEN:- Ist es überhaupt empfehlenswert, aus der nativen Klasse im managed Objekt direkt zu instanziieren? Oder sollte man besser eine native Wrapperfunktion benutzten, in welcher aus der nativen Klasse instanziiert wird?
- Kann in C# ein natives Objekt überhaupt instanziiert werden? Oder kann C# nur einfache native Funktionen verwalten?
So, das sind doch nun einige Fragen und ich habe keine Zweifel, dass diese in diesem Forum am besten aufgehoben sind!
Besten Dank für jede Antwort im Voraus!
U. Kant
Comment