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.<p>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?
Why do you want WPF or windows forms for your application? Especially if you’re doing a web based backend any way.<p>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.<p>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.
I've seen:<p>* .net product with embedded ironpython for scripting ;<p>* desktop client talking to a backend server that happened to be implemented in python ;<p>* 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<p>these were all proprietary things with varying numbers of enterprisey customers, apologies, no sample code.
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.<p>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..)
Nearing completion of something similar:<p>Phase I
C# -> python / Django / some simple html forms<p>Phase II (in progress)
Django rest backend / react front end<p>We host the application internally, all our team members know at least basic python so updates are easy and deployment is much quicker.