What is our primary use case?
I am currently working on the development of a new product using Microsoft .NET Framework. The project is currently in the analysis, architecture, and user acceptance phases. It is a comprehensive system similar to ERP, designed to manage internal resources for a sizable bank. The application focuses on handling IT resources for the bank, and it is being developed in-house.
How has it helped my organization?
Within each specific .NET product of ours, we currently have a robust portfolio with around a dozen products actively running for our customers. Based on the user databases, it's evident that each product is implemented using .NET. In fact, one of our products boasts slightly over one thousand users. This underscores the prevalent use of .NET across our product range.
What is most valuable?
Firstly, I appreciate the decision to use Microsoft .NET Framework. I find it to be an excellent language, with a history rooted in providing an alternative to Java, albeit with initial challenges. It is gaining popularity and may be voted the most desirable programming language. What I particularly like about .NET is its language efficiency. While C# is the primary language, the platform also supports others, catering to those inclined towards functional programming. Although I started with Shell, I'm still grasping the concept of functional programming. Despite initial reservations about object-oriented programming, I acknowledge its advantages. .NET is a safer option, and despite criticisms, it has evolved over the years.
One notable aspect is .NET's transition to an open platform in recent years, distancing itself from being exclusive to Microsoft engineers. I appreciate the versatility of .NET, enabling code production for a wide range of platforms, presenting a strong competition to Java. It allows targeting practically any physical platform, showcasing its flexibility. These qualities contribute to my positive view of .NET, totaling thirteen aspects that I find appealing.
What needs improvement?
In the realm of Microsoft .NET Framework, particularly in the C# language, there have been significant developments that I find highly commendable. I am genuinely fascinated by the continuous evolution of the language, and staying abreast of the latest features in Azure is both challenging and enjoyable. Working with C# in Azure is particularly fantastic.
I appreciate in .NET, as compared to Java, is the enforcement of types, providing a better experience in terms of technicalities. Additionally, the introduction of Roslyn in the past few years has brought about the concept of late .NET, which I find interesting and powerful. This allows for the transformation of symbolic code just before execution, eliminating the runtime decision-making process and enhancing efficiency. However, late .NET does come with a drawback – a delay in the last-minute computation when starting an executable. While some may find this less appealing in terms of instant responsiveness, especially in serverless cloud environments, the efficiency gained from executing strictly binary code is valuable.
Despite potential drawbacks like the time required for activation, I view .NET favorably for its technical advancements and efficiency, especially in scenarios such as serverless cloud computing. It's essential to recognize the intricacies of how .NET processes code and the efficiency it brings, which some may overlook.
For how long have I used the solution?
I have been using Microsoft .NET Framework for many years, since 1992 or 1993.
What do I think about the stability of the solution?
What do I think about the scalability of the solution?
I'm frequently questioned about the scalability of .NET products by the company owner. In response, I inquire about the specific aspect of scalability they are interested in. If the concern is about handling sudden surges in traffic, I affirm that .NET is indeed scalable, especially with the implementation of group health checks. This ensures automatic scaling without manual intervention, providing convenience.
Contrary to common misconceptions, I emphasize that the performance of .NET is typically not hindered by processing power but by factors such as disk I/O and database operations. Scaling the database differs significantly from scaling processing power, as it involves handling transactions, open transactions, and conflicting operations. If isolation is not well-implemented, issues may arise. For instance, a database like SQL Server, while appearing appealing a decade ago for its tools and affordability, presented challenges in terms of scaling compared to Oracle. Understanding these nuances is crucial for making informed decisions about scalability.
How are customer service and support?
Regarding customer support from Microsoft, I can say that when we documented issues and submitted tickets, Microsoft was responsive and open, even without direct contact. Working with Microsoft has generally been positive, and their strategic direction is something we have followed closely. Microsoft's commitment to evolving their product has been beneficial for us, even though the unpredictability of their decisions can sometimes pose challenges. In a small company like ours, adapting to changes becomes more complex, especially considering the project size.
As a company, we are also involved in software development for the European Commission, where the strong requirement is to use software from the .NET world. The challenge arises when dealing with Java in parallel, as its community processes add an element of unpredictability. Managing a team that can swiftly adapt to changing technologies is an advantage, but it requires time and effort. The unpredictability of Java's direction contrasts with the more foreseeable evolution of .NET.
Which solution did I use previously and why did I switch?
We have had experiences with Oracle as well as .NET, specifically with the Silverlight framework, though that was some years ago. Silverlight, while not inherently bad, tends to be criticized, and I often advise people to understand its origin as the Presentation Foundation Everywhere (PFE), indicating its intention to provide a unified UI across various platforms. However, due to various challenges, it was eventually phased out, and Silverlight became obsolete. We once had a product active on SolarWinds 3.5, transitioned to SolarWinds Sorin, but unfortunately did not survive beyond Silverlight 5.
How was the initial setup?
Yes, it is easy. .NET has expanded its scope significantly. It's worth noting that while many may mention .NET, not everyone truly comprehends its intricacies. Nowadays, people often focus on microseconds, assuming they grasp the technical aspects, which can be misleading.
Although Continuous Integration and Continuous Deployment (CICD) may seem attractive for automated deployment, the allure of the cloud has somewhat overshadowed the significance of meticulous deployment, as it's often perceived as someone else's responsibility. This shift in perception, coupled with tools like CircleCI, requires a closer examination of their efficiency compared to more conventional platforms like Azure. Understanding the true speed and efficacy of these tools is imperative for making informed decisions.
What about the implementation team?
The shift in the deployment and maintenance is evident, as manual installations are no longer the norm. Intelligence is now directed towards automation, emphasizing the importance of testing. Once this process is completed, confidence in the system's functionality increases, alleviating concerns about manual loading and ensuring an automated and efficient workflow.
Everyone in our organization follows the mindset of having our proprietary tools. The majority of our internal tooling is developed in-house, making us predominantly a .NET-centric environment. While it's true that we also provide Java solutions, most of our confidence lies in .NET due to its reliability. Reflecting on past experiences, there were initial concerns about how autonomously and optimally .NET could run, especially in terms of memory management. However, over time, particularly with the introduction of .NET Core, those concerns have dissipated, and I am now completely confident in the reliability of .NET.
What's my experience with pricing, setup cost, and licensing?
In the interim, there's no need to purchase videos for viewing. Microsoft has made significant moves in the .NET space, starting with their response in Visual Studio Code and now providing Visual Studio entirely for free. This is a notable shift from the past when we used to pay substantial amounts for technical subscriptions. Previously, a group of ten developers could cost several thousand dollars annually for licensing. However, the current trend is to offer these tools for free to maintain their dominance in the developer market. The market dynamics have changed, and now developers can freely download Visual Studio, making it a preferred choice over other paid options.
What other advice do I have?
It has been around for about three months, and I've had a chance to delve into the capabilities. As for the .NET Framework, it's advisable not to use it anymore. While there might be some exceptional cases, I don't consider myself an expert on .NET Framework. The trend is shifting away from Framework towards .NET Core and now .NET 5. I would anticipate platforms to adapt and run seamlessly on the newer versions. Transitioning from Framework to newer versions might not be straightforward, particularly in terms of setup and configuration. Working with .NET Core involves a different approach, especially when dealing with configurations and influencing the product's behavior externally.
Switching everything from Framework to .NET Core in a short span may not be feasible, and even if you plan to do so, existing products and customer preferences may necessitate keeping the older products alive. Users may inquire about their familiar products, and it's essential to maintain support for them. Despite these challenges, I find .NET Core, particularly version 8.5, to be highly commendable. It excels in various aspects and is a robust platform, rating it 8.5 out of 10.
Disclosure: I am a real user, and this review is based on my own experience and opinions.