What is DNX really?

Asked

Viewed 497 times

8

A long time ago I asked here what is the Runtime Environment, especially on the .NET. platform. It turns out that now . NET has DNX which is ". NET Execution Enviroment". In practice we use DNX to run software developed with the new version of . NET, having support to use the usual CLR or else the Core CLR.

At this point is my doubt. From what I see there is a difference between the Runtime Environment (in the case of CLR or Core CLR) and Execution Environment (in the case of DNX). It seems to me that DNX is only used to choose a Runtime Environment and somehow connect the software with the Runtime Environment, but I don’t quite understand if this is it and how it works.

In this case, what is the DNX and what is its real need? Moreover, what is its relation to the Runtime Environment?

1 answer

8


This is no longer valid with the implementation of CLI - Command Line Interface

Gradually all the technology that emerged from the opening of the code . NET and more modular architecture is consolidating and reaching the point of having everything necessary to use in production.

You may already know that Coreclr replaces . NET which is a platform full of things to make applications work. But if the CLR is only one of the components of the .NET. Then Coreclr does not completely replace the .NET. Some components that take care of the operating infrastructure of the applications developed using the CLR are necessary to start the application.

Remember that the moment you install . NET on the computer, you practically create a second operating system running there. If it is in the directory where . NET is possibly installed inside the C:\Windows You’ll see there’s something very complex there. That’s not just the CLR. Has compiler, environment managers responsible for exception control, memory management, threads, processes, domains, code security, etc. It is the native host that runs the managed applications.

Well, the DNX is this but with a different philosophy, more modular and less intrusive in the operating system, as is the .NET. It is a more conventional way of calling the managed application, ie, you call the DNX that will call the rest. On . Net this is more transparent. A lot of people think they are running a real executable when running an .NET. Note that I am not saying it is an exact replacement.

To official definition says he’s a SDK specific to. NET applications.

Its main motivation is to host ASP.NET applications, as it allows the application to run without relying on an extra infrastructure, such as IIS, for example. But it is not restricted to this.

I don’t think I need to say that one of his differences to . NET is that it was made to run on several platforms and the . Original NET continues to be exclusive to Windows. By its philosophy it must be difficult to port . NET in the current form to other platforms. And Microsoft isn’t even interested in this. Making the same system load environment and application would be very complicated on other platforms. That’s why Mono and Java don’t do this.

In the answer I gave (linked in the above question) I give more details about the fact that there are several hosts, various versions of CLR, some custom. How to manage all this, how to have something in common that makes it all work? The answer is DNX. Obviously there are other ways to run a. NET application without DNX. It is one of the ways to do this.

It also helps meet more modern demands. It handles modern configurations, packages and upgrades. It can manage dependencies and you just pull into one deploy what you’re really going to use.

Diagrama do DNX

Taken from DNX Wiki.

I know I’ve forgotten a few things he does, I try to improve over time. If you have something specific you need to know, which is translated from the documentation, leave a comment.

It’s good to stay tuned for news. The DNX is being modified.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.