
The .NET platform appeared in the early 2000s. It united several programming languages "under one roof", which was a novelty for that time. But the developers of the platform claimed that this innovation is of undoubted benefit: programmers began to create their applications in those languages that knew best, which were better suited for solving their problems.
Another innovation of the .NET platform was the technology of Active Server Pages (ASP.NET) (Active Server Page). With its help, it was possible to develop web applications interacting with databases relatively quickly. An important feature of ASP.NET was the ability to use all the power of object-oriented programming for web development. Applications written using this technology have better performance and protection. At least, Microsoft engineers believed in this.
')
It is difficult to overestimate the role of such innovations as web services. .NET provided developers with a toolkit for using them. Programmers got the opportunity to implement interaction with web services in any language of the .NET platform.
However, the too tight integration of ASP.NET with Windows IIS made it impossible to use an alternative web server for hosting applications. These circumstances over time caused more criticism from the developer community and were an unfavorable factor for the development of ASP.NET MVC.
Visual interface design - Web Forms, Windows Forms, then WPF - is also a significant achievement for developers. Now it may seem ridiculous to someone, but then the quality tool for creating GUI was new.
In addition to the classic platform implementation, the .NET Compact Framework (the .NET Framework version designed to run applications on devices based on the Windows CE platform.) And the .NET Micro Framework (the implementation of the Microsoft .NET platform for embedded applications in 32 and 64 bit microcontrollers).
Over time, the .NET platform has changed. If it was originally released as a toolkit for users of the Windows operating system, then in the future, the developers went to meet fans of other operating systems. For example, the Mono project appeared in the open source community, which was officially recognized as the implementation of .NET on Unix-like operating systems.
And in the summer of this year, Microsoft released a .NET cross-platform analog called .NET Core.
Nevertheless, many critical comments remain relevant, despite the fact that Microsoft has for many years been trying to eliminate the consequences of the not entirely successful implementation and architecture of the .NET platform.
The main complaint of critics is the irrational use of system memory. Allegedly competing platforms use memory where more economically, and moreover, many of them are free.
Of course, by now the platform has changed significantly and, let's say, multiplied. However, this diversity leads one to ask questions about the prospects for one or another direction of .NET development, how relevant this platform is today, how the requirements for .NET programmers are changing, and so on.

We talked with industry experts about where and why the platform is going.
Arkady Kochetkov, Softneo, Lead Development Engineer:
Has .NET passed its peak? What is the development stage of technology?Not passed, MS products have not gone away from the enterprise. But now it is definitely not fashionable.
How relevant is .NET under the dominance of mobile technologies, big data, the Internet of things?In the conditions of mobile technologies and the Internet of things (Java is more popular than Xamarin, and Mono and any Netduino is very much an amateur, for example) I would look towards other solutions. But if without .NET you and life is not sweet, then why not?
In which areas of development does .NET have more chances?Web.
If Microsoft did not promote their offspring, what could be the fate of .NET?Destiny would be sad. Someone will pick up the development of open sources, existing solutions will be supported, but creating new ones based on the technology that has lost support will be afraid. There will be fewer projects, and with time they will not.
Or did “promotion” mean PR? Only lazy did not hear about .NET.
What are the advantages of .NET over competing technologies?The syntactic sugar c #, greater reasonableness (in comparison with the main competitor), cool tools, ease of use with other MS products.
What promising technologies would you recommend for combining .NET to novice developers?If you are a novice developer, then start with the language itself, algorithms and structures, and if for some reason you turned your attention on .NET, already being able to do something, then you yourself know everything perfectly well. But if you somehow missed, then look at the .NET Core.
Has .NET passed its peak? What is the development stage of technology?I do not see a curve with one extreme in the development of .NET. The technology in my vision reached maturity as far back as in the dense 2005th year at the moment of .NET 2.0 release, since then there has been a continuous dynamic evolutionary development, combining both qualitative and quantitative changes. In addition to creating their own languages and tools constantly adopt something from other languages and environments. I do not see any prerequisites for sunset in the near future.
How relevant is .NET under the dominance of mobile technologies, big data, the Internet of things?One of the important advantages of .NET is the fact that you can write anything and anything. Want a mobile app - take Xamarin. Want to read something on the server? You are welcome!
.NET has long been sharpened for server use. Internet of things? It depends on what is meant by a device from IoT. If this is something with 64KB of RAM, then, of course, it is better to use C (although you can take .NET Micro if you have the desire and fanaticism). If you have the opportunity to shove at least some operating system there, then you can continue to write in C #. With the advent of CoreRT, which will provide the ability to build into native code under any platform (including using LLVM or translation to ANSI C), this will become even easier and more convenient.
In which areas of development does .NET have more chances?Traditionally, C # and .NET have been used for server applications and desktop applications with UI. And in these traditional areas for themselves, they feel best. Now with the advent of Xamarin for mobile devices, the stack has become available for developing UI using the normal system of bindings, templating controls and XAML, so the previous statement can be extended to mobile devices. If you ask me about practically any project, what we should do it on, then I will most likely answer that on .NET.
There is, however, one big gap in technology coverage: a cross-platform UI, which has not yet been properly closed, although there are solutions.
If Microsoft did not promote their offspring, what could be the fate of .NET?You can make an arbitrarily wonderful product, but if nobody knows about it, then no one will use it.
What are the advantages of .NET over competing technologies?In fact, we now get an analogue of C in portability, but with all the advantages of a managed code environment.
As it seems to me, the greatest effect can be obtained from synergy, when you use the same language, one technology on the server, desktop and all mobile devices. In such a scenario, virtually any developer from the team can switch between parts of the code base; you can also share the same code between elements of the system, if required.
You can also start another discussion on the benefits of compiled languages with strict static typing, but there are a lot of people with different opinions.
How do you assess the level of developers: did more low-skilled .NET-programmers appear, or their number decreased, and the level increased? Or does the distribution look different?I did not notice the growth in the number of low-skilled workforce “working for food,” as it happened with PHP at the time, but I also don’t observe a strong staff hunger.
What promising technologies would you recommend for combining .NET to novice developers?It depends on what you want to do, study the surrounding technology stack. If you want to write logic on the server, understand how SQL works (it is advisable to look at several dialects and understand that you’ll still use ORM), how nosql solutions work (mongodb, redis, and it doesn’t bother to look at elasticsearch things) messaging systems (RabbitMQ, MSMQ, ActiveMQ, look at libraries like MassTransit, EasyNetQ).
If you want to be a little closer to the web front-end, then you need to know the standard set of HTML / JS / CSS and at least learn how to use the node.js toolkit, especially since it is now integrated into the toolchain of the new ASP.NET assembly.
If you want to write installable applications that work with the user, then first you need to master the desktop WPF and its accompanying libraries (to touch MVVM frameworks like Caliburn.Micro, Prism, MvvmCross, to deal with the XAML internals), and then discover the development for yourself mobile devices, where you have to study them.
Has .NET passed its peak? What is the development stage of technology?I think that did not pass. .NET is now actively developing in several directions at once. Want a productive server with horizontal scaling: take. NET Core. Want a cross-platform mobile development - Xamarin. Would you like to write C # code on Mac - Rider IDE. Want Machine Learning and Data Science - F # to you.
Of course, much of the above is absolute bleeding edge. It must be understood that many of the tools we are used to are still unavailable. Many developers were shocked by the events of ASP.NET Core RC1 - RC2. But let's not forget what happens in the JavaScript ecosystem. Compared to this, everything is calm in the .NET world.
We can say that .NET is now "period of restructuring." On the one hand, we have accumulated a significant amount of code for corporate applications, which no one will ever rewrite, which means we will support it for decades to come. On the other hand, Microsoft is very quickly transforming and transforming .NET to the needs of business. Modern .NET relies on Azure, Linux and mobile platforms.
Time will show how a bloody enterprise gets on with “fashion trends”.
How relevant is .NET under the dominance of mobile technologies, big data, the Internet of things?There is no domination of big data, mobile technologies and other nonsense. This is all marketing bullshit. Yes, in the USA there are several companies that are known to everyone that are engaged in such things. But these are completely different tasks and budgets.
For some reason, many people believe that if you had hadoop / spark / “enter your” in your database, then suddenly everything will be great and profits will grow quadrillion times.
Modern DBMS successfully cope with data storage in 90% of cases. Most often, problems in poor design and improper use of tools. For mobile technologies, a server-side is still needed and needs to be written. Why not do it on .NET and not hover in Azure, especially since Microsoft is actively engaged in Docker support?
In which areas of development does .NET have more chances?I think the server side. Swift is already quite sane language, there is Java on Android. Windows Phone is still not found its niche. Something very serious has to happen for CTO / CEO managers to seriously consider Xamarin.
If Microsoft did not promote their offspring, what could be the fate of .NET?.NET would not exist, because no one would allocate money for its development. Would write in Java.
What are the advantages of .NET over competing technologies?Multi-paradigm, strong typing, rapid development of the C # language, support for Microsoft.
How do you assess the level of developers: did more low-skilled .NET-programmers appear, or their number decreased, and the level increased? Or does the distribution look different?It is hard to say. With the advent of LINQ, data manipulation tasks have been greatly simplified; therefore, in general, developers cope with typical tasks relatively well.
Problems begin when you need to take a step left or right. I noticed that many .NET developers do not understand how TPL, LINQ or async / await work. It happens that they even say, say “var leads to not strong typing”.
As a result, there is a gap between the "junior" and "seniors". Either a person knows how to fill in lines of code by example, without understanding how it works, or he can understand the platform better than you. I feel an acute shortage of team leads in the market.
What promising technologies would you recommend for combining .NET to novice developers?ES6 + React or Type Script / Angular, NodeJS; Java / Scala. I highly recommend learning Erlang or Haskell.
In an
interview, IT specialist and author of books on .NET Jeffrey Richter reflected on how he would design and implement the platform if it were possible to create everything from scratch:
Of course, in .NET and C # today there are things that both Microsoft and I personally would like to implement differently. It would be worth making .NET more “clean”, minimal, so that it does not use as much memory as it is now, it was not so “heavy”.
If today all this could be written "from scratch", I think it would be worthwhile to select a small core of the entire platform - a CLR-type system and a garbage collector. This should be the basis, but everything else could already be connected to the platform with something like “plug-ins”.
Thus, the same core would work in all versions of the platform, which would give greater flexibility. And already the development teams of a specific platform could add the rest of the functionality, according to the plug-and-play model.
But .NET was never designed this way. It was originally created as a solid, monolithic platform.