from Hacker News

Ask HN: How to Evolve a Legacy .NET Application with Python

by ninjamayo on 11/19/18, 12:56 PM with 9 comments

We have a legacy application that is built in Windows Forms and C# but in recent years we've been doing a lot of work in Python. We want to evolve this tool and gradually move all of the backend code to Python but still have a Windows desktop front-end either in Windows Forms (as is currently) or WPF.

I have already looked at different options building parts of the core libraries in IronPython or even using a REST web server to call the Python core but quite sure yet. Has anyone does this and are there any example applications that you know off using this idea?

  • by eksemplar on 11/25/18, 3:02 PM

    Why do you want WPF or windows forms for your application? Especially if you’re doing a web based backend any way.

    I know it’s a tad silly to use web uis for everything, but the truth is, that it’s where almost all of the ui innovations lie right now.

    It’s not just for design either, it’s also automation. Like if you use Django, a lot of the basic forms for inputs will actually write themselves based on you’d datamodel.

  • by shoo on 11/19/18, 7:43 PM

    I've seen:

    * .net product with embedded ironpython for scripting ;

    * desktop client talking to a backend server that happened to be implemented in python ;

    * desktop application implemented as a collection of command line tools for batch processing, with a windows desktop frontend. Some of the command line tools were implemented in python and bundled using py2exe, other command line tools were written in other languages

    these were all proprietary things with varying numbers of enterprisey customers, apologies, no sample code.

  • by backslash_16 on 11/19/18, 7:37 PM

    Using Python via IronPython and trying to get C# to talk to Python sounds like it could have lots of issues. I would go with a Python HTTP(S) API that gets called by the Winforms or WPF UI.

    This has the added benefit of forcing you into a more decoupled architecture and allows you to easily add a different type of UI (web, phone app, etc..)

  • by LiamPa on 11/19/18, 9:29 PM

    Nearing completion of something similar:

    Phase I C# -> python / Django / some simple html forms

    Phase II (in progress) Django rest backend / react front end

    We host the application internally, all our team members know at least basic python so updates are easy and deployment is much quicker.

  • by penetrarthur on 11/21/18, 7:43 PM

    What is the reason to rewrite a legacy c# code to python?