<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jemin Desai</title>
    <description>The latest articles on DEV Community by Jemin Desai (@jemindesai).</description>
    <link>https://dev.to/jemindesai</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1769953%2F1f76c7ca-6c25-4813-8f89-43042dbebec1.jpg</url>
      <title>DEV Community: Jemin Desai</title>
      <link>https://dev.to/jemindesai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jemindesai"/>
    <language>en</language>
    <item>
      <title>Understanding the Core Components of CLR</title>
      <dc:creator>Jemin Desai</dc:creator>
      <pubDate>Tue, 13 Aug 2024 12:03:58 +0000</pubDate>
      <link>https://dev.to/jemindesai/understanding-the-core-components-of-clr-5a7g</link>
      <guid>https://dev.to/jemindesai/understanding-the-core-components-of-clr-5a7g</guid>
      <description>&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; Microsoft’s .Net framework has a virtual machine component called CLR (Common Language Runtime). In this blog, we will understand in detail the functions and advantages of the core components of the CLR. We will also go through .NET Framework’s JIT compiler and memory management by garbage collection in CLR. Let us explore the comprehensive core components of CLR.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Components of CLR
&lt;/h2&gt;

&lt;p&gt;Developers write code using high-level, readable programming languages like C#, F#, VB, Python, and others. However, computers need help comprehending these languages. In these cases, the compiler helps the developer translate the code into machine language. Whenever we generate an application in Microsoft Windows, the appropriate language compiler handles the conversion process, producing MSIL (Microsoft Intermediate Language) code.&lt;/p&gt;

&lt;p&gt;Then, with the aid of a JIT (Just In Time) compiler, CLR handles the code and produces operating system native code. Numerous CLR components are employed to carry out particular duties or operations. The JIT compiler is utilized in the .NET environment to accomplish this. It helps in the understanding and appropriate execution of the code by translating it. But you should also be aware that there are several kinds of &lt;a href="https://positiwise.com/blog/how-the-jit-compiler-transforms-net-code" rel="noopener noreferrer"&gt;JIT compilers in .NET&lt;/a&gt;. The IT compiler will assist you in choosing the best task for your undertaking.&lt;/p&gt;

&lt;p&gt;What Does the .NET Framework’s JIT Compiler Mean?&lt;br&gt;
&lt;a href="https://positiwise.com/hire-asp-net-developers" rel="noopener noreferrer"&gt;Running .NET applications&lt;/a&gt; requires a core component called a &lt;a href="https://positiwise.com/blog/how-the-jit-compiler-transforms-net-code" rel="noopener noreferrer"&gt;JIT, or Just-In-Time&lt;/a&gt;, CLR component. The JIT compiler works by translating code dynamically, resulting in runtime code optimization. JIT may also be used to compile a particular function, category, or method, which improves the speed and efficiency of the program.&lt;/p&gt;

&lt;p&gt;The primary distinction between a JIT compiler and other compiler types is that the former does code compilation after a program launches. This is sometimes expressed as follows: a JIT compiler just-in-time (or dynamically) builds code. Native code, a quicker and easier-to-read machine language, is created from the compiled code, also known as bytecode sequences. An instruction set that is quicker and easier to comprehend usually results from translating the code source into an alphabetical system that the host CPU is naturally proficient in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Garbage Collection in CLR: How It Manages Memory Efficiently
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Automatic memory management
&lt;/h3&gt;

&lt;p&gt;Thanks to the garbage collector, developers don’t have to bother manually generating or freeing up memory. By automatically managing memory, the garbage collector helps lower the possibility of leaks in memory and other problems.&lt;/p&gt;

&lt;h3&gt;
  
  
  Minimal effect on application efficiency
&lt;/h3&gt;

&lt;p&gt;The trash collector normally has little effect on application performance since it operates in the background. Garbage collection, however, occasionally results in momentary program delays or slowdowns, especially when a significant quantity of memory needs to be released all at once.&lt;/p&gt;

&lt;h3&gt;
  
  
  Generation-based collection
&lt;/h3&gt;

&lt;p&gt;C#’s garbage collector handles memory by taking a generation-based approach. Items are assigned to a “young” generation; if they make it through several disposal cycles, they are transferred to an “old” generation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Finalization
&lt;/h3&gt;

&lt;p&gt;The procedure enabling objects to carry out cleanup operations before their destruction is called finalization, and trash collection offers support. After the garbage collector collects an additional object, it filters the queue containing the objects with finalizers.&lt;/p&gt;

&lt;p&gt;The garbage collector is a solid and practical .NET Framework feature that may simplify memory management in C# programs. Even though it could occasionally result in performance problems, they are usually avoidable with proper planning and memory consumption optimization of the program.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://positiwise.com/blog/garbage-collection-in-clr" rel="noopener noreferrer"&gt;Garbage Collection in the .NET&lt;/a&gt; Framework allows for automatic management of memory. When generated at runtime, a certain amount of heap memory is set aside for a class object. However, the memory space allotted to the object is well-spent since it cannot be used once all of the program’s tasks have been finished. Garbage collection is handy since it automatically frees up memory when it is no longer needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Metadata in CLR: The Building Blocks of .NET
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://positiwise.com/blog/metadata-in-clr-the-building-blocks-of-net" rel="noopener noreferrer"&gt;Metadata in CLR&lt;/a&gt; is exchanged using non-standard type libraries. The data stored in the header section of a COFF-compliant PE in .NET is formatted according to certain standards. It includes various information, including the assembly’s name, versions, languages, and references to external and accessible internal types, methods, characteristics, and classes.&lt;/p&gt;

&lt;p&gt;The PE’s header contains a public key that controls security. Class, module, and other information enable the CLR Component to determine required structures. Using metadata, the CLR’s class loader element finds certain classes within assemblies locally or via networks.&lt;/p&gt;

&lt;p&gt;Thanks to the common language runtime, it is simple to develop apps and components whose objects communicate across languages. It is possible for objects written in multiple languages to interact with one another and have closely integrated behaviors. For instance, you may construct a class, call a method on the original class, and then use another programming language to derive a class from the original class. Additionally, you can provide a class instance to a method of a separate language-written class. They create, use, persist, and bind to types by the runtime’s rules to set up new types.&lt;/p&gt;

&lt;h2&gt;
  
  
  .NET Framework’s JIT Compiler and Its Function
&lt;/h2&gt;

&lt;p&gt;The JIT compiler’s ability to compile any programming languages supported by .NET is the main reason to use it. Software written in C#, Visual Basic, or F# for the .NET framework may be compiled and executed on a certain platform. Adding to the JIT exploits multi-language compilation within the CLR component. The .NET compilation program can grasp the preparatory language into which the CLR transforms the programming language code. Compared to the AOT compiler, it is more adaptable and produces effective code that complies with the underlying computer hardware specifications.&lt;/p&gt;

&lt;p&gt;JIT compilers contribute to greater flexibility. Runtime assembly enables it to perform per specification, even if you add an entirely novel function or change the hardware. JIT compilation optimizes memory use in .NET applications. You spare memory and computing power as a result. Different compiler types, such as a classical compiler, which compiles all code to machine language before a program runs, are contrasted with JIT compilers. As a result, the application loads more quickly, increasing user retention and contentment.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;The Original Blog Published at Positiwise:&lt;/strong&gt; &lt;a href="https://positiwise.com/blog/understanding-the-core-components-of-clr" rel="noopener noreferrer"&gt;Understanding the Core Components of CLR&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>corecomponentsofclr</category>
      <category>dotnetdevelopmentcompany</category>
      <category>positiwise</category>
      <category>commonlanguageruntime</category>
    </item>
    <item>
      <title>What is CLR? An Introductory Guide</title>
      <dc:creator>Jemin Desai</dc:creator>
      <pubDate>Tue, 06 Aug 2024 09:06:50 +0000</pubDate>
      <link>https://dev.to/jemindesai/what-is-clr-an-introductory-guide-48ah</link>
      <guid>https://dev.to/jemindesai/what-is-clr-an-introductory-guide-48ah</guid>
      <description>&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; A complete brief of the common language runtime is offered by highlighting the basics, core features, architectural components, and the role of CLR in the .NET app. By undergoing all these details, you’ll have a clear insight into this utterly crucial dotnet component.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is CLR?
&lt;/h2&gt;

&lt;p&gt;Regardless of the technologies in the &lt;a href="https://positiwise.com/technologies/dot-net-development" rel="noopener noreferrer"&gt;.NET ecosystem&lt;/a&gt;, CLR remains a crucial component for all. Without CLR, running a dotnet application is nearly impossible. That’s why, for &lt;a href="https://positiwise.com/hire-asp-net-developers" rel="noopener noreferrer"&gt;.NET developers and enthusiasts&lt;/a&gt;, it’s crucial to understand what CLR is, its features, its basics, and its exact role.&lt;/p&gt;

&lt;p&gt;To help you grasp all such CLR details, here we represent a brief blog.&lt;/p&gt;

&lt;h2&gt;
  
  
  CLR: Setup and Basics
&lt;/h2&gt;

&lt;p&gt;CLR, or &lt;a href="https://positiwise.com/blog/common-language-runtime-setup-and-basics" rel="noopener noreferrer"&gt;Common Language Runtime&lt;/a&gt;, is an integral component of the .NET ecosystem. It plays a crucial walk-on in enabling the .NET codebase to run on the operating system by removing the gaps between the programming language and the underlying system.&lt;/p&gt;

&lt;p&gt;Before we directly dive into the CLR, you should understand where CLR resides in the dotnet environment. To understand that, let’s get through a quick .NET compilation procedure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; You Write the code for the &lt;a href="https://positiwise.com/technologies/dot-net-development" rel="noopener noreferrer"&gt;.NET application&lt;/a&gt;, using any of the programming languages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; The associated compiler is used to compile the code into MSIL or IL language. The compiler for each language is different. For example, VBC is used for VB.NET, CLI is used for VC++, and CSC is for C#.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; The CLR comes into the light. It takes the IL code and uses the JIT (Just-In-Time) compiler to convert it to native or machine code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; The machine or native code is provided to the operating system, and the application runs.&lt;/p&gt;

&lt;p&gt;Thus, now we know that CLR contains JIT, which is used to convert intermediate language or MSIL to machine-readable code. In addition, it can also be said that CLR helps translate high-level programming language into machine language (0s and 1s).&lt;/p&gt;

&lt;h2&gt;
  
  
  The Common Language Runtime Architecture Components
&lt;/h2&gt;

&lt;p&gt;The CLR is made of numerous components that work in collaboration to make your code work on every compatible operating system. Its details are as follows:&lt;/p&gt;

&lt;h3&gt;
  
  
  Base Class Library
&lt;/h3&gt;

&lt;p&gt;The base class library helps the CLR to provide Datatype definitions, perform I/O operations, access details of loaded types, invoke security checks and more. It’s also compatible with all dotnet languages and is considered a primary pillar of CLR.&lt;/p&gt;

&lt;h3&gt;
  
  
  Type Checker
&lt;/h3&gt;

&lt;p&gt;To ensure that the correct types are being utilized for application development, a type checker is included in the CLR architecture. Its core functions are supported by CLS (Common Language Specification) and CTS (Common Type System) mechanisms.&lt;/p&gt;

&lt;h3&gt;
  
  
  COM Marshaller
&lt;/h3&gt;

&lt;p&gt;The COM Marshaller is preferred for allocating and freeing the memory assigned to the application. It ensures that the code utilized for memory allocation and freeing it up is using the same allocator. In addition, it also offers interoperability support for cross-platform apps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Thread Support
&lt;/h3&gt;

&lt;p&gt;Thread support is a built-in CLR mechanism that aids in running multiple processes simultaneously. It results in faster code execution and better compatibility with multi-core system architectures. Moreover, the large MSIL or IL files are converted to native code within minimal time, reducing the loading time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security Engine
&lt;/h3&gt;

&lt;p&gt;The security manager validates the code to ensure whether it’s safe to execute on the underlying operating system or not. It conducts the security checks at three main levels: the code, folder, and the machine level.&lt;/p&gt;

&lt;h3&gt;
  
  
  JIT Compiler
&lt;/h3&gt;

&lt;p&gt;The Just-in-Time compiler is one of the most important components of the CLR. It primarily converts MSIL to machine-understandable code. The JIT performs its functions just before the application runs and stores the translated code in memory for the entire session.&lt;/p&gt;

&lt;h3&gt;
  
  
  Garbage Collector
&lt;/h3&gt;

&lt;p&gt;The function of a garbage collector is quite seamless. It checks the non-functioning threads and deallocates the resources assigned to them. As a result, additional resources are not required, and the .NET application functions impeccably.&lt;/p&gt;

&lt;h3&gt;
  
  
  CLR Loader
&lt;/h3&gt;

&lt;p&gt;All the modules are handled by the CLR loader to enhance app performance with minimal resources. Additionally, if a request is raided for an on-demand module, it ensures that it is provided for seamless operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Debug Engine
&lt;/h3&gt;

&lt;p&gt;Debug engine functions for the managed code at runtime. It tracks the application using the “ICorDebug” interface to run debugging operations, such as execution control, expression evaluation, and breakpoints.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exception Manager
&lt;/h3&gt;

&lt;p&gt;The exception manager is used to control the catch blocks and handle runtime exceptions. However, if the catch block is not available, the application will be terminated. And the best part about this component is that it works efficiently with all dotnet programming languages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features of CLR
&lt;/h2&gt;

&lt;p&gt;Common language runtime is an avant-garde dotnet component, offering the following features of clr to ease the application development and execution.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The CLR is compatible with all the dotnet compatible languages and can convert their MSIL to machine or native language.&lt;/li&gt;
&lt;li&gt;It can run on all significant operating systems, including macOS, Linux, Unix, and Windows. Thus, cross-platform applications are supported.&lt;/li&gt;
&lt;li&gt;It consists of JIT, which comes into effect at runtime. Due to this, the additional memory is not utilized, and the app works completely fine.&lt;/li&gt;
&lt;li&gt;.NET CLR can be extended according to specific project requirements. Additional modules and libraries can be utilized for numerous purposes, such as creating dynamic assemblies, custom assembly logic, and more.&lt;/li&gt;
&lt;li&gt;It helps in improving the application performance by offering hardware intrinsic, garbage management, tiered compilation, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Role of CLR in .NET Program Execution
&lt;/h2&gt;

&lt;p&gt;The role of CLR in .NET program execution is quite crucial. It’s one of the main pillars in enabling the dotnet application to run on Windows, Linux, and macOS machines. Without CLR, you are not able to run even a single method written in any compatible programming language.&lt;/p&gt;

&lt;p&gt;When the code written by a developer is provided to a compiler, it’s only partially compiled. It’s done because, at this stage, the OS, processor, security, and other configurations of the underlying system are not defined for the application. Any user can utilize any kind of system to use the .NET software. And to ensure a seamless experience, CLR comes into play.&lt;/p&gt;

&lt;p&gt;CLR takes the partially compiled code and uses the in-built JIT to convert it to machine code. This machine code is translated in accordance with the system on which the application is going to run. As a result, a native experience is provided to the end-user.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summing Up
&lt;/h2&gt;

&lt;p&gt;CLR is an integral part of the execution of &lt;a href="https://positiwise.com/hire-asp-net-developers" rel="noopener noreferrer"&gt;.NET applications&lt;/a&gt;. It helps in providing a smooth experience to all users by converting the code to a machine-understandable format. The CLR consists of numerous components that aid in garbage collection, security management, running multiple threads, debugging, and more. If you are a .NET developer or someone associated with a dotnet environment, then understanding CLR is a must.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;The Original Blog Published at Positiwise:&lt;/strong&gt; &lt;a href="https://positiwise.com/blog/what-is-clr" rel="noopener noreferrer"&gt;What is CLR? An Introductory Guide&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dotnetdevelopment</category>
      <category>dotnetdevelopmentcompany</category>
      <category>clr</category>
      <category>commonlanguageruntime</category>
    </item>
    <item>
      <title>What is ASP.NET Core MVC? – The Complete Guide 2024</title>
      <dc:creator>Jemin Desai</dc:creator>
      <pubDate>Fri, 02 Aug 2024 12:47:16 +0000</pubDate>
      <link>https://dev.to/jemindesai/what-is-aspnet-core-mvc-the-complete-guide-2024-1mm8</link>
      <guid>https://dev.to/jemindesai/what-is-aspnet-core-mvc-the-complete-guide-2024-1mm8</guid>
      <description>&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; You can find numerous Microsoft technologies in the development domain for curating applications, such as .NET, &lt;a href="https://positiwise.com/blog/what-is-net-core" rel="noopener noreferrer"&gt;.NET Core&lt;/a&gt;, ASP.NET, and more. ASP.NET Core MVC is also one of the technologies from Microsoft’s stack.&lt;/p&gt;

&lt;p&gt;Every company providing .NET development services prefers ASP .NET Core MVC due to its lightweight and high-performing benefits. But there are many more things that you must know about it.&lt;/p&gt;

&lt;p&gt;So, let’s get started to understand ASP.NET Core MVC by gaining a brief about MVC in ASP.NET Core.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is MVC in ASP.NET Core?
&lt;/h2&gt;

&lt;p&gt;Before we dive into the explanation, advantages, core functions, and components of ASP.NET Core MVC, it’s essential to understand what is MVC Core. Once you know about MVC, the aim of understanding the development technology will be super easy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let’s understand MVC or Model-View-Controller.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;MVC is an architecture that is followed to develop applications in a layered structure. For instance, whenever you use ASP.NET Core MVC to curate your business app, the complete software will be divided into three layers: Model, View, and Controllers. All these three components or layers are dependent on each other to process data and provide results to the end-user.&lt;/p&gt;

&lt;p&gt;Further, the working of the MVC model is quite seamless. Whenever the app receives a request, it directly gets transmitted to the controller, which works in coordination with a model to process and retrieve the appropriate results. Following the output generation, the controller coordinates with the View to display data on the screen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In addition, the primary functions of all three MVC components are:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Functions of Models&lt;/li&gt;
&lt;li&gt;Functions of View&lt;/li&gt;
&lt;li&gt;Functions of Controller&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Functions of Model (M):&lt;/strong&gt; It handles the logic and provides details about the current application state. You can find both implementation and business logic encapsulated within the Model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Functions of View (V):&lt;/strong&gt; As the name defines, View is used for showcasing the data on the end-user’s device. In the background, it used the Razor View Engine to present the information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Functions of Controller (C):&lt;/strong&gt; Controllers handle everything, from coordinating with models to using correct logic and views to display the right content. Therefore, they manage the complete user interaction.&lt;/p&gt;

&lt;h2&gt;
  
  
  An Overview: What is ASP.NET MVC Core?
&lt;/h2&gt;

&lt;p&gt;ASP.NET MVC Core is another &lt;a href="https://positiwise.com/services/web-application-development" rel="noopener noreferrer"&gt;web application development&lt;/a&gt; framework from Microsoft based on the MVC architecture to ease desktop, mobile, and web-based app building. Primarily, it’s a framework, lightweight among all other Microsoft development technologies, and it’s also open-source for better customization.&lt;/p&gt;

&lt;p&gt;In addition, several startups, small, medium, and large-scale organizations, prefer ASP.NET MVC Core to build their business solutions. It helps them avail of top-notch software that uses fewer resources and is maintained within an affordable budget. Moreover, it seamlessly embeds with ASP.NET Core, aiding in streamlining all core operations.&lt;/p&gt;

&lt;p&gt;Furthermore, the top reasons to consider it for development include the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Helps in reliable app testing, leading to eliminating vulnerabilities, errors, bugs, and glitches.&lt;/li&gt;
&lt;li&gt;It provides cross-platform compatibility, aiding to run software on Windows, iOS, and Linux.&lt;/li&gt;
&lt;li&gt;It can be used to build APIs, help connect with third-party systems, and perform &lt;a href="https://positiwise.com/blog/web-api-for-crud-operations-in-net-6" rel="noopener noreferrer"&gt;CRUD operations&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The lightweight architecture helps in saving deployment and maintenance costs.&lt;/li&gt;
&lt;li&gt;It supports TDD-friendly support.&lt;/li&gt;
&lt;li&gt;The ASP.NET MVC Core development resources are easily available, and organizations can effortlessly outsource the developers.&lt;/li&gt;
&lt;li&gt;You can avail of &lt;a href="https://positiwise.com/technologies/dot-net-development" rel="noopener noreferrer"&gt;.NET development services&lt;/a&gt; from reputed firms, ensuring solutions within business constraints.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Core Components of ASP.NET Core MVC
&lt;/h2&gt;

&lt;p&gt;Now, you know that ASP .NET Core MVC is a framework you can use to create applications. However, to gain a deeper knowledge of the technology, you must know about its core features/functionalities.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Routing&lt;/li&gt;
&lt;li&gt;Model Validation&lt;/li&gt;
&lt;li&gt;Model Binding&lt;/li&gt;
&lt;li&gt;Dependency Injection&lt;/li&gt;
&lt;li&gt;Filters&lt;/li&gt;
&lt;li&gt;Areas&lt;/li&gt;
&lt;li&gt;Testability&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Routing
&lt;/h3&gt;

&lt;p&gt;To make ASP.NET Core MVC efficient, its routing mechanism is purely based on the routing of ASP.NET Core. The primary function of routing is to embed searchable URL functionality for better search engine optimization. In addition, you can also leverage its link generation facility, regardless of the file structure/organization on the server.&lt;/p&gt;

&lt;p&gt;Furthermore, its routing is categorized into Convention-based and attribute-based routing. One helps with global URL definition while accepting a request, and the other helps to associate the controller, actions, and route.&lt;/p&gt;

&lt;h3&gt;
  
  
  Model Validation
&lt;/h3&gt;

&lt;p&gt;The model validation of ASP.NET Core MVC is an advanced feature that verifies the attributes on the client side before uploading them to the server. Also, the same process gets executed on the server side before the application calls the action controller.&lt;/p&gt;

&lt;p&gt;Further, the validation model uses jQuery validation to enforce the browser’s annotation and add model type to the view layer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Model Binding
&lt;/h3&gt;

&lt;p&gt;ASP.NET Core MVC model binding aims to convert user requests into objects, leading the controller to process them effectively. Mainly, it converts the following types of requests:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Values entered through forms&lt;/li&gt;
&lt;li&gt;Data associated with routing&lt;/li&gt;
&lt;li&gt;HTTP headers&lt;/li&gt;
&lt;li&gt;Parameters associated with query string&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The benefits of this feature are that it saves the controller time to understand the request and process it. Therefore, the controller receives data in the defined parameter form, due to which the user receives accurate output within a minimal time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dependency Injection
&lt;/h3&gt;

&lt;p&gt;The reason to provide &lt;a href="https://positiwise.com/blog/dependency-injection-in-net-core-with-example" rel="noopener noreferrer"&gt;dependency injection in the ASP.NET Core&lt;/a&gt; MVC is to avail of IoC (inversion of control) among the classes and associated dependencies. In addition, it also leverages the application to follow the Explicit Dependency Principle. Due to this, your app can request needed/additional services and resources.&lt;/p&gt;

&lt;p&gt;Additionally, you can use the dependency injection to view files through inject variables. You need to call the @inject variable before you start writing HTML code, and your solution will start following the required principle.&lt;/p&gt;

&lt;h3&gt;
  
  
  Filters
&lt;/h3&gt;

&lt;p&gt;Filters are a crucial component of the ASP.NET Core MVC framework. It aids in providing the following prime functionalities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It helps in the encapsulation of cross-cutting concerns, such as exception handling.&lt;/li&gt;
&lt;li&gt;It supports the seamless running of pre-processing and post-processing logic.&lt;/li&gt;
&lt;li&gt;It can be set to run at a specific scenario. Hence, you can define a condition to trigger it during an individual procedure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additionally, you can apply a filter to actions and controllers. For instance, the Authorize filter can be used for generating MVC-based authorization files.&lt;/p&gt;

&lt;h3&gt;
  
  
  Areas
&lt;/h3&gt;

&lt;p&gt;In ASP.NET MVC Core, areas refer to a part of an application. Areas help to divide software into different small parts, helping development teams to build, deploy, maintain, and upgrade efficiently.&lt;/p&gt;

&lt;p&gt;Whenever a large application, such as an eCommerce store or an enterprise management system, gets developed, areas come into action. Due to this, developers work independently on every component and test it thoroughly to ensure its functionality as per client requirements. Also, it’s one of the main reasons behind the popularity and high usage of the ASP.NET Core MVC framework.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testability
&lt;/h3&gt;

&lt;p&gt;When it comes to testing an ASP.NET MVC Core application, you can be ensuring of removing maximum loopholes, handling exceptions, and eliminating errors. As a result of the features of the area, testers can easily look into every component, test it, and find where it lacks. Thus, the team receives a deep insight into the code that needs to be reconfigured, upgraded, or revamped.&lt;/p&gt;

&lt;p&gt;Further, it also leverages developers with &lt;a href="https://positiwise.com/blog/unit-testing-in-net-core-using-nunit" rel="noopener noreferrer"&gt;unit testing&lt;/a&gt; by offering dependency injection, interfaces, and other functionalities, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TestHost&lt;/li&gt;
&lt;li&gt;InMemory Provider&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Configuration Process of ASP.NET MVC Core
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The Original Blog Published at Positiwise:&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;&lt;a href="https://positiwise.com/blog/introduction-asp-net-core-mvc" rel="noopener noreferrer"&gt;What is ASP.NET Core MVC? – The Complete Guide 2024&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aspdotnet</category>
      <category>aspdotnetcore</category>
      <category>aspdotnetcoremvc</category>
      <category>positiwise</category>
    </item>
    <item>
      <title>.NET Framework VS .NET Core: A Detailed Technical Comparison</title>
      <dc:creator>Jemin Desai</dc:creator>
      <pubDate>Thu, 25 Jul 2024 08:34:17 +0000</pubDate>
      <link>https://dev.to/jemindesai/net-framework-vs-net-core-a-detailed-technical-comparison-1jji</link>
      <guid>https://dev.to/jemindesai/net-framework-vs-net-core-a-detailed-technical-comparison-1jji</guid>
      <description>&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; The .NET Ecosystem provides numerous tools and technologies that help to build futuristic business solutions. The.NET Framework and &lt;a href="https://positiwise.com/blog/net-core-and-how-to-configuring-https-in-asp-net-core" rel="noopener noreferrer"&gt;.NET Core&lt;/a&gt; are the primary development technologies under it. When selecting one among them, the question always arises: “Which is better between .NET Framework vs .NET Core?”.&lt;/p&gt;

&lt;p&gt;The confusion between the .NET framework and .NET Core is still going on. But now, you can know the difference between them and better. So, let’s get started by understanding the basics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Brief To .NET Framework and .NET Core
&lt;/h2&gt;

&lt;p&gt;Before you dive into the difference between .NET Framework and .NET Core, first, we must understand their basics.&lt;/p&gt;

&lt;p&gt;.NET Framework is a software development technology developed by Microsoft to build Windows-oriented applications. You can effortlessly download it from the official Microsoft website in a single file containing all the libraries, scripts, and other development tools. In addition, it also includes services, database connectivity, APIs, and interface-building components.&lt;/p&gt;

&lt;p&gt;Further, you can utilize the .NET framework using containerization technology, such as Docker. And if any of your current .NET framework-based application requires upgradation, you can do it by writing a new service in ASP.NET.&lt;/p&gt;

&lt;p&gt;Additionally, the .NET framework provides the following technological advantages, which are not available in .NET Core:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ASP.NET WPA (Web Page Applications)&lt;/li&gt;
&lt;li&gt;ASP.NET WFA (Web Form Applications)&lt;/li&gt;
&lt;li&gt;WCF Configuration and Implementation&lt;/li&gt;
&lt;li&gt;WCF Data Services&lt;/li&gt;
&lt;li&gt;Windows Workflow Foundation&lt;/li&gt;
&lt;li&gt;WPF (Windows Presentation Foundation)&lt;/li&gt;
&lt;li&gt;Windows Form&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Besides, there are some situations when .NET Framework would not be a reliable technology, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When you need a cross-platform compatible application&lt;/li&gt;
&lt;li&gt;When more speed and performance are required&lt;/li&gt;
&lt;li&gt;When open-source development technology is required&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, .NET Core framework can help you in all situations where the .NET framework doesn’t fulfill the project needs. .NET Core is also a Microsoft product released after the .NET framework. The primary aim of developing it was to provide developers the leverage of using .NET potential to create cross-platform functioning applications.&lt;/p&gt;

&lt;p&gt;.NET Core is quite different from the .NET framework. It’s an open-source technology that runs on Linux, Windows, and macOS machines. In addition, it enables to build web-based and mobile applications. You can prefer .NET Core for projects with the following requirements: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A multi-platform functioning application is required. &lt;/li&gt;
&lt;li&gt;Speed is the primary concern of the project &lt;/li&gt;
&lt;li&gt;The &lt;a href="https://positiwise.com/blog/common-architectures-in-asp-net-core" rel="noopener noreferrer"&gt;client requires a microservices architecture&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Open-source development technology is needed for more flexibility&lt;/li&gt;
&lt;li&gt;You require CLI (command line interface) to control the operations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  .NET Core VS .NET Framework: Differential Factors
&lt;/h2&gt;

&lt;p&gt;It would be best to focus on the factors below to differentiate between &lt;a href="https://positiwise.com/blog/a-descriptive-guide-to-dot-net-framework" rel="noopener noreferrer"&gt;.NET Framework&lt;/a&gt; and .NET Core. All the mentioned aspects are used by experts while selecting technology for development. Thus, once you undergo the differentiation, you will also gain a clear insight into the necessary technology. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Platform Compatibility&lt;/li&gt;
&lt;li&gt;Speed and Performance&lt;/li&gt;
&lt;li&gt;Device Compatibility&lt;/li&gt;
&lt;li&gt;License Type&lt;/li&gt;
&lt;li&gt;Microsoft Support&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Types of Applications&lt;/li&gt;
&lt;li&gt;Shipping and Packaging&lt;/li&gt;
&lt;li&gt;Microservices Support&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Platform Compatibility
&lt;/h3&gt;

&lt;p&gt;Regarding platform compatibility, .NET Core is considered better due to its compatibility with Windows, Linux, and macOS. In comparison, the .NET framework is only accessible on a Windows machine. &lt;/p&gt;

&lt;p&gt;Developing an application using .NET Core will run on all the major Windows, macOS, and Linux-based devices. However, .NET framework-based applications will only run on a Windows system. Thus, due to cross-platform compatibility, .NET Core is preferred by organizations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Speed and Performance
&lt;/h3&gt;

&lt;p&gt;In the rapidly evolving industry, everyone needs a high-performing application that can execute requests within a minimal time. &lt;/p&gt;

&lt;p&gt;From an expert’s perspective, .NET Core is faster than the .NET Framework. With the introduction of ASP.NET Core, developers can accelerate application speed by 5x to 7x. In addition, .NET Core is the latest release, aligns with advanced standards, and is lightweight. Due to all such reasons, its code gets effortlessly compiled, providing appropriate outputs within minimal time to all end-users. &lt;/p&gt;

&lt;h3&gt;
  
  
  Device Compatibility
&lt;/h3&gt;

&lt;p&gt;When developing applications for devices with different operating systems, .NET Core effortlessly wins. You can utilize it for creating mobile, desktop, and IoT applications for Windows, Linux, and macOS-based devices. Whereas .NET Framework only allows development for Windows devices. &lt;/p&gt;

&lt;p&gt;In addition, .NET Core offers leverage to use machine learning and artificial intelligence in the application for better optimization. &lt;/p&gt;

&lt;h3&gt;
  
  
  License Type
&lt;/h3&gt;

&lt;p&gt;The dotnet vs dotnet core entirely contrasts in terms of license type. Where .NET Core is available as an open-source development technology, the .NET framework is under the proprietary control of Microsoft. &lt;/p&gt;

&lt;p&gt;In addition, only a few components of the .NET framework come under open-source license. Due to such factors, .NET Core is highly flexible, as you can customize it more efficiently per requirements. But, for .NET framework development, you need to rely on the scope of Microsoft and its standards.&lt;/p&gt;

&lt;h3&gt;
  
  
  Microsoft Support
&lt;/h3&gt;

&lt;p&gt;You will get Microsoft support for both if you select .NET Core or .NET Framework. You can expect the following support from Microsoft: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resolution to crash reports &lt;/li&gt;
&lt;li&gt;Security patches &lt;/li&gt;
&lt;li&gt;Bug fixing updates &lt;/li&gt;
&lt;li&gt;New version to support additional operating systems and devices &lt;/li&gt;
&lt;li&gt;Resolution for performance issues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In addition, Microsoft categorizes its support as long-term and standard, in which 36 months and 18 months of support are provided simultaneously. It depends on the version of .NET Core and .NET Framework, which decides whether you will get LTS (Long Term Support) or STS (Standards Term Support).&lt;/p&gt;

&lt;h3&gt;
  
  
  Security
&lt;/h3&gt;

&lt;p&gt;Data and code security are the two primary concerns regarding software development. Both .NET Core and .NET Framework are considered secure technologies. However, the .NET framework leads from .NET Core, as it provides Code Access Security or CAS. &lt;/p&gt;

&lt;p&gt;CAS is an advanced security mechanism that restricts the code from accessing core OS files, executing reflection, and more. Due to this, a user with high privilege gets prevented from performing malicious activity. &lt;/p&gt;

&lt;p&gt;Therefore, in terms of security, the .NET framework wins the competition. &lt;/p&gt;

&lt;h3&gt;
  
  
  Types of Applications
&lt;/h3&gt;

&lt;p&gt;Nowadays, everyone prefers a different application, such as mobile and web-based. Also, each user’s device’s operating system differs, creating an extended list of user requirements. To fulfill all such needs, .NET Core is a reliable choice. It allows the creation of cross-platform compatible mobile applications using Xamarin. &lt;/p&gt;

&lt;p&gt;But, if you want to create a desktop application for a Windows machine, then the .NET framework can help you. It works seamlessly on Windows and aids in aligning the app with the operating system’s standards. &lt;/p&gt;

&lt;h3&gt;
  
  
  Shipping and Packaging
&lt;/h3&gt;

&lt;p&gt;You can download the .NET Framework and .NET Core from Microsoft’s official website. &lt;/p&gt;

&lt;p&gt;The .NET Framework is available as a single file, which you must download and install on your computer system. In addition, all essential libraries are also bundled with the .NET Framework. Contrastingly, .NET Core gets shipped as a NuGet package collection. &lt;/p&gt;

&lt;h3&gt;
  
  
  Microservices Support
&lt;/h3&gt;

&lt;p&gt;With the development and maintenance of complex systems, microservices architecture is getting used highly. You can also use it with .NET Core but not with .NET Framework. &lt;/p&gt;

&lt;p&gt;In addition, when you see a company offering .NET application development services with microservices, it’s referring to .NET Core. And you can opt for it, as it allows you to update a single application component without impacting the others in sync. Thus, .NET Core helps in increasing the uptime and data availability.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Choose .NET Core and .NET Framework?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Points to Consider for .NET Core:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;If your project necessitates the development of a microservices-based architecture, .NET Core is a suitable choice.&lt;/li&gt;
&lt;li&gt;When targeting multiple operating systems (Windows, Linux, macOS), .NET Core is preferred. Its cross-platform support allows you to reach a broader audience and deploy applications to various environments.&lt;/li&gt;
&lt;li&gt;If your project heavily relies on CLI tools, .NET Core should be favored. It offers robust command-line capabilities, making it well-suited for tasks like automation and scripting.&lt;/li&gt;
&lt;li&gt;When starting a new project from scratch, it’s advisable to use .NET Core. Microsoft has positioned .NET Core and its successors (e.g., .NET 5 and later .NET 6) as the future of .NET development, making it a forward-looking choice.&lt;/li&gt;
&lt;li&gt;If your project demands high performance and scalability, .NET Core offers significant performance improvements over the older .NET Framework, making it a preferable option for performance-critical applications.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Points to Consider for .NET Framework:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;If you have existing applications built on the .NET Framework, maintaining compatibility with those applications may necessitate the use of the .NET Framework. Migrating such applications to .NET Core can be a complex and time-consuming process.&lt;/li&gt;
&lt;li&gt;When your application is intended to run exclusively on Windows, the .NET Framework is a viable choice. It provides deep integration with Windows features and services.&lt;/li&gt;
&lt;li&gt;If your application relies on Windows-specific functionalities that are not available in .NET Core, such as Windows Forms, Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), or ASP.NET Web Forms, using the .NET Framework is necessary.&lt;/li&gt;
&lt;li&gt;The .NET Framework offers a wide range of built-in services, including memory management, security, networking, data structures, and more. If your project heavily depends on these services, it may be more convenient to use the .NET Framework.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How To Avail .NET Application Development Services?
&lt;/h2&gt;

&lt;p&gt;Nowadays, .NET has been a trending choice between organizations for developing their business solutions. And the best way of building such an application is through a .NET development agency. But, you must ensure that your chosen firm is reliable and trusted, such as Positiwise Software Pvt Ltd. &lt;/p&gt;

&lt;p&gt;If you want to avail top-notch &lt;a href="https://positiwise.com/technologies/dot-net-development" rel="noopener noreferrer"&gt;.NET development services&lt;/a&gt;, follow the below steps: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Assure the company provides both .NET and .NET Core development services. &lt;/li&gt;
&lt;li&gt;Review the client feedback, portfolio, and pricing models. &lt;/li&gt;
&lt;li&gt;Discuss your requirements with the company and get a cost and time quotation. &lt;/li&gt;
&lt;li&gt;Test the skills of their .NET developers. &lt;/li&gt;
&lt;li&gt;Analyze the data security standards of the firm. &lt;/li&gt;
&lt;li&gt;Sign the NDA and initiate the project. &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion: .NET Framework VS .NET Core – Which One To Choose?
&lt;/h2&gt;

&lt;p&gt;.NET Framework and .NET Core are the primary technologies most professionals consider for developing business applications. Both are the products of Microsoft but offer contrasting features and functionalities.&lt;/p&gt;

&lt;p&gt;When looking to hire .NET Core developers, ensure they understand that .NET Core can run on any Linux, Windows, and macOS platform, whereas .NET Framework is only compatible with Windows OS. In addition, .NET Core aids in curating web-based and mobile apps. On the other hand, the .NET framework enables the creation of desktop applications. Also, .NET Core is faster and supports microservices but is less secure than the framework. &lt;a href="https://positiwise.com/hire/hire-dot-net-core-developers" rel="noopener noreferrer"&gt;Experienced .NET Core developers&lt;/a&gt; will be knowledgeable about these key differences between .NET Core and Framework.&lt;/p&gt;

&lt;p&gt;Therefore, if you need a desktop app only for Windows machines, then choose the .NET framework. Otherwise, .NET Core will be the most appropriate choice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The Original Blog Published at Positiwise:&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;&lt;a href="https://positiwise.com/blog/what-differs-between-the-net-framework-and-the-net-core" rel="noopener noreferrer"&gt;.NET Framework VS .NET Core: A Detailed Technical Comparison&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>netcore</category>
      <category>netcorevsnetframework</category>
      <category>positiwise</category>
      <category>netdevelopmentcompany</category>
    </item>
    <item>
      <title>Domain-Driven Design Core Principles and Challenges</title>
      <dc:creator>Jemin Desai</dc:creator>
      <pubDate>Mon, 22 Jul 2024 08:39:41 +0000</pubDate>
      <link>https://dev.to/jemindesai/domain-driven-design-core-principles-and-challenges-46je</link>
      <guid>https://dev.to/jemindesai/domain-driven-design-core-principles-and-challenges-46je</guid>
      <description>&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; Domain Driven Design (DDD) is a software development approach that prioritizes effective communication and collaboration between developers and stakeholders. It aims to create software that accurately represents the intricacies of a business domain. In this blog post, we will explore the circumferential aspects of the DDD, including the core principles, and examine the challenges that may arise during its implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  An Introduction to Domain Driven Design
&lt;/h2&gt;

&lt;p&gt;Eric Evas first introduced &lt;a href="https://positiwise.com/blog/domain-driven-design-in-net-development" rel="noopener noreferrer"&gt;Domain Driven Design (DDD)&lt;/a&gt; in his book ‘Domain-Driven Design: Tackling Complexity in the Heart of Software’ published in 2003. Domain-driven Design is a way of developing software that focuses on understanding and modeling the business area it supports. Its purpose is to improve software quality by integrating it closely with business needs. &lt;/p&gt;

&lt;p&gt;DDD is a set of principles which help developers to develop well-structured software. If developers use it properly then it leads to crafting domain models. These models capture complex business rules and create software that reflects real-world business situations to the software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Top 5 Core Principles of Domain Driven Design
&lt;/h2&gt;

&lt;p&gt;Traditional &lt;a href="https://positiwise.com/services/custom-software-development" rel="noopener noreferrer"&gt;software development&lt;/a&gt; increases the complexity of communication between the technical team and the non-technical team, especially in complex domains. DDD, a domain-driven design, provides a solution by its core principles and collaborative approach to understanding the business domain. &lt;/p&gt;

&lt;p&gt;Let’s dive into the core principles of Domain domain-driven design.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ubiquitous Language
&lt;/h3&gt;

&lt;p&gt;Ubiquitous language is a common vocabulary. Developers, stakeholders, and domain experts use this as the preferred language in software development projects. It helps everyone to understand each other well in the project by using clear and precise terms to reflect the business domain. It helps everyone stay on the same page and ensures the software correctly represents real-world concepts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bounded Contexts
&lt;/h3&gt;

&lt;p&gt;A Bounded Context is a particular area within a larger project where specific terms and models are consistently applied. Many different parts of systems have similar terms, but a bound context gives them different meanings. This helps teams to build models without confusion and they can manage complex projects very easily by breaking them into small parts with manageable sections.&lt;/p&gt;

&lt;h3&gt;
  
  
  Focus on the Core Domain
&lt;/h3&gt;

&lt;p&gt;Focusing on the core domain in Domain Driven Design means prioritizing very important and extraordinary features of the software. This helps to make clear communication for both technical and non-technical people. By identifying the major business value and what makes software stand out, the core functionality emerges as the foundation for a durable system with a clear purpose.&lt;/p&gt;

&lt;h3&gt;
  
  
  Domain Events
&lt;/h3&gt;

&lt;p&gt;Domain Events signal important happenings within the system in Domain Driven Design. These events show updates and reactions of different functions. They make the system responsive and connected to improve modularity and build audit trails for better traceability. Developers can design clear events with handling mechanisms and sometimes store them to develop a responsive and reflective system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Evolutionary Design
&lt;/h3&gt;

&lt;p&gt;Evolutionary design in DDD domain driven design aims to improve software and domains. This approach creates versatile systems by continuous refinement based on good domain understanding and changing requirements. Using Bounded Contexts, which focus on core functions, the features are gradually introduced, which helps reduce risk and promote continuous improvement. This gives surety of the system to stay valuable and relevant as changing requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Top 5 Biggest Challenges of Implementing Domain Driven Design 2024
&lt;/h2&gt;

&lt;p&gt;As we know, DDD Domain-Driven design builds systems that are easily maintainable and adaptable. Implementing DDD can be challenging. This part of the article explores the biggest challenges of DDD and how you can overcome these challenges in 2024.&lt;/p&gt;

&lt;h3&gt;
  
  
  Difficulty
&lt;/h3&gt;

&lt;p&gt;DDD can lead to difficulties, specifically in large and complex domains. Particularly, modeling these areas needs a deep understanding and continuous involvement in dealing with uncertainty. Developers require perfect planning, collaboration, and expertise to manage the difficulties. By using these, developers can simplify the complexities built in large domains by making successful DDD implementation. This helps to overcome hurdles and leverage the benefits of DDD for developing software, which reflects the complications of the business domain.&lt;/p&gt;

&lt;h3&gt;
  
  
  Context Alignment
&lt;/h3&gt;

&lt;p&gt;A large and complicated domain area has different sections that might have their own rules and structures. Alignment of bounded context is complex and time-consuming. If developers want to bring them together smoothly, they require good teamwork and communication. It helps to ensure everything runs smoothly without any confusion. Developers can integrate all sections properly and create an efficient system by focusing on teamwork. This is important to maintain clarity and consistency throughout the development process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Technical Complexity
&lt;/h3&gt;

&lt;p&gt;If Domain Driven Design works well, you will be able to use new technologies and integrate them into your existing systems seamlessly. This might involve reshaping code and dealing with technical issues such as performance, scalability, and maintainability. It is important to deal with this kind of challenge for the success of DDD projects, which needs continuous adjustments and planning to adopt new methods and tools. Managing these things is crucial for achieving all the benefits of DDD.&lt;/p&gt;

&lt;h3&gt;
  
  
  Change Resistance
&lt;/h3&gt;

&lt;p&gt;Introducing DDD can lead to resistance from team members who are implementing a traditional development approach and are not ready to change because they think it is difficult and impractical. Key factors in overcoming this include education, leadership, and good communication. Educating the team members about DDD helps to understand its principles and benefits. Good leadership is important for solving doubts and confusion. Good communication ensures all members are on the same page and can collaborate easily.&lt;/p&gt;

&lt;h3&gt;
  
  
  Overcomplicating Design
&lt;/h3&gt;

&lt;p&gt;When applying DDD, avoid going too far, focusing on overly complex models, and adding unnecessary complications. It is important to find the right balance between simplicity and effectiveness to avoid overcomplicating the design and implementation. &lt;/p&gt;

&lt;p&gt;An overcomplicated design makes system maintainability and adaptability difficult. Aim for a design that captures the necessary business complexities without becoming overly complex. Maintaining this balance ensures the design and implementation remain clear and manageable, aligning with project goals and leading to successful outcomes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The DDD Domain Driven Design is the best approach to developing software that matches real-life business requirements. Using common language and boundaries helps make systems easily maintainable and adaptable. However, it has some challenges, like aligning contexts and technical issues. A software development company specializing in DDD. We offer the tools and solutions needed to handle these challenges and ensure success for your project. According to your requirements, you can work with our Domain Driven Design experts to make a smooth process, overcome common hurdles, and deliver the &lt;a href="https://positiwise.com/services/custom-software-development" rel="noopener noreferrer"&gt;best software solution&lt;/a&gt; that works excellently in the long run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The Original Blog Published at Positiwise: &lt;a href="https://positiwise.com/blog/domain-driven-design-core-principles-and-challenges" rel="noopener noreferrer"&gt;Domain-Driven Design Core Principles and Challenges&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>domaindrivendesign</category>
      <category>positiwise</category>
      <category>softwaredevelopmentcompany</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Choose .NET Software Development Company in 2024</title>
      <dc:creator>Jemin Desai</dc:creator>
      <pubDate>Fri, 19 Jul 2024 05:55:16 +0000</pubDate>
      <link>https://dev.to/jemindesai/choose-net-software-development-company-in-2024-5d54</link>
      <guid>https://dev.to/jemindesai/choose-net-software-development-company-in-2024-5d54</guid>
      <description>&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; Discover the potential reasons to choose a .NET software development company in 2024 for building your mobile, desktop, web, and all other applications. The blog provides a brief on how to choose such a firm by highlighting factors such as affordability, developer experience, data security, and more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose .NET Software Development Company
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://positiwise.com/technologies/dot-net-development" rel="noopener noreferrer"&gt;.NET technology&lt;/a&gt; is a revolution for the software development industry, as it ensures the development of a high-performing, scalable, secure, and stable application. But, all these leverages can only be availed by working with a .NET software development company. Such firms have all the resources to aid you in increasing your potential and improving business productivity through dotnet tech.&lt;br&gt;
Although, the benefits of a .NET development firm don’t end here. In 2024, it offers you much more, and we are going to discuss all of it here. So, let’s have a look at all aspects, leading us to choose the .NET company as a primary technology partner.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Hire .NET Software Development Company in 2024
&lt;/h2&gt;

&lt;p&gt;The following are the top reasons to choose .Net software development company in 2024 for curating your business software solution.&lt;/p&gt;

&lt;h3&gt;
  
  
  1: Affordable Development and Maintenance
&lt;/h3&gt;

&lt;p&gt;The first reason for choosing a .NET software development company is the budget. Numerous firms outsource their &lt;a href="https://positiwise.com/technologies/dot-net-development" rel="noopener noreferrer"&gt;.NET development services&lt;/a&gt;, which can be easily afforded by any business. You can pay the company per hour, monthly, or per project basis at your convenience.&lt;/p&gt;

&lt;p&gt;In addition, when you choose an out-staffed firm as your development partner, the currency exchange rate saves you a lot. For instance, if someone in the &lt;a href="https://positiwise.com/" rel="noopener noreferrer"&gt;USA chooses a .NET firm in India&lt;/a&gt;, their development will be completed within 50% of the budget as in the United States of America.&lt;/p&gt;

&lt;p&gt;Also, dotnet companies can choose different engagement models, such as pay per task, time and resource utilization, or team size. It also helps in making the project budget-friendly and saves additional costs.&lt;/p&gt;

&lt;h3&gt;
  
  
  2: Multi-Sector Experience
&lt;/h3&gt;

&lt;p&gt;.NET technology is capable of fulfilling the requirements of every business, from finance and eCommerce to government and hospitality. Due to this, most .NET development companies have experience curating applications for organizations in different sectors.&lt;/p&gt;

&lt;p&gt;You can leverage their experience for your software development project. They will understand your requirements easily, make your app align with industry standards, and even aid you in choosing the right features and logic per stakeholder needs.&lt;/p&gt;

&lt;p&gt;As a result, your users will have a better experience, the app will assuredly secure data, and compliance with protocols will prevent legal actions.&lt;/p&gt;

&lt;h3&gt;
  
  
  3: Certified Development Team
&lt;/h3&gt;

&lt;p&gt;Most of the professionals in a .NET development team are highly certified. They have obtained numerous on-site pieces of training to be eligible for real-world development tasks. Due to this, as a client of a .NET software development company, you get the following benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developers understand the best practices for working on your project.&lt;/li&gt;
&lt;li&gt;The development is free from bugs, additional comments, and repeated code blocks.&lt;/li&gt;
&lt;li&gt;The source code is well-written, making it easier to read.&lt;/li&gt;
&lt;li&gt;The requirements are quickly understandable, and the right logics are implemented for them.&lt;/li&gt;
&lt;li&gt;Coding and data security best practices are followed for each component.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4: Strict NDA Compliance
&lt;/h3&gt;

&lt;p&gt;Whenever you finalize a contract for software development, it’s highly recommended that you sign an NDA agreement. It ensures that your data will be safeguarded by the firm, and anyone disclosing it has to face legal action.&lt;/p&gt;

&lt;p&gt;All &lt;a href="https://positiwise.com/" rel="noopener noreferrer"&gt;.NET development companies&lt;/a&gt; have strict NDA policies, which restrict their employees and associated stakeholders from disclosing any data. The data integrity and confidentiality are maintained in every use case until or unless the period is defined in the agreement.&lt;/p&gt;

&lt;p&gt;Additionally, dotnet firms use authentic hardware and software solutions to provide additional support in securing your confidential information. The patched systems can prevent both external and internal cyber-attacks.&lt;/p&gt;

&lt;h3&gt;
  
  
  5: Multi-Technology Advantage
&lt;/h3&gt;

&lt;p&gt;.NET technology is a complete tech stack on its own. When you work with a .NET development firm, you get the advantage of utilizing all the dotnet technologies, such as .NET framework, .NET core, ASP.NET Core MVC, .NET MAUI, razor pages, Xamarin, and more.&lt;/p&gt;

&lt;p&gt;You can choose the best-suited technology for your project, which can help to increase productivity, improve ROI, and optimize performance. In addition, even if you feel like moving from one Microsoft tech to another, it’s also possible. The migration can be completed within minimal time and without impacting any of the business operations.&lt;/p&gt;

&lt;p&gt;Thus, you are covered for the extended run.&lt;/p&gt;

&lt;h3&gt;
  
  
  6: A complete software solution
&lt;/h3&gt;

&lt;p&gt;As you know, multiple technologies are available under the .NET umbrella. With all those techs, a development company can curate any kind of solution for your business, including but not limited to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://positiwise.com/services/mobile-application-development" rel="noopener noreferrer"&gt;Mobile app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://positiwise.com/services" rel="noopener noreferrer"&gt;Desktop app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://positiwise.com/services/ecommerce-development" rel="noopener noreferrer"&gt;eCommerce Software&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://positiwise.com/services/software-product-development" rel="noopener noreferrer"&gt;Web application&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://positiwise.com/services/custom-software-development" rel="noopener noreferrer"&gt;ERP and CRM system&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://positiwise.com/services/custom-software-development" rel="noopener noreferrer"&gt;Static and dynamic websites&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://positiwise.com/services" rel="noopener noreferrer"&gt;IoT solutions and more&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additionally, if you need any third-party component, it can also be integrated with utmost ease and within minimal time. All the third-party services and databases will be connected through high-performance APIs. As a result, all end-users will leverage the required resources.&lt;/p&gt;

&lt;h2&gt;
  
  
  What To Consider While Choosing NET Software Development Company
&lt;/h2&gt;

&lt;p&gt;There are seven primary factors to consider when choosing a net software development company. They are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Undergo the offered .NET development services.&lt;/li&gt;
&lt;li&gt;Analyze the completed projects and portfolio.&lt;/li&gt;
&lt;li&gt;Check the engagement models of the company.&lt;/li&gt;
&lt;li&gt;Verify NDA and data security policies.&lt;/li&gt;
&lt;li&gt;Assess the client feedback and reputation in the market.&lt;/li&gt;
&lt;li&gt;Conduct interviews to check developer experience.&lt;/li&gt;
&lt;li&gt;Ensure that post-development services are available.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;Microsoft dotnet technology is way more advanced and utilized by enterprises for software development. However, a &lt;a href="https://positiwise.com/technologies/dot-net-development" rel="noopener noreferrer"&gt;.NET software development company&lt;/a&gt; can only help leverage all its benefits. In 2024, &lt;a href="https://positiwise.com/" rel="noopener noreferrer"&gt;choosing a .NET company&lt;/a&gt; is highly advantageous. Their services are affordable, developers are certified, they ensure data security, and they are capable of creating any application for any industry.&lt;br&gt;
Therefore, dotnet technology and development companies are both highly relevant for 2024 and beyond.&lt;/p&gt;

</description>
      <category>netdevelopmentcompany</category>
      <category>netsoftwaredevelopmentcompany</category>
      <category>netdevelopment</category>
      <category>positiwise</category>
    </item>
    <item>
      <title>Install npm on Mac | Easiest Way Possible</title>
      <dc:creator>Jemin Desai</dc:creator>
      <pubDate>Mon, 15 Jul 2024 08:29:07 +0000</pubDate>
      <link>https://dev.to/jemindesai/install-npm-on-mac-easiest-way-possible-27i2</link>
      <guid>https://dev.to/jemindesai/install-npm-on-mac-easiest-way-possible-27i2</guid>
      <description>&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; To aid the macOS users in installing the NPM, the blog provides all three main approaches. The first approach deals with the traditional way of downloading and installing the NPM. The second and third approaches provide a brief overview of using Homebrew and NVM for &lt;a href="https://positiwise.com/blog/how-to-install-npm-and-node-js-on-mac-and-windows" rel="noopener noreferrer"&gt;NPM installation&lt;/a&gt;. As a result, you will be equipped with all the primary ways to install the npm Mac version.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install NPM on Mac
&lt;/h2&gt;

&lt;p&gt;With the emergence of JavaScript and the need for a high-performance application, &lt;a href="https://positiwise.com/blog/nodejs-for-software-development" rel="noopener noreferrer"&gt;NodeJS&lt;/a&gt; has become a popular development technology. To utilize Node JS for your project, you need to install the NPM, as it provides the required environment for developers to use Node JS.&lt;/p&gt;

&lt;p&gt;You must have seen numerous tutorials for &lt;a href="https://positiwise.com/blog/install-npm-on-windows" rel="noopener noreferrer"&gt;NPM installation on Windows&lt;/a&gt;. But, here, we are going to understand the procedure to install NPM on Mac.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Install NPM on Mac?
&lt;/h2&gt;

&lt;p&gt;NPM is the main package manager that is used to install the Node JS on a macOS machine. It also helps manage and install other packages for your &lt;a href="https://positiwise.com/services/custom-software-development" rel="noopener noreferrer"&gt;software development project&lt;/a&gt;. If you have to develop an application with Node JS, then NPM must be available on your system.&lt;/p&gt;

&lt;p&gt;In addition, NPM also helps developers in reducing their efforts. It can be used to share reusable software components with other development teams and professionals.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements To Install NPM on Mac
&lt;/h2&gt;

&lt;p&gt;Before dividing the process into how to install npm mac, ensure that your system fulfills the following criteria.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An internet connection will be used as multiple files will be downloaded.&lt;/li&gt;
&lt;li&gt;A minimum of 4GB RAM&lt;/li&gt;
&lt;li&gt;256 GB Storage (ROM)&lt;/li&gt;
&lt;li&gt;Updated macOS version&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Method 1: Install NPM on Mac using the Traditional Way
&lt;/h2&gt;

&lt;p&gt;The traditional way is considered the most convenient for developers and professionals of all levels. The entire process is GUI-based and similar to installing NPM on the Windows operating system. Even if someone has not used macOS before, they can easily execute the install the NPM Mac version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; From the official website of &lt;a href="https://positiwise.com/blog/whats-new-in-node-js-19" rel="noopener noreferrer"&gt;Node JS&lt;/a&gt;, download the installation package for macOS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F53ssqb8pvybwdog30mxw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F53ssqb8pvybwdog30mxw.jpg" alt="install node" width="800" height="353"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 2:&lt;/strong&gt; Open the location where the package is saved and run it using the double-click.&lt;/p&gt;

&lt;p&gt;Further, an installation window will appear on your screen. Follow the procedure with its default settings and complete all parts of the NPM configuration. Lastly, click on “Install Software Summary” and wait for its completion.&lt;/p&gt;

&lt;p&gt;As a final result, you will see a snippet below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft7lkfcw2dz2xqns118bc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft7lkfcw2dz2xqns118bc.jpg" alt="install npm package" width="800" height="564"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 3:&lt;/strong&gt; Now, validate that the NodeJS and NPM are installed on your system. To do so, open the command line and run the below command. It will return the installed version number.&lt;/p&gt;

&lt;p&gt;Command: node -v&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; However, if a newer version is available, you can update yours by executing the following command in CLI. It will update the NPM and NodeJS versions simultaneously.&lt;/p&gt;

&lt;p&gt;Command: $ sudo npm install npm –global // Update the npm CLI client&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Once you have the required NPM version installed, configure the NODE HOME variable. By utilizing the same CLI, run one more command.&lt;/p&gt;

&lt;p&gt;Command: export PATH=/usr/local/git/bin:/usr/local/bin:$PATH  &lt;/p&gt;

&lt;p&gt;However, if you have different profiles and want to set variables for all users. Then, you should use the two CLI commands listed below to add configuration to the “.bash_profile” file.&lt;/p&gt;

&lt;p&gt;Command: echo ‘export PATH=/usr/local/bin:$PATH’ &amp;gt;&amp;gt; ~/.bash_profile  Command: source ~/.bashrc&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 2: Install NPM Mac Version with Homebrew
&lt;/h2&gt;

&lt;p&gt;Homebrew is one of the most used and reliable package managers MacOS professionals consider. It helps to install and use the stuff that a user needs.&lt;/p&gt;

&lt;p&gt;The main reason for using Homebrew is that it doesn’t interfere with system binaries and libraries. All the installations are made in a separate directory known as “/usr/local.”&lt;/p&gt;

&lt;p&gt;Further, to install Homebrew on your macOS system, run the command:&lt;/p&gt;

&lt;p&gt;/bin/bash -c “$(&lt;a href="https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh" rel="noopener noreferrer"&gt;curl -fsSLhttps://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;/a&gt;)”&lt;/p&gt;

&lt;p&gt;Following its installation, undergo the NPM installation process as listed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; A single command is enough with Homebrew to download and initiate the NPM and NodeJS installation.&lt;/p&gt;

&lt;p&gt;Open the CLI of the macOS machine and execute the command: brew install node&lt;/p&gt;

&lt;p&gt;NPM will be installed in a minimal amount of time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; To verify the available version of NPM on your system, use the below commands.&lt;/p&gt;

&lt;p&gt;To check the NPM version: npm -v&lt;/p&gt;

&lt;p&gt;To check NodeJS version: node -v&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; By default, Homebrew installs the latest version. However, if the latest version is not installed, use the following macOS CLI commands.&lt;/p&gt;

&lt;p&gt;To update NPM: brew update&lt;/p&gt;

&lt;p&gt;To update NodeJS: brew upgrade node&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 3: NVM Approach to Install NPM Mac
&lt;/h2&gt;

&lt;p&gt;On a macOS system, you can use NVM or Node Version Manager to install NPM. The procedure is quite streamlined and completed using only the CLI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Download and install the NVM by using any of the following approaches.&lt;/p&gt;

&lt;p&gt;Approach #1: Installation through cURL&lt;/p&gt;

&lt;p&gt;curl -o- &lt;a href="https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh" rel="noopener noreferrer"&gt;https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh&lt;/a&gt; | bash&lt;/p&gt;

&lt;p&gt;Approach #2: Installation through wget&lt;/p&gt;

&lt;p&gt;wget -qO- &lt;a href="https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh" rel="noopener noreferrer"&gt;https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh&lt;/a&gt; | bash&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Run “nvm -version” to verify its installation on your system. The CLI will display the NVM version as the output.  &lt;/p&gt;

&lt;p&gt;In addition, it’s recommended that the command be added to the .bash_profile or .zshrc file. It ensures that all configured terminals have the same configurations. To do so, use the below command.&lt;/p&gt;

&lt;p&gt;Command: echo ‘export PATH=/usr/local/bin:$PATH’ &amp;gt;&amp;gt; ~/.bash_profile&lt;/p&gt;

&lt;p&gt;To finalize the changes, run: source ~/.bashrc&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Run the MVM command to install the NodeJS and NPM.&lt;/p&gt;

&lt;p&gt;Command: nvm install node&lt;/p&gt;

&lt;p&gt;In addition, to install a specific NPM version, use the below command.&lt;/p&gt;

&lt;p&gt;Command: nvm install v12.15.0&lt;/p&gt;

&lt;p&gt;Here, “12.15.0” is the version number, which can be modified per requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; To verify the NPM installation through NVM, utilize the command below.&lt;/p&gt;

&lt;p&gt;Command: node -version&lt;/p&gt;

&lt;p&gt;To list all node versions: nvm is&lt;/p&gt;

&lt;h2&gt;
  
  
  Concluding Up
&lt;/h2&gt;

&lt;p&gt;Installing NPM on macOS is an easy and quick procedure. There are three main methods available to install NPM on a Mac machine. The first method is downloading the package and installing it through GUI. The second method is completed through the Homebrew package manager. The third method uses NVM. You can use any of the installation approaches, as their end result is quite similar, that is, you get the NPM and Node JS on your system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The Original Blog Published at Positwise: &lt;a href="https://positiwise.com/blog/install-npm-on-mac" rel="noopener noreferrer"&gt;Install npm on Mac | Easiest Way Possible&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>installnpmonmac</category>
      <category>installnpm</category>
      <category>macinstallnpm</category>
      <category>positiwise</category>
    </item>
    <item>
      <title>Authentication and Authorization in .NET Core</title>
      <dc:creator>Jemin Desai</dc:creator>
      <pubDate>Fri, 12 Jul 2024 08:22:47 +0000</pubDate>
      <link>https://dev.to/jemindesai/authentication-and-authorization-in-net-core-3a7h</link>
      <guid>https://dev.to/jemindesai/authentication-and-authorization-in-net-core-3a7h</guid>
      <description>&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; As the tech business development marketplace evolves with the days the security risks related to it take a surge. This leads to the need for restricting access to a few resources within the application to authorized users only as it allows the server to determine which resources the user should have access to. In this blog post, we will have a deeper look into the Authentication and Authorization in .NET Core to ensure the safety and security of your &lt;a href="https://positiwise.com/technologies/dot-net-development" rel="noopener noreferrer"&gt;.NET business application&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Authentication in .NET Core
&lt;/h2&gt;

&lt;p&gt;Authentication in .NET Core refers to the process of determining the identity of a user. Authorization, on the other hand, refers to the process of determining whether a user has access to a resource. Explaining it further Authentication in &lt;a href="https://positiwise.com/technologies/dot-net-development" rel="noopener noreferrer"&gt;.NET Core&lt;/a&gt; is a process where the identity of the users is verified by those who wish to attempt to access an application or a system. Authentication further ensures that the real user only is accessing the said data. In .NET Core Authentication generally requires validating the user credentials such as usernames, and passwords, against a trusted source. Such as a database or an identity provider.&lt;/p&gt;

&lt;p&gt;Authorization on the other hand is the process of determining the actions authenticated that users can perform within the application. It ensures that the authenticated users here have access to resources and functionalities that align with their assigned or granted roles and permissions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementing the JWT Authentication .NET Core
&lt;/h2&gt;

&lt;p&gt;The JSON Web Tokens or JWT are a renowned way to implement authentication within modern web applications referring to their stateless nature and scalability. In .NET Core JWT authentication requires generating the token upon successful login and validating it with each subsequent request.&lt;/p&gt;

&lt;p&gt;You can refer to the steps given below to implement JWT authentication in .NET Core:&lt;br&gt;
&lt;strong&gt;Step 1:&lt;/strong&gt; Install the required packages&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Configure the JWT authentication middleware &lt;strong&gt;&lt;em&gt;‘Startup.cs’&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
using System;
using System.Text;

public void ConfigureServices(IServiceCollection services)
{
    // Other configurations within the code...

    services.AddAuthentication(options =&amp;gt;
    {
        options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
        options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
    }).AddJwtBearer(options =&amp;gt;
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidateAudience = true,
            ValidateLifetime = true,
            ValidateIssuerSigningKey = true,
            ValidIssuer = "yourIssuer",
            ValidAudience = "yourAudience",
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("yourSecretKey"))
        };
    });

    // Other services...
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // Middleware configurations...

    app.UseAuthentication();
    app.UseAuthorization();

    // Other configurations within the code...
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Generate the JWT tokens after the successful authentication and then include them within the responses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Explore The Role Based Authorization in .NET Core
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://positiwise.com/blog/role-based-authorization-in-net-core" rel="noopener noreferrer"&gt;Role Based Authorization in .NET Core&lt;/a&gt; grants access to the resources based on the predefined roles that are already assigned to the users. Let us now look at the steps to implement the same:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Define the roles and assign them to the users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Create the authorization policies that are based on the roles in &lt;strong&gt;&lt;em&gt;‘Startup.cs’&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public void ConfigureServices(IServiceCollection services)
{
    // Other configurations...

    services.AddAuthorization(options =&amp;gt;
    {
        options.AddPolicy("AdminOnly", policy =&amp;gt;
            policy.RequireRole("Admin"));
    });

    // Other services...
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Apply the authorization policies to controllers or the actions using the &lt;strong&gt;&lt;em&gt;‘[Authorize]’&lt;/em&gt;&lt;/strong&gt; attribute.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Authorize(Policy = "AdminOnly")]
public IActionResult AdminPanel()
{
    // This is the action logic for admin panel
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Creating Custom Authentication Schemes in .NET Core
&lt;/h2&gt;

&lt;p&gt;Oftentimes, inbuilt .NET Authentication mechanisms may not suffice for the specific requirements. Under such cases, your development team can create custom authentication schemes within the .NET Core.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Implement a Custom Authentication handler by inheriting from the &lt;strong&gt;&lt;em&gt;‘AuthenticationHandler’&lt;/em&gt;&lt;/strong&gt; class.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public class CustomAuthenticationHandler: AuthenticationHandler&amp;lt;AuthenticationSchemeOptions&amp;gt;
{
    protected override async Task&amp;lt;AuthenticateResult&amp;gt; HandleAuthenticateAsync()
    {
        // Here is the Authentication logic implemented here
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Configure the authentication middleware to use the custom scheme.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public void ConfigureServices(IServiceCollection services)
{
    // Other configurations...

    services.AddAuthentication(options =&amp;gt;
    {
        options.DefaultAuthenticateScheme = "CustomScheme";
        options.DefaultChallengeScheme = "CustomScheme";
    }).AddScheme&amp;lt;AuthenticationSchemeOptions, CustomAuthenticationHandler&amp;gt;("CustomScheme", null);

    // Other services...
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Validating the User Credentials and establishing the identity within the custom authentication handler.&lt;/p&gt;

&lt;h2&gt;
  
  
  Authentication and Authorization – Security Best Practices
&lt;/h2&gt;

&lt;p&gt;Though the Authorization and Authentication involves the way to make your business application secure following certain best practices you can get the most out of your Authentication and Authorization in &lt;a href="https://positiwise.com/technologies/dot-net-development" rel="noopener noreferrer"&gt;.NET Core business applications&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use ASP.NET Core Identity:&lt;/strong&gt; You can use it for handling the authorization and authentication as it provides a strong framework to manage users, passwords, role-based access, and claims-based authorization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enable Multi-Factor Authorization (MFA):&lt;/strong&gt; It is crucial to add an extra layer of security enabling the MFA which helps verify the user identity via multiple ways like SMS, email, and authenticator apps.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Secure Sensitive Data With HTTPS:&lt;/strong&gt; Use HTTPS to encrypt the data within the transit between the client and the server. This prevents the interception and the tampering of sensitive information including the authentication credentials.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use The Storage For Secrets:&lt;/strong&gt; Store your sensitive information like the API keys, connection strings, and other secrets. You can use tools like Azure Key Vault or the AWS Secrets Manager and manage the access securely.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Update and Patch Dependencies:&lt;/strong&gt; Make sure that your .NET Core libraries and dependencies are up to date with the latest security patches. You must review and update all the third-party packages to mitigate the vulnerabilities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Monitor and Log Authentication Events:&lt;/strong&gt; Implement the logging and monitoring for the authentication and authorization events. This will help them detect and respond to the authorized access attempts and the security breaches.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prevent Injection Attacks:&lt;/strong&gt; Validate and sanitize the user input to protect against SQL injection, cross-site scripting, and other injection attacks. You can use parameterized queries and inbuilt validation frameworks to ensure data integrity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Leverage OAuth2 and OpenID Connect For External Authentication:&lt;/strong&gt; To integrate external login providers such as Google, Facebook, or Microsoft, use OAuth2 and OpenID Connect. These protocols present secure methods for user authentication and authorization.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Implementing robust authentication and authorization mechanisms is crucial for the security and integrity of any web application providing comprehensive and flexible tools to manage authentication and authorization effectively. By leveraging built-in middleware, policies, roles, and custom handlers, you can create secure applications tailored to your specific needs. By following best practices and keeping safety at the forefront of your development process, you can &lt;a href="https://positiwise.com/hire-asp-net-developers" rel="noopener noreferrer"&gt;protect your .NET application&lt;/a&gt; and users’ data from unauthorized access and other security threats.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The Original Blog Published at Positwise: &lt;a href="https://positiwise.com/blog/authentication-and-authorization-in-net-core" rel="noopener noreferrer"&gt;Authentication and Authorization in .NET Core&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>authentication</category>
      <category>authorization</category>
      <category>dotnetcore</category>
      <category>positiwise</category>
    </item>
  </channel>
</rss>
