Skip to content

.NET development

Three things bring people to this page: a new system that has to still be right in ten years, a .NET Framework estate pinned to a runtime nobody wants to patch, and a service or desktop workload that no one inside the company will take on.

01Capabilities

What we build with .NET

.NET is the platform: the runtime, the base libraries and the hosting model your code actually runs on. This page covers platform-level decisions and the systems we build on them, and it feeds our custom software development work. Web application specifics sit on our ASP.NET page, and language-level questions on our C# page.

  • Platforms

    Business platforms built from the ground up

    Order management, dispatch, service and back-office platforms, the shape of system behind our logistics and transportation work and our automotive builds. Long-lived transactional systems where a wrong state transition costs real money and the domain rules outlive whoever wrote them. We build them under an ISO 27001:2022 certified information-security management system.

  • Workers

    Services, workers and scheduled processing

    The .NET workloads that never render a page: queue consumers, import and reconciliation jobs, integration daemons, Windows services and console processing. Hosting model, cancellation and restart behaviour matter far more here than anything a user sees, and they are where inherited systems tend to be quietly broken.

  • Integration

    Integration layers between systems never designed to talk

    ERPs, warehouse systems, payment providers, monitoring hardware in healthcare, and whatever the business bought last year, joined behind one contract. Idempotency, retries and reconciliation are the actual engineering, not the happy path. This is our platforms and integration work.

  • Migration

    Moving .NET Framework estates onto current .NET

    Platform-level migration: retargeting the solution, replacing the Windows-only dependencies that have no modern equivalent, and getting off a runtime that no longer gets attention. Route-by-route web migration lives on our ASP.NET page; this is the estate around it, and it sits inside legacy modernization.

03Fit

How we decide .NET is the right call

.NET is a strong default for rule-heavy business systems inside a Microsoft estate, and the wrong tool for several problems it still gets used for. Before that, there is a routing question, because a good share of what arrives labelled a .NET decision turns out to be a web framework decision or a language decision.

Six situations, and what we would tell you in each
Your situationWhat we recommend
Rule-heavy transactional system, Microsoft estate, expected to outlive the team that builds it Use .NETActive Directory, SQL Server and Windows operations all line up, and the tooling makes large refactors survivable rather than heroic.Tell us what the system doesOr book a meeting
The real question is a web application: routes, authentication, a Web Forms estate Different pageOur ASP.NET page. There the web framework decision dominates the platform one.Go to the ASP.NET pageOr book a meeting
The real question is the code itself: language version, async correctness, a large refactor Different pageOur C# page. That is a language exercise, and it is usually far cheaper than a platform migration.Go to the C# pageOr book a meeting
The product is really a data or machine-learning pipeline We argue againstThe library gap is not close, and Python owns that ground.Talk it through with an engineerOr book a meeting
Existing JVM estate, JVM operations, JVM people We argue againstJava will be cheaper to staff and run, and switching platform to fix a working estate almost never pays.Talk it through with an engineerOr book a meeting
A .NET Framework application that is stable, patched, and that nobody needs to change Leave it aloneA migration with no blocked change behind it is spending with no return, and we would rather say that than quote it.Sanity-check that with usOr book a meeting

Scope

What we own when we work on .NET is the platform decision and everything downstream of it: the runtime and hosting choice, the failure modes, the upgrade path, and whether your own developers can keep changing the system after we stop. That holds whether the domain is fintech, logistics or something we have not worked in yet. Where the honest answer is a smaller piece of work than the one you came for, you get that answer, including when the larger piece would have been ours.

The .NET systems that surprise people are almost never the web tier. It is the workers: queue consumers and overnight jobs with no user to complain when they stop, so a process that has been failing quietly for months looks like a data problem rather than an outage. Before we change how one runs, we make its failures visible and its restarts survivable. Often that turns out to be the whole engagement, and the migration somebody asked us to quote was never the thing that was broken.

Oleksandr TrofimovChief Technology Officer, unicrew

04Delivery

How a .NET Framework migration actually runs

Platform migrations fail at the discovery step, not the coding step. This is the order we run it in, and step two decides whether you are buying an upgrade or a redesign.

  1. Establish what the platform actually isTarget frameworks across every project in the solution, the hosting model, the third-party packages and their licence positions, and where the build is pinned. Solutions of this age usually have three or four different answers living inside one repository.
  2. Find the Windows-shaped dependencies firstServer-side WCF hosting, System.Web, Web Forms, COM interop, GDI drawing, MSMQ, anything reaching into the registry. None of these has a direct equivalent on current .NET, so they are what turns a retarget into a redesign. Discovering them in month four is the expensive version of this step.
  3. Move the libraries before the executablesShared domain and data libraries retargeted first, multi-targeting where both runtimes need them during the transition. Working bottom up keeps the application shippable instead of producing a long-lived branch nobody wants to merge.
  4. Run both runtimes in production at the same timeOld and new hosts live together, workload by workload, with a tested way back for each one. Cutover stops being a night you rehearse and becomes a setting you change. Each step is verified through the same QA and test automation practice we use on our own builds.

05Client voices

What these clients said

See our client reviews
5.0 unified ratingacross 61 verified client reviewsRead them on Clutch

06Stack

What we run alongside .NET

The technologies that show up in the same solutions, each with its own page if that is the decision you are actually making.

07Questions

Questions we get about .NET work

Answered the way we would answer them on the call. If yours is not here, it is a good first message.

You can bring our engineers onto your team, and on a platform migration that is often the right shape, because your people know why the system was built this way and ours know what breaks on the way across. What we will not do is supply developers and treat the architecture as somebody else's problem. Concretely: an architect outside the delivery team reviews the platform and hosting decisions, the work goes through the same QA and test automation practice as our own projects, and where you want an outside verdict on the estate before anyone commits to a scope we run a quality audit. Team extension is managed teams; handing over the outcome instead is custom software development.

This one is the platform: runtimes, hosting, greenfield system design, moving off .NET Framework, and workloads that are not web applications at all. C# is the language, so language version, async correctness and code-level refactors belong there. ASP.NET is the web framework on top of the platform, so routes, authentication and Web Forms belong there. Real engagements normally touch all three, so start from whichever is closest to your problem and we will sort the rest out on the call.

No. Current .NET runs on Linux and in containers, and for most new systems that is what we would do, because the hosting is cheaper and the deployment path is simpler. What keeps an application on Windows is rarely the platform itself, it is specific dependencies: server-side WCF hosting, Web Forms, COM interop, GDI drawing, MSMQ, registry access. Those are the first thing we look for, because they decide whether moving to Linux is a configuration change or a redesign of a component.

Broadly four. Web applications and the APIs behind them. Internal business platforms such as order management, dispatch and service scheduling. Background and integration workloads that never render a page. And desktop or line-of-business tools that are still running quietly inside companies. If you came looking for public examples of sites running on the platform rather than for a supplier, our post on web resources built using .NET is the more useful page. The commercial answer is that the platform is rarely the interesting constraint, and what your system has to guarantee is.

A scoping call with an engineer rather than a salesperson. For an existing estate we ask for read access to the repository and the build output first, because half an hour inside a solution file moves an estimate more than an hour of description does. What comes back is written: what we would do first, what we would not touch, and where the risk is concentrated. Most engagements start within two to four weeks, so ask on the call and the answer will be specific to your system.

Three shapes, and which one fits depends on how settled the scope is. Time and materials is billed hourly and quoted per project, which suits work where the scope is still moving. Fixed price is outcome based and quoted per project, and we will only offer it once the first read is done, because a fixed number on a system nobody has opened yet is a guess with a contract around it. Team extension is billed monthly per engineer, for when you need people inside your own process and planning. The rate inside any of them depends on the seniority mix the work actually needs, so it is quoted rather than listed.

Building on .NET, or stuck on .NET Framework?

Tell us what the system does and what is blocked. You will get an engineer's read on the platform decision, the migration path, and the parts we would leave alone.

Book a scoping call

Thank you

Thanks for your message. We will get in touch with you shortly.