Mattrx ran its predictive features on a Python scikit-learn microservice for two years. We replaced it with ML.NET running in-process inside the existing .NET 9 app — and trained real regression, classification, and clustering models in C# with no separate service, no second language in production, and no implementing gradient descent by hand.
If you're a .NET team that "does ML" by shipping a Python sidecar, you're paying a tax most teams never question: a second runtime, a second deploy pipeline, a second on-call surface, a cross-process hop on every prediction, and a data contract that drifts between two languages. For classical ML — regression, classification, clustering — you usually don't need any of it.
Before vs after
Dimension
Before (Python sidecar)
After (ML.NET in-process)
Languages in production
C# and Python
C# only
Deploy pipelines
2
1
Prediction path
HTTP to Flask -> scikit-learn
in-memory call
Prediction p95
45 ms
2.8 ms
Model artif
Discussion
Your thoughts matter!
Your input is valuable—be the first to share it!