News Profil Themen Bücher Magazine Links Kontakt English
www.python.org www.www.wxwidgets.org www.wxpython.org SIP boost.python

Projekt 2008.04 - Generalüberholung einer Windows-Anwendung

Die Anwendung verwaltet eine Datenbank und ist sehr dialoglastig. Zugleich enthält sie einige zeitkritische Auswertungen die das eigentliche Geschäftswissen enthalten.

Um später das Wissen bei der Wartung nicht offenlegen zu müssen war es in einem eigenen Projektteil untergebracht der in eine DLL mündete die später zur Laufzeit dynamisch eingebunden wurde.

Da außerdem abzusehen war das die Dialoge oft und gern angepasst bzw. übersetzt werden müssen wurden diese bereits damals in einer Beschreibungssprache kodiert, aus der Datenbank geladen und dann mit einem Interpreter als MFC-Dialoge aufgebaut.

Das Geschäftswissen und die zeitkritischen Teile in der DLL sind nach dem Umbau erhalten geblieben. Diese wurde mit SIP an Python angebunden. Der Interpreter für die Dialogstruktur wurde in Python komplett neu geschrieben, die Dialoge selber brauchten daher nicht angefasst zu werden. Anstatt MFC wird jetzt wxWidgets bzw. deren Python-Bindings wxPython benutzt.

Ich hatte auch überlegt die Anbindung über "boost.python" zu machen, aber die DLL sollte für das alte und das neue System identisch sein. Boost hätte in diesem Falle aber eine Anpassung des C++-Codes erfordert.

Die Portierung nach *IX erforderte nur eine Neuübersetzung des C++-Teils. Dafür brauchen jetzt 20 Arbeitsplätze, die vorher noch auf WinNT waren, keine Windows-Lizenz mehr.

Als Datenbank kommt SQLAnywhere zum Einsatz. Sie läuft auf einem alten Server der die Anforderungen neuerer Datenbanken nicht erfüllt. Das nächste Mal wenn zwischen zwei Projekten Zeit ist wird sie auf einen neuen Server verschoben und gegen PostgreSQL ausgetauscht.