Migration von MFC nach C# .NET
-
Hallo Community,
hat jemand von Euch Erfahrung mit der Migration von mittelgroßen bis großen MFC Applikationen nach C# .NET gemacht?
Ich suche außerdem wissenschaftliche Literatur zu diesem Thema, da ich evtl. darüber eine Diplomarbeit schreiben will. Wenn jemand Bücher über das Thema kennt, wäre das superklasse.
Bisher habe ich eine 2,5 Jahre alte Diplomarbeit von Alex Bögli bei Google gefunden, ansonsten nur relativ belanglose Webseiten.
Ist jemand von Euch evtl. mal auf Vorgehensmodelle gestoßen, die sich mit diesem Thema beschäftigen?
-
Es gibt keine Migration von MFC zu C#...
MFC = C++
C++ != C#...Es kommt immer darauf an, was Du machen willst und wie umfangreich das bestehende Produkt ist.
Entweder man schreibt die Oberfläche mit WinForms (oder Avalon) neu und lässt die "Buissnes-Logik" in C++ und macht dazu einen Managed-Wrapper.Oder aber man lässt MFC und macht neue Dialog mit WinForms und den passenden CWinForms* Klasse. Siehe:
http://blog.kalmbachnet.de/?postid=70Und was verstehst Du unter "wissenschaftlicher Literatur"?
-
Ziel ist eine in C++ mit MFC geschriebene Anwendung komplett nach C# .NET zu migrieren. Die Anwendung besteht aus ca. 1000 Klassen mit ca. 2,5 MB Source Code. Es ist ein mittelgroßes bis großes Projekt. Da haben 5 Mann ca. 4 Jahre dran entwickelt.
Dass ist das nicht alleine in einem halben Jahr schaffe ist mir klar. Es geht auch vielmehr darum eine Konzeption (also eine Vorgehensweise) zu entwickeln, wie man große MFC C++ Projekte in C#.NET überführt. Wobei das Ergebnis erst mal offen ist. Es kann auch rauskommen, dass eine Migration nicht sinnvoll ist, weil viel zu teuer.Die Firma, die mir freundlicherweise angeboten hat, die Arbeit dort zu schreiben vertreibt 2 Applikationen. Die neuere ist komplett in C#.NET geschrieben. Die alte ist ein MFC-Project. Die C#.NET Abteilung entwickelt Sachen in einer Woche für die die MFC-Abteilung 4 Wochen benötigt. Daher will mein Chef so schnell wie möglich migrieren. Und zwar komplett (Anwendungslogik und User Interface). Managed C++ kommt nicht in Frage. Der gesamte Code soll in C# .NET überführt werden.
Mit wissenschaftlicher Literatur meine ich "zitierfähige" Literatur (in wissenschaftliche Arbeiten). Dazu zählen nicht: Wikipedia-Artikel, CT-Artikel oder Computer-Bild-Artikel, in Foren gepostete Beitäge, oder Chat-Mitschnitte bei MSDN. Also eher Bücher mit "Tiefgang", IEEE-Veröffentlichungen usw.
-
P.S. Oft wird in diesem Kontext (Wechsel der Programmiersprache und des Applikationsframeworks) auch von Portierung gesprochen. Alex Bögli spricht in seiner Diplomarbeit von Migration, andere Quellen sprechen von Portierung. Ich hoffe ich konnte vermitteln, was ich meine.
-
Es gibt keine Migration oder Portierung von MFC nach C#.
Ein neu schreiben ist meistens sinnvoller und effektiver als etwas 1-zu-1 (was hier sowieso nicht geht) zu portieren.
Migration macht nur Sinn, wenn man langsam von MFC nach C++/CLI mit MFC als Basis und dann langsam nach C# will.
Aber mit Deinen Randbedingungen bleibt Dir vermutlich nichts anderes übrig als alles neu zu schreiben.
Somit besteht vermutlich Deine Dipl-Arbeit darin das bestehende System zu analysieren und ein "Grundkonztept" für eine Implementierung in C# (.NET) zu entwerfen...
-
Ziel ist eine in C++ mit MFC geschriebene Anwendung komplett nach C# .NET zu migrieren. Die Anwendung besteht aus ca. 1000 Klassen mit ca. 2,5 MB Source Code. Es ist ein mittelgroßes bis großes Projekt. Da haben 5 Mann ca. 4 Jahre dran entwickelt.
Lachnummer,
Ich == 6.3 MB Source Code ohne Headerdateien / 3 Jahre entwickelt.
Warum eigentlich von C++ nach C# ? Von C# nach C++ könnte ich ja noch verstehen.
-
Somit besteht vermutlich Deine Dipl-Arbeit darin das bestehende System zu analysieren und ein "Grundkonztept" für eine Implementierung in C# (.NET) zu entwerfen...
Richtig. Und dazu suche ich Erfahrungswerte von anderen Programmierern und Literatur. Vielleicht hat sich ja jemand aus der Community mal mit dem gleichen Problem auseinandergesetzt.
-
Hallo, ich suche wissenschaftliche Literatur zum Thema "Umstieg von einem Trecker auf einen VW Golf". Ich bin Diplomand in einer Firma und wir haben zwei Fahrzeuge (die von je einem Team gefahren werden), einen Traktor und einen VW Golf. Das erste Team braucht mit dem Trecker 4 Stunden, was das zweite in einer schafft (wir fahren je 200 Kilo Obst in die nächste Großstadt)! Der Chef will, dass das erste Team auch auf einen VW Golf umsteigt, gibt es wissenschafliche Literatur zu diesem Thema (die verschiedenen Spezialanhänger vom Trecker sollen auf einen VW Golf angepasst und auch die Fahrer müssen umgeschult werden)?
Der Vergleich hinkt zwar ein bisschen, aber im großen und ganzen ist es hoffentloch klar: das Thema des Umstiegs von einem Framework auf ein anderes ist und bleibt keine Wissenschaft, deswegen wirst du wohl kaum entsprechende Literatur dazu finden. Praktische Erfahrungen ebensowenig, weil wie bereits gesagt die WinForms-Applikationen einfach neu geschrieben werden, weil das wohl schneller, einfacher und natürlicher ist (man wird dabei u.A. die Altlasten los und strukturiert das Programm neu).
-
das Thema des Umstiegs von einem Framework auf ein anderes ist und bleibt keine Wissenschaft...
Du irrst. Im Software Engineering spielt das Thema Migration/Portierung eine große Rolle. Zur speziellen Situation der Portierung con C++ nach C# gibt es wie gesagt bereits eine Diplomarbeit, die aber 2,5 Jahre alt ist (Uni Zürich). Natürlich muss man das Thema erst mal losgelöst von der konkreten Situation betrachten, um dann im 2. Teil auf die speziellen Erfordernisse der Portierung von C++ auf C# einzugehen.
Die Tatsache, dass es wenig Literatur dazu gibt ist wohl darauf zurückzuführen, dass .NET eine relativ neue Technologie ist. Natürlich muss man eine "neue" Applikation schreiben. Das ist mir sonnenklar. Aber man fängt doch bitteschön nicht bei Null an. Ein Großteil der Algorithmik und Anwendungslogik kann übernommen werden. (Nimm als Beispiel ein Schachprogramm)
Die GUI ist nur eine Komponente. Bei der GUI gebe ich dir durchaus recht, dass man vieles "from the scratch" neu machen muss. Aber man wirft doch nicht die Arbeit von einigen Jahren über den komplett über den Haufen.
Praktische Erfahrungen ebensowenig, weil wie bereits gesagt die WinForms-Applikationen einfach neu geschrieben werden, weil das wohl schneller, einfacher und natürlicher ist
Du irrst. Ich weiß von mehreren Firmen, dass sie von MFC auf .NET umsteigen bzw.planen dies zu tun.
-
Wie ich (und auch der andere) schon erwähnt haben:
Es macht in den wenigsten Fälle sinn eine "Migration" (also ein 1-zu-1 umsetzen von MFC/C++ nach C#) durchzuführen!
Meistens ist es viel schneller und fehlerfreier einfach die Struktur zu analysieren und dann alles neu zu schreiben.Und aus der Analyse der Stuktur/Algorythmen und umsetzen nach C# kann man natürlich eine Wissenschaft machen
Ich persönlich würde erst mal GUI und Algorythemn/Datenstrukturen trennen. Dann sieht man schon schnell sehr viel, was an Aufwand reingesteckt werden muss
(Ihr könnte mich ja als Freelancer bei Euch anheuernhab genau so ein Projekt mit ca. 2 Mio. LOC in den letzten 5 Jahren erfolgreich "portiert"; hab mich mal hier:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-175488.html
ein wenig drüber ausgelassen).
-
Kann dir zwar beim Thema nicht helfen, aber ich würde dir raten auch in anderen Foren nachzufragen.
http://www.mycsharp.de/ ist zB. sehr empfehlenswert. Riesen Community mit einer Menge Leute, die wirklich Ahnung haben (nicht, dass das hier anders wäre ;))
Ich hoffe es ist kein Problem, wenn ich hier Werbung für ein anderes Forum mache (soll ja nur dem Themenersteller bei der Findung von Antworten helfen!)
mfg