Home / Case Studies / How to Migrate from .NET Framework to .NET Core
case study

How to Migrate
from .NET Framework to
.NET Core

How to Migrate from .NET Framework to .NET Core
Question

What’s driving software upgrades in today’s world?

The reasons vary for each business. Outdated technology, low software performance, and increased risk on customers' churn were the driving force behind our client’s move from obsolete .NET Framework to .NET Core.

About the Client

Our client is a reputable vendor of innovative digital and financial services for the healthcare sector. Amid the stiff competition, they still managed to become one of the key players in the US healthcare market.

To keep up and surpass the competition, the first step they took was upgrading from .NET Framework 4.7, which had limited functionality, to .NET Core 3.2, the latest version of the most popular framework.

The Business Case for Migration

As most companies do, initially, our client also didn’t put great emphasis on timely software updates until they faced serious lags in the system. In line with this, adding even one simple feature turned out to be a real problem because of legacy technology.

The company had been using .NET Framework for almost a decade. Back in the days, the technology was extremely popular for building desktop applications for Windows and server-based solutions.

Hence, evolving the system with .NET Core was much easier and cost-effective, that’s why the company included migration to .NET Core in their IT strategy.

  • snowflake
  • snowflake
  • snowflake
  • snowflake

.NET Framework vs .NET Core: Key Differences and Aspects

According to CodingGame research, .NET Core is currently one of the most popular frameworks amongst developers. Let’s take a short look at why it’s so in demand today.

.net framework
.net core
Perfomance & Scalability Average perfomance High performance. When comparing the performance of .NET Core vs .NET Framework, .NET Core runs with a much lower number of servers/Virtual Machines (VM). The reduced servers/VMs significantly save costs in infrastructure and hosting.
Licensing and maintenance costs Heavy Windows licenses including dedicated server fees and supporting tools. No licensing costs except for spendings on Visual Studio, etc.
Microservices architecture and containers Does not support the development and implementation of microservices. Windows containers based on the Windows process isolation technology. Supported. Docker containers enable you to host and deploy apps in the cloud.
Support Limited software support with poor documentation. Plenty of versions reached EOL (end of life). LTS (long-term support) for .NET Core versions is shorter than for its predecessor .NET Framework.
pie

Did you know?

.NET Framework 4.5.2, 4.6, and 4.6.1
will reach the end of support on April 26, 2022?

If you are using these versions in your project, there’s a real threat of the system becoming vulnerable. Consider our upgrading service to establish a migration plan and future-proof the software.

Get a quote

The Challenges We Faced in This Project

To start with, Microsoft attempted to facilitate the transition between various .NET versions. It worked out fine because, despite the difference between .NET Framework and .NET Core, organizations can simply port .NET Framework to the target environment. However, the same, for example, cannot be said when it comes to AngularJS to Angular migration which requires rewriting from scratch.
All the same, of course, there were some inconsistencies we needed to iron out in the process.

In this case, We had four core challenges:
arrowPrev Next arrow

How to Upgrade .NET Framework?
Importance of
Planning and Risk Management

As we mentioned before, Microsoft prepared a detailed guide on the transition from .NET Framework to .NET Core. But it's half the battle.

Upgrade to .NET Core 3.2

As soon as all project dependencies were evaluated and updated, we ported .NET Framework to .NET Core. That meant, 90% of source code was transferred when our team was working out compiler errors. Specifically,

01

Data Access Layer (DAL)
were converted to
.NET Core

02

IoC container was implemented using Autofac

03

RMP.Common.PredicateBuilder was migrated to the LinqKit PredicateBuilder

04

Old Global IoC Container was partially deleted

05

background service was refactored

In the meantime, the developers maintained the older system made with .NET Framework. That answers the question of "can .NET Core and .NET Framework coexist within a single project?"

modlogix-pattern

When migrating to .NET Core
makes sense?

There are still stable versions of .NET Framework with active support. Companies can securely use their systems and not move to .NET Core. However, there’re special cases to start the migration.

.NET Arcade Game
collapse close

Rewriting the Business Logic

Multi Tenant

Business Logic Layer

Data access layer

Scheme

Software migration is a perfect time to reorganize, thereby improving the system.

Firstly, our team evaluated and extracted the legacy business logic from the old application.

After that, we built a standalone Business Logic Layer (BLL) in .NET Core that encompasses the field-level and business-level logic for the application.

The process also involved moving out the logic for synchronizations jobs to the separate job.

The fullest guide on upgrading your .NET Framework app to .NET Core or .NET 6.

Learn more

Blog Posts

Committing Models Changes

Back to .NET Framework and .NET Core migration compatibility, there were critical cases that required a portion of manual work.

Therefore, while working on a root project (controllers, views, models), we changed models to comply with .NET Core language changes. It was also decided to rewrite views to express queries.

Ironing
Out Code Inconsistencies
and Testing
the App

Code quality directly affects the system performance, which was crucial for the client’s business.

Therefore, making the code performant, easy to maintain and clean became our top priority.

In doing this, we were guided by KISS, SOLID, and DRY principles, which stand for effective development.

KISS
SOLID
DRY

The next step was to refactor existed unit tests to work in the new project. They covered the whole functionality and conducted through each iteration. This way, we released a quality product to the end users.

Technologies
and Tools We Use

SCOPE OF WORK :
1 Full-stack Developer
4 Backend Developers
3 QA Engineers
1 Technical Writer
1 Database Developer
1 Business Analyst
6 months

Results

Companies often put off the software migration process if their software at least still works. It’s common for developers to be tired of legacy systems than the owners. However, there’s an obvious connection between modernization and benefits for business.
Cross-platform accessibility
Extensive support
Simplified maintenance and higher code efficiency

In contrast to .NET Framework limitations, .NET Core lets the system run smoothly on Mac, Linux, and Windows. That means developers spend less time on scaling the software. With the new .NET standard libraries, the dev team implements crucial features much faster in different environments at once.

Provided that .NET Core is an open-source project, portable class libraries from NuGet speed up the development process. If there are issues within a project, developers can instantly resolve it using documentation that are regularly updated.

.NET Core gives an outstanding performance with such features as execution speed and memory allocation. Speaking of maintenance, NuGet packages can be easily released and upgraded. Hence, the client can quickly jump to the newer version without making big changes in the codebase.

Results

Key Takeaways

Refactor the code until you can't. Restructuring the codebase is an essential part of the software development cycle. Neat and clean code eventually will save your resources.

Plan on upgrading the software in advance, even if it’s not your top priority right now. Start investing in documenting it all, as poor documentation is the number one problem encountered when transforming legacy systems.

Even plain migration projects can go sideways. Get a consultation from an experienced legacy software modernization company to cover all the bases. As an outcome, you’ll be aware of all the issues under the hood and possible pitfalls during the migration.

Our Team
on This Project

Andrew
Serge
Full-stack Developer

Optimization for better productivity

I prefer choosing modern frameworks for my projects. Of course, sometimes upgrades come with a cost, but the benefits are obvious. .NET Core offers a lot more in terms of speed development and greater efficiency, which are markers for high productivity.

quotes

Case Studies

Actions speak louder than words! Take a look at our legacy app modernization
services in essence.

All Cases

Let’s Start a
Conversation

Share your challenge with us – we want to hear from you!

* Please enter your name
* Please leave a message






    elipse
    close

    Ready to start your
    project?

    Let’s Talk

    We use cookies to ensure that we give you the best experience on our website. By continuing to browse this site you accept the use of cookies.

    I AGREE PRIVACY POLICY
    Whitepaper.doc
    close
    Get Your FREE Template!

    Please, provide the email address so that we can send the whitepaper to you.

    * Please enter your name





      CHECKLIST.DOC
      close
      Get Your FREE Template!

      Please, provide the email address so that we can send the checklist to you.

      * Please enter your name