Thursday, September 24, 2015

Understanding DNX

Getting a handle on the new .NET Execution Environment (DNX) is difficult. I've been following the project for a while, and still get twisted around trying to explain it to people. I believe the following analogy and diagram help to understand the environment.

Keep in mind, this is a tenuous comparison meant to help people understand the environment. It is not a comparison of the technologies in question.

I often compare DNX and its ecosystem to the MEAN development stack (MongoDB, ExpressJS, AngularJS, and NodeJS). This development stack consists of a runtime environment (NodeJS) that hosts a framework for creating server-side applications (ExpressJS). These server-side applications can be accessed using client-side frameworks such as AngularJS. The entire stack can be backed with MongoDB for permanent storage.

The DNX environment is similar, but much richer. DNX is the runtime environment, much like NodeJS is for the MEAN stack. MVC can be used to create an API (formerly WebAPI*) that runs on the server in DNX, much like ExpressJS is used in the MEAN stack. The client-side component can still be AngularJS that calls the API. This is where the comparison ends.

DNX is unique in that it requires an implementation of .NET to be available in order for it to serve up applications. As of the Beta7 release, it can use either Mono or CoreCLR. This requirement allows software developers to completely control the environment in which their application lives, by choosing either Mono or CoreCLR as the backing .NET implementation.

The best part is that all of this can be run on Windows, Mac, and Linux! DNX enables developers to completely control their application's environment and runtime.

In my analogy, I left out the backing database technology in the DNX ecosystem. As the CoreCLR advances, it will enable applications to access SQL Server natively. This capability means that an app running on a non-Windows operating system will have "native" access to SQL Server.

Below is a basic diagram showing how the DNX landscape looks. Not all of the functionality depicted is currently available, but an awful lot of it is.

Since the DNX environment is changing rapidly, I would appreciate any feedback as to anything I have stated that is incorrect.

No comments:

Post a Comment