{"id":12053,"date":"2023-08-21T07:00:15","date_gmt":"2023-08-21T07:00:15","guid":{"rendered":"https:\/\/positiwise.com\/blog\/?p=12053"},"modified":"2024-08-05T12:05:21","modified_gmt":"2024-08-05T12:05:21","slug":"clean-architecture-net-core","status":"publish","type":"post","link":"https:\/\/positiwise.com\/blog\/clean-architecture-net-core","title":{"rendered":"Clean Architecture .NET Core: A Complete Tutorial from .NET Developer"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong class=\"pw-highlight-text-color\"><em>Quick Overview:<\/em><\/strong><br>With the increasing of an application with effortless maintenance, and higher flexibility, .NET core clean architecture has been a top choice. You can consider it as an approach used for developing software with minimal dependency. The clean architecture, known as the onion architecture, features four main layers that individualize the interface, business logic, databases, and entities. In this blog, you will get a clear insight into the .NET clean architecture by creating an API based on it. As a result, you will know how to implement clean architecture for other projects and how exactly its benefits the .NET software development.<\/p><div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-node-js\/#A_Run-Through_NET_Core_vs_Nodejs\" >A Run-Through: .NET Core vs Node.js<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-node-js\/#NET_Core\" >.NET Core<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-node-js\/#Pros_of_using_NET_Core\" >Pros of using .NET Core<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-node-js\/#Nodejs\" >Node.js<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-node-js\/#A_Deep_Dive_into_NET_Core_vs_Nodejs\" >A Deep Dive into .NET Core vs. Node.js<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-node-js\/#Processing_Approach_and_Performance\" >Processing Approach and Performance<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-node-js\/#Security\" >Security<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-node-js\/#Scalability\" >Scalability<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-node-js\/#Platform_Adaptability\" >Platform Adaptability<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-node-js\/#Support_from_Community\" >Support from Community<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-node-js\/#Comparison_Table_between_NET_Core_and_Nodejs\" >Comparison Table between .NET Core and Node.js<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-node-js\/#Wrapping_Up_on_NET_Core_vs_Nodejs\" >Wrapping Up on .NET Core vs Node.js<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-introduction\">Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">With the rapidly evolving global market and user needs, every organization looks for an easy-to-maintain and upgrade application. In recent years, creating such an app has been a complex task. But, with the introduction of Clean Architecture .NET Core, it has become easy to update an app and improve flexibility.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Also, in this blog, we\u2019ll discover the benefits and layers of .NET clean architecture and its practical implementation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-is-net-core-clean-architecture\">What is .NET Core Clean Architecture?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before we dive into the tutorial for understanding the .NET Core clean architecture, it&#8217;s essential to have basic information about it. You ought to understand how Clean Architecture operates, its advantages, and the constituent layers it comprises.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So, let\u2019s start.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can consider .NET clean architecture as a development approach, available in a layered form to reduce dependency. In simple terms, you can say that it provides more freedom to all components and improve application testability, maintainability, scalability, and flexibility.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In addition, clean architecture is also considered onion architecture due to its multiple layers, similar to an onion. Primarily, it consists of four layers: The domain or the core layer, the Application layer, the Infrastructure layer, and the Framework layer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In addition, one of the main benefits of using clean architecture .NET core is its ability to separate implementation details from business logic. Further, its other advantages include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It leverages .NET developers to efficiently focus on each logic and curate it accurately.<\/li>\n\n\n\n<li>It helps to maintain the coding practices, leading to improve application stability and security.<\/li>\n\n\n\n<li>It aids in writing effective automated test cases, focusing on core business logic.<\/li>\n\n\n\n<li>The clean architecture improves the flexibility of the .NET business solution.<\/li>\n\n\n\n<li>It aids in quickly adding new features, APIs, and third-party components.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-overview-of-four-primary-layers-of-net-clean-architecture\">Overview of Four Primary Layers of .NET Clean Architecture<\/h3>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1021\" height=\"621\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/layers-net-clean-architecture.jpg\" alt=\"Layers of .NET Clean Architecture\" class=\"wp-image-12295\" srcset=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/layers-net-clean-architecture.jpg 1021w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/layers-net-clean-architecture-300x182.jpg 300w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/layers-net-clean-architecture-768x467.jpg 768w\" sizes=\"auto, (max-width: 1021px) 100vw, 1021px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The main four layers of clean architecture consist of:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Domain Layer<\/li>\n\n\n\n<li>Application Layer<\/li>\n\n\n\n<li>Infrastructure Layer<\/li>\n\n\n\n<li>Presentation Layer<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Domain Layer:<\/strong> It\u2019s the core of the architecture, where business logic gets implemented. In addition, this layer doesn\u2019t depend on any other layers and functions per the code written using classes and interfaces.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Application Layer:<\/strong> The application layer resides in the middle of the presentation and domain layer and functions as an intermediate between them. Primarily, it maintains the data between corresponding layers but is independent of the infrastructure and presentation layer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Infrastructure Layer:<\/strong> All the file systems and databases get configured at the infrastructure layer. It aids the application to interact with external components to maintain the workflow and process data.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Presentation Layer:<\/strong> As the name defines, the presentation layer is for writing the interface code. ASP.NET Core is used for building the interface. You should <a href=\"https:\/\/positiwise.com\/hire-asp-net-developers\">hire a dedicated .NET developer<\/a> for it, as they ensure an attractive and smooth GUI for a better user satisfaction rate.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-implementation-of-asp-net-clean-architecture\">The Implementation of ASP.NET Clean Architecture<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To better understand the clean architecture, we are going to see its implementation with the following tutorial. It will help you know the working and configuration of each ASP.NET Core clean architecture layer. As a result, you can develop any API and application using the same architecture and improve productivity.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Furthermore, this tutorial will implement the architecture using ASP.NET Core, which is based on .NET Core technology. The primary reason for selecting ASP.NET Core is to provide an easy understanding of clean architecture. Also, it gets used for building interfaces for clean architecture-based software.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-requirements-before-starting-the-clean-architecture-net-core-implementation\">Requirements before starting the clean architecture .NET Core implementation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To begin with .NET clean architecture, you must have experience in ASP.NET Core development and install Visual Studio 2019 or a higher version on your machine. Otherwise, building a clean architecture based on <a href=\"https:\/\/positiwise.com\/blog\/a-guide-to-building-web-apis-with-entity-framework-core-in-net-7\">ASP.NET Core Web API<\/a> will be a highly complex task.<\/p>\n\n\n\n<ol style=\"list-style-type:1\" class=\"wp-block-list\">\n<li>Configuration of Domain Layer of Clean Architecture .NET<\/li>\n\n\n\n<li>Configuration of Application Layer<\/li>\n\n\n\n<li>Configuration of Infrastructure Layer<\/li>\n\n\n\n<li>Configuration of API<\/li>\n\n\n\n<li>Test and Confirm<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-phase-1-configuration-of-nbsp-domain-layer-of-clean-architecture-net\">Phase 1: Configuration of &nbsp;Domain Layer of Clean Architecture .NET<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You must start the development from the core layer, i.e., the domain layer. And as you know, it doesn\u2019t depend on any other layer in the onion architecture.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>Open the Visual Studio<\/em><\/strong> on your machine and select the Class Library from the <strong><em>Create a new project list<\/em><\/strong>. Then, click on the <strong><em>Next<\/em><\/strong> button.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"432\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/select-class-library.jpg\" alt=\"select class library\" class=\"wp-image-12059\" srcset=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/select-class-library.jpg 750w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/select-class-library-300x173.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Now, you must provide the project details to configure it. Input the project name, storage location, solution name, and the framework (ensure you select the latest version available for better stability).<\/li>\n\n\n\n<li>In this example, we have set the project name to <strong><em>Member.Domain<\/em><\/strong>.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"439\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/configure-your-new-project.jpg\" alt=\"configure your new project\" class=\"wp-image-12058\" srcset=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/configure-your-new-project.jpg 750w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/configure-your-new-project-300x176.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Further, hit the <strong><em>Create<\/em><\/strong> button to finish the creation of the project. Once visual studio displays the project, you should create a domain class with the name &#8216;<strong><em>Member.cs<\/em><\/strong>\u2019.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"427\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/class-named-membercs.jpg\" alt=\"class named membercs\" class=\"wp-image-12057\" srcset=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/class-named-membercs.jpg 602w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/class-named-membercs-300x213.jpg 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>After the Member.cs class creation, <strong><em>add the following code<\/em><\/strong> and save the file.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:false,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csharp&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:true,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;C#&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;csharp&quot;}\">namespace Member.Domain\n{\n    public class Member\n    {\n        public int Id { get; set; }\n        public string Name { get; set; }\n        public string Type { get; set; }\n        public string Address { get; set; }\n\n    }\n}<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-phase-2-configuration-of-application-layer\">Phase 2: Configuration of Application Layer<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Now, we are at the second phase\/second layer of our clean architecture .NET project. As per the layered architecture, you should now configure the application layer, where use cases and business rules reside.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Go to the solution manager, available on the right side of Visual Studio, and generate a new class library named &#8216;<strong><em>Member.Application<\/em><\/strong>&#8216;.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"210\" height=\"113\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/create-member-application.jpg\" alt=\"create member application\" class=\"wp-image-12060\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">From this layer, we are going to make reference to other layers. For instance, you need to take reference of the domain layer to the application layer.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Click on the references to open the Reference Manager. Further, select the <strong><em>Member.Domain<\/em><\/strong> using the checkbox and click on the <strong><em>OK<\/em><\/strong> button.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"789\" height=\"545\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/reference-manager.jpg\" alt=\"reference manager\" class=\"wp-image-12061\" srcset=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/reference-manager.jpg 789w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/reference-manager-300x207.jpg 300w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/reference-manager-768x530.jpg 768w\" sizes=\"auto, (max-width: 789px) 100vw, 789px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>After taking the reference of the domain layer, create three new classes with the name \u2013 <strong><em>ImemberRepository.cs<\/em><\/strong>, <strong><em>IMemberServices.cs<\/em><\/strong>, and <strong><em>MemberService.cs<\/em><\/strong>. In addition, input the code as provided below for each file and save it.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><em><strong>ImemberRepository.cs<\/strong><\/em><\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:false,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csharp&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:true,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;C#&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;csharp&quot;}\">using System.Collections.Generic;\n\nnamespace Member.Application\n{\n    public interface IMemberRepository\n    {\n        List&lt;Domain.Member&gt; GetAllMembers();\n    }\n}<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><em><strong>IMemberServices.cs file<\/strong><\/em><\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:false,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csharp&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:true,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;C#&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;csharp&quot;}\">using System.Collections.Generic;\n\nnamespace Member.Application\n{\n    \/\/This interface is use for Bussiness Rule \/ USE CASE\n    public interface IMemberService\n    {\n        List&lt;Domain.Member&gt; GetAllMembers();\n    }\n}<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><em><strong><strong>MemberService.cs file<\/strong><\/strong><\/em><\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:false,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csharp&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:true,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;C#&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;csharp&quot;}\">using System.Collections.Generic;\n\nnamespace Member.Application\n{\n    \/\/Implement Bussiness Rule \/ USE CASES\n    public class MemberService : IMemberService\n    {\n        private readonly IMemberRepository memberRepository;\n        public MemberService(IMemberRepository memberRepository)\n        {\n            this.memberRepository = memberRepository;\n        }\n        List&lt;Domain.Member&gt; IMemberService.GetAllMembers()\n        {\n            return this.memberRepository.GetAllMembers();\n        }\n    }\n}<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The application part gets completed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-phase-3-configuration-of-infrastructure-layer\">Phase 3: Configuration of Infrastructure Layer<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">After the application layer comes the infrastructure layer. To this layer, we will provide the reference of the previous two layers &#8211; the domain and application layer.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Similar to the previous phase, generate a new class library and name it \u2018<strong><em>Member.Infrastructure<\/em><\/strong>\u2019. Once the class library gets created, provide the reference of the application (<strong><em>Member.Application<\/em><\/strong>) and domain layer (<strong><em>Member.Domain<\/em><\/strong>).<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"789\" height=\"545\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/projects-in-reference-manager.jpg\" alt=\"projects in reference manager\" class=\"wp-image-12063\" srcset=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/projects-in-reference-manager.jpg 789w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/projects-in-reference-manager-300x207.jpg 300w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/projects-in-reference-manager-768x530.jpg 768w\" sizes=\"auto, (max-width: 789px) 100vw, 789px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Click the <strong>OK <\/strong>button to generate a new class in the <strong>infrastructure layer<\/strong>. For this example, you can name the class as <strong><em>MemberRepository<\/em><\/strong>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The main purpose of creating this class is to implement the <strong>ImemberRepository.cs<\/strong> class created at the application layer. You should add the following code and save the file.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:false,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csharp&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:true,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;C#&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;csharp&quot;}\">using Member.Application;\nusing System.Collections.Generic;\n\nnamespace Member.Infrastructure\n{\n    public class MemberRepository : IMemberRepository\n    {\n        public static List&lt;Domain.Member&gt; lstMembers = new List&lt;Domain.Member&gt;()\n        {\n           new Domain.Member{  Id =1 ,Name= &quot;Kirtesh Shah&quot;, Type =&quot;G&quot; , Address=&quot;Vadodara&quot;},\n           new Domain.Member{  Id =2 ,Name= &quot;Mahesh Shah&quot;, Type =&quot;S&quot; , Address=&quot;Dabhoi&quot;},\n           new Domain.Member{  Id =3 ,Name= &quot;Nitya Shah&quot;, Type =&quot;G&quot; , Address=&quot;Mumbai&quot;},\n           new Domain.Member{  Id =4 ,Name= &quot;Dilip Shah&quot;, Type =&quot;S&quot; , Address=&quot;Dabhoi&quot;},\n           new Domain.Member{  Id =5 ,Name= &quot;Hansa Shah&quot;, Type =&quot;S&quot; , Address=&quot;Dabhoi&quot;},\n           new Domain.Member{  Id =6 ,Name= &quot;Mita Shah&quot;, Type =&quot;G&quot; , Address=&quot;Surat&quot;}\n        };\n        public List&lt;Domain.Member&gt; GetAllMembers()\n        {\n            return lstMembers;\n        }\n    }\n}<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Here, the infrastructure layer configuration is completed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-phase-4-configuration-of-api\">Phase 4: Configuration of API<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">As per the clean architecture, now we need to configure the outmost layer. You can configure anything at this layer, including WPF and web applications. But, for this example, we are going to implement an API.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To start with this layer\u2019s configuration, create a new ASP.NET Core Web API project. Follow the similar procedure as in Phase 1. Input details and generate the project with the name \u2018<strong><em>Member.API<\/em><\/strong>\u2019.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"365\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/asp-net-core-web-api.jpg\" alt=\"asp net core web api\" class=\"wp-image-12069\" srcset=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/asp-net-core-web-api.jpg 602w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/asp-net-core-web-api-300x182.jpg 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>After project creation, set it as the default project, as highlighted in the below snippet.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"261\" height=\"307\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/create-member-api.jpg\" alt=\"create member api\" class=\"wp-image-12070\" srcset=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/create-member-api.jpg 261w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/create-member-api-255x300.jpg 255w\" sizes=\"auto, (max-width: 261px) 100vw, 261px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Similar to other layers in the architecture, except the domain layer provides the references to the API layer. Select the <strong><em>Member.Domain<\/em><\/strong>, <strong><em>Member.Application<\/em><\/strong>, and <strong><em>Member.Infrastructure<\/em><\/strong> is a reference for this layer.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"412\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/web-api-reference-manager.jpg\" alt=\"web api reference manager\" class=\"wp-image-12068\" srcset=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/web-api-reference-manager.jpg 602w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/web-api-reference-manager-300x205.jpg 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To finalize the references, click on the <strong><em>OK<\/em><\/strong> button.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Further, access the <strong><em>Program.cs<\/em><\/strong> file and add the below code to it. You can find that methods in this code are defined in the files created at the infrastructure and application layer.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:false,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csharp&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:true,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;C#&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;csharp&quot;}\">using Member.Application;\nusing Member.Infrastructure;\nvar builder = WebApplication.CreateBuilder(args);\n\/\/ Add services to the container.\nbuilder.Services.AddControllers();\n\/\/ Learn more about configuring Swagger\/OpenAPI at https:\/\/aka.ms\/aspnetcore\/swashbuckle\nbuilder.Services.AddEndpointsApiExplorer();\nbuilder.Services.AddSwaggerGen();\nbuilder.Services.AddScoped &lt; IMemberRepository, MemberRepository &gt; ();\nbuilder.Services.AddScoped &lt; IMemberService, MemberService &gt; ();\nvar app = builder.Build();\n\/\/ Configure the HTTP request pipeline.\nif (app.Environment.IsDevelopment()) {\n    app.UseSwagger();\n    app.UseSwaggerUI();\n}\napp.UseHttpsRedirection();\napp.UseAuthorization();\napp.MapControllers();\napp.Run();<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Additionally, you should extend the functionalities by adding an API controller. In this tutorial, we are naming it as \u2018<strong><em>MembersController.cs<\/em><\/strong>\u2019.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Add the below code to <strong><em>MembersController.cs<\/em><\/strong> file and save it. As a result, the constructor providing adding of <a href=\"https:\/\/positiwise.com\/blog\/dependency-injection-in-net-core-with-example\">dependency injection<\/a> and calling the Get() method of API gets implemented.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:false,&quot;fullScreenButton&quot;:false,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csharp&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;lineNumbers&quot;:true,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:true,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;language&quot;:&quot;C#&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;csharp&quot;}\">using Member.Application;\nusing Microsoft.AspNetCore.Mvc;\n\n\/\/ For more information on enabling Web API for empty projects, visit https:\/\/go.microsoft.com\/fwlink\/?LinkID=397860\n\nnamespace Member.API.Controllers\n{\n    [Route(&quot;api\/[controller]&quot;)]\n    [ApiController]\n    public class MembersController : ControllerBase\n    {\n\n        private readonly IMemberService memberService;\n\n        public MembersController(IMemberService memberService)\n        {\n          this.memberService = memberService;\n        }\n        \/\/ GET: api\/&lt;MembersController&gt;\n        [HttpGet]\n        public ActionResult&lt;IList&lt;Domain.Member&gt;&gt; Get()\n        {\n            return Ok(this.memberService.GetAllMembers());\n        }\n\n    }\n}<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Here, all the layers of clean architecture are now configured, and only testing is remaining.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-phase-5-test-and-confirm\">Phase 5: Test and Confirm<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">We are at the final stage, where you must test the API. Testing is quite easy using Visual Studio, as you need to run the project, and it will provide you with relevant output.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As you can see, our ASP.NET API based on clean architecture works fine. The get() method we implemented is retrieving and displaying the data on the screen.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"613\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/output-member-api.jpg\" alt=\"output member api\" class=\"wp-image-12072\" srcset=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/output-member-api.jpg 750w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/output-member-api-300x245.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Similarly, you can use the .NET Core clean architecture to build different kinds of applications, WPF, and APIs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-need-to-hire-dedicated-net-developers\">The Need To Hire Dedicated .NET Developers<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The dedicated .NET developers are the foundation of any clean architecture .NET project. They understand every layer of the architecture and write the correct code where required. In addition, .NET professionals help with:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Defining the project and business objectives<\/li>\n\n\n\n<li>Creating the application design<\/li>\n\n\n\n<li>Writing an error-free code<\/li>\n\n\n\n<li>Ensuring app performance, scalability, and reliability<\/li>\n\n\n\n<li>Debugging the app<\/li>\n\n\n\n<li>Handling exceptions and more<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">However, you should only hire dedicated .NET developers from a trusted company, like <a href=\"https:\/\/positiwise.com\">Positiwise Software Pvt Ltd<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-concluding-up-on-clean-architecture-net-core\">Concluding Up on Clean Architecture .NET Core<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Clean Architecture .NET core highly gets used by professionals to create applications based on a layered approach. It helps to reduce the dependability between business logic, use cases, and interface. And it supports in improving the testability, scalability, and app maintainability. To create a .NET app based on clean architecture, <a href=\"https:\/\/code.visualstudio.com\/\">you need a visual studio<\/a>, the latest version of .NET, and knowledge of ASP.NET.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Further, you can create different layers in your project, write code and reference them to build an API, WPF, and a full-fledged app. Although you can also outsource .NET developers for affordable and business-oriented .NET clean architecture solution development.<\/p>\n  <div class=\"related-post slider\">\r\n        <div class=\"headline\">Related Posts<\/div>\r\n    <div class=\"post-list owl-carousel\">\r\n\r\n            <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\".Net Core vs. Java \u2013 Which One You Should Use for Your Projects?\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-java-technology\">\r\n\r\n      <img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"800\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2021\/12\/web-security-partner-1.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\".Net Core vs. Java \u2013 Which One You Should Use for Your Projects?\" srcset=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2021\/12\/web-security-partner-1.jpg 1200w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2021\/12\/web-security-partner-1-300x200.jpg 300w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2021\/12\/web-security-partner-1-1024x683.jpg 1024w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2021\/12\/web-security-partner-1-768x512.jpg 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\".Net Core vs. Java \u2013 Which One You Should Use for Your Projects?\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-java-technology\">\r\n        .Net Core vs. Java \u2013 Which One You Should Use for Your Projects?  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Precise Road Map for ASP.NET Developers\" href=\"https:\/\/positiwise.com\/blog\/roadmap-for-asp-dot-net-developers\">\r\n\r\n      <img loading=\"lazy\" decoding=\"async\" width=\"1021\" height=\"621\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2022\/01\/dealership-1200x800-1.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"Hire ASP.NET Developers - A Precise Road Map to Employ ASP.NET Developers\" srcset=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2022\/01\/dealership-1200x800-1.jpg 1021w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2022\/01\/dealership-1200x800-1-300x182.jpg 300w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2022\/01\/dealership-1200x800-1-768x467.jpg 768w\" sizes=\"auto, (max-width: 1021px) 100vw, 1021px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Precise Road Map for ASP.NET Developers\" href=\"https:\/\/positiwise.com\/blog\/roadmap-for-asp-dot-net-developers\">\r\n        Precise Road Map for ASP.NET Developers  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\".NET Core vs Node.js: The Difference Explained by Web Expert\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-node-js\">\r\n\r\n      <img loading=\"lazy\" decoding=\"async\" width=\"1021\" height=\"621\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2022\/01\/NET-Core-VS-Node-js-jpg.webp\" class=\"attachment-full size-full wp-post-image\" alt=\"NET-Core-VS-Node-js\" srcset=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2022\/01\/NET-Core-VS-Node-js-jpg.webp 1021w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2022\/01\/NET-Core-VS-Node-js-300x182.webp 300w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2022\/01\/NET-Core-VS-Node-js-768x467.webp 768w\" sizes=\"auto, (max-width: 1021px) 100vw, 1021px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\".NET Core vs Node.js: The Difference Explained by Web Expert\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-node-js\">\r\n        .NET Core vs Node.js: The Difference Explained by Web Expert  <\/a>\r\n\r\n        <\/div>\r\n      \r\n  <\/div>\r\n\r\n  <script>\r\n      <\/script>\r\n  <style>\r\n    .related-post {}\r\n\r\n    .related-post .post-list {\r\n      text-align: left;\r\n          }\r\n\r\n    .related-post .post-list .item {\r\n      margin: 5px;\r\n      padding: 0px;\r\n          }\r\n\r\n    .related-post .headline {\r\n      font-size: 2rem !important;\r\n      color: #212529 !important;\r\n          }\r\n\r\n    .related-post .headline {\r\nmargin-top: 0;\r\npadding-left: 1%;\r\n}.related-post .post-list .item .post_thumb {\r\n      max-height: 220px;\r\n      margin: 0px 0px 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n          }\r\n\r\n    .related-post .post-list .item .post_title {\r\n      font-size: 1rem;\r\n      color: #212529;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .post-list .item .post_excerpt {\r\n      font-size: 13px;\r\n      color: #3f3f3f;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .owl-dots .owl-dot {\r\n          }\r\n\r\n      <\/style>\r\n      <script>\r\n      jQuery(document).ready(function($) {\r\n        $(\".related-post .post-list\").owlCarousel({\r\n          items: 3,\r\n          responsiveClass: true,\r\n          responsive: {\r\n            0: {\r\n              items: 1,\r\n            },\r\n            768: {\r\n              items: 2,\r\n            },\r\n            1200: {\r\n              items: 3,\r\n            }\r\n          },\r\n                      rewind: true,\r\n                                loop: true,\r\n                                center: true,\r\n                                autoplay: true,\r\n            autoplayHoverPause: true,\r\n                                nav: true,\r\n            navSpeed: 1000,\r\n            navText: ['<i class=\"fas fa-chevron-left\"><\/i>', '<i class=\"fas fa-chevron-right\"><\/i>'],\r\n                                dots: true,\r\n            dotsSpeed: 1200,\r\n                                                    rtl: false,\r\n          \r\n        });\r\n      });\r\n    <\/script>\r\n  <\/div>\r\n","protected":false},"excerpt":{"rendered":"<p>Quick Overview:With the increasing of an application with effortless maintenance, and higher flexibility, .NET core clean architecture has [&hellip;]<\/p>\n  <div class=\"related-post slider\">\r\n        <div class=\"headline\">Related Posts<\/div>\r\n    <div class=\"post-list owl-carousel\">\r\n\r\n            <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\".Net Core vs. Java \u2013 Which One You Should Use for Your Projects?\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-java-technology\">\r\n\r\n      <img width=\"1200\" height=\"800\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2021\/12\/web-security-partner-1.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\".Net Core vs. Java \u2013 Which One You Should Use for Your Projects?\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2021\/12\/web-security-partner-1.jpg 1200w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2021\/12\/web-security-partner-1-300x200.jpg 300w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2021\/12\/web-security-partner-1-1024x683.jpg 1024w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2021\/12\/web-security-partner-1-768x512.jpg 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\".Net Core vs. Java \u2013 Which One You Should Use for Your Projects?\" href=\"https:\/\/positiwise.com\/blog\/net-core-vs-java-technology\">\r\n        .Net Core vs. Java \u2013 Which One You Should Use for Your Projects?  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Precise Road Map for ASP.NET Developers\" href=\"https:\/\/positiwise.com\/blog\/roadmap-for-asp-dot-net-developers\">\r\n\r\n      <img width=\"1021\" height=\"621\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2022\/01\/dealership-1200x800-1.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"Hire ASP.NET Developers - A Precise Road Map to Employ ASP.NET Developers\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2022\/01\/dealership-1200x800-1.jpg 1021w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2022\/01\/dealership-1200x800-1-300x182.jpg 300w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2022\/01\/dealership-1200x800-1-768x467.jpg 768w\" sizes=\"auto, (max-width: 1021px) 100vw, 1021px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Precise Road Map for ASP.NET Developers\" href=\"https:\/\/positiwise.com\/blog\/roadmap-for-asp-dot-net-developers\">\r\n        Precise Road Map for ASP.NET Developers  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"A Descriptive Guide to .NET Framework\" href=\"https:\/\/positiwise.com\/blog\/a-descriptive-guide-to-dot-net-framework\">\r\n\r\n      <img width=\"1021\" height=\"621\" src=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2022\/01\/a-descriptive-guide-to-dot-net-framework.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"A Descriptive Guide to .NET Framework\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2022\/01\/a-descriptive-guide-to-dot-net-framework.jpg 1021w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2022\/01\/a-descriptive-guide-to-dot-net-framework-300x182.jpg 300w, https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2022\/01\/a-descriptive-guide-to-dot-net-framework-768x467.jpg 768w\" sizes=\"auto, (max-width: 1021px) 100vw, 1021px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"A Descriptive Guide to .NET Framework\" href=\"https:\/\/positiwise.com\/blog\/a-descriptive-guide-to-dot-net-framework\">\r\n        A Descriptive Guide to .NET Framework  <\/a>\r\n\r\n        <\/div>\r\n      \r\n  <\/div>\r\n\r\n  <script>\r\n      <\/script>\r\n  <style>\r\n    .related-post {}\r\n\r\n    .related-post .post-list {\r\n      text-align: left;\r\n          }\r\n\r\n    .related-post .post-list .item {\r\n      margin: 5px;\r\n      padding: 0px;\r\n          }\r\n\r\n    .related-post .headline {\r\n      font-size: 2rem !important;\r\n      color: #212529 !important;\r\n          }\r\n\r\n    .related-post .headline {\r\nmargin-top: 0;\r\npadding-left: 1%;\r\n}.related-post .post-list .item .post_thumb {\r\n      max-height: 220px;\r\n      margin: 0px 0px 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n          }\r\n\r\n    .related-post .post-list .item .post_title {\r\n      font-size: 1rem;\r\n      color: #212529;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .post-list .item .post_excerpt {\r\n      font-size: 13px;\r\n      color: #3f3f3f;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .owl-dots .owl-dot {\r\n          }\r\n\r\n      <\/style>\r\n      <script>\r\n      jQuery(document).ready(function($) {\r\n        $(\".related-post .post-list\").owlCarousel({\r\n          items: 3,\r\n          responsiveClass: true,\r\n          responsive: {\r\n            0: {\r\n              items: 1,\r\n            },\r\n            768: {\r\n              items: 2,\r\n            },\r\n            1200: {\r\n              items: 3,\r\n            }\r\n          },\r\n                      rewind: true,\r\n                                loop: true,\r\n                                center: true,\r\n                                autoplay: true,\r\n            autoplayHoverPause: true,\r\n                                nav: true,\r\n            navSpeed: 1000,\r\n            navText: ['<i class=\"fas fa-chevron-left\"><\/i>', '<i class=\"fas fa-chevron-right\"><\/i>'],\r\n                                dots: true,\r\n            dotsSpeed: 1200,\r\n                                                    rtl: false,\r\n          \r\n        });\r\n      });\r\n    <\/script>\r\n  <\/div>\r\n","protected":false},"author":3,"featured_media":12187,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_eb_attr":"","footnotes":""},"categories":[7],"tags":[],"class_list":["post-12053","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dot-net-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Clean Architecture .NET Core: A Complete Guide<\/title>\n<meta name=\"description\" content=\"Master Clean Architecture in .NET Core! Comprehensive guide for .NET developers. Learn best practices &amp; implementation\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/positiwise.com\/blog\/clean-architecture-net-core\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Clean Architecture .NET Core: A Complete Guide\" \/>\n<meta property=\"og:description\" content=\"Master Clean Architecture in .NET Core! Comprehensive guide for .NET developers. Learn best practices &amp; implementation\" \/>\n<meta property=\"og:url\" content=\"https:\/\/positiwise.com\/blog\/clean-architecture-net-core\" \/>\n<meta property=\"og:site_name\" content=\"Positiwise\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/positiwise\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-21T07:00:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-05T12:05:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/clean-architecture-net-core.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1021\" \/>\n\t<meta property=\"og:image:height\" content=\"621\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Parag Mehta\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@positiwise\" \/>\n<meta name=\"twitter:site\" content=\"@positiwise\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Parag Mehta\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/clean-architecture-net-core#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/clean-architecture-net-core\"},\"author\":{\"name\":\"Parag Mehta\",\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/#\\\/schema\\\/person\\\/b4b3d9970ea94f5914a615f70345353a\"},\"headline\":\"Clean Architecture .NET Core: A Complete Tutorial from .NET Developer\",\"datePublished\":\"2023-08-21T07:00:15+00:00\",\"dateModified\":\"2024-08-05T12:05:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/clean-architecture-net-core\"},\"wordCount\":1702,\"publisher\":{\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/clean-architecture-net-core#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/clean-architecture-net-core.jpg\",\"articleSection\":[\".NET Development\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2022\",\"copyrightHolder\":{\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/clean-architecture-net-core\",\"url\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/clean-architecture-net-core\",\"name\":\"Clean Architecture .NET Core: A Complete Guide\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/clean-architecture-net-core#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/clean-architecture-net-core#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/clean-architecture-net-core.jpg\",\"datePublished\":\"2023-08-21T07:00:15+00:00\",\"dateModified\":\"2024-08-05T12:05:21+00:00\",\"description\":\"Master Clean Architecture in .NET Core! Comprehensive guide for .NET developers. Learn best practices & implementation\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/clean-architecture-net-core#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/positiwise.com\\\/blog\\\/clean-architecture-net-core\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/clean-architecture-net-core#primaryimage\",\"url\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/clean-architecture-net-core.jpg\",\"contentUrl\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/clean-architecture-net-core.jpg\",\"width\":1021,\"height\":621,\"caption\":\"Clean Architecture .NET Core\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/clean-architecture-net-core#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/positiwise.com\\\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Clean Architecture .NET Core: A Complete Tutorial from .NET Developer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/\",\"name\":\"Positiwise\",\"description\":\"Providing Full-cycle Software Development Services\",\"publisher\":{\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/#organization\"},\"alternateName\":\"Positiwise Software Pvt Ltd\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/#organization\",\"name\":\"Positiwise\",\"alternateName\":\"Positiwise Software Pvt Ltd\",\"url\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo.png\",\"contentUrl\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo.png\",\"width\":202,\"height\":29,\"caption\":\"Positiwise\"},\"image\":{\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/positiwise\\\/\",\"https:\\\/\\\/x.com\\\/positiwise\",\"https:\\\/\\\/github.com\\\/positiwise\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/positiwise\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/#\\\/schema\\\/person\\\/b4b3d9970ea94f5914a615f70345353a\",\"name\":\"Parag Mehta\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/072ea4a638415a77610a840228d51b8225ad88856ed34d69cbe1fcd638390535?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/072ea4a638415a77610a840228d51b8225ad88856ed34d69cbe1fcd638390535?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/072ea4a638415a77610a840228d51b8225ad88856ed34d69cbe1fcd638390535?s=96&r=g\",\"caption\":\"Parag Mehta\"},\"description\":\"Parag Mehta, the CEO and Founder of Positiwise Software Pvt Ltd has extensive knowledge of the development niche. He is implementing custom strategies to craft highly-appealing and robust applications for its clients and supporting employees to grow and ace the tasks. He is a consistent learner and always provides the best-in-quality solutions, accelerating productivity.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/paragcmehta\"],\"url\":\"https:\\\/\\\/positiwise.com\\\/blog\\\/author\\\/parag-mehta\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Clean Architecture .NET Core: A Complete Guide","description":"Master Clean Architecture in .NET Core! Comprehensive guide for .NET developers. Learn best practices & implementation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/positiwise.com\/blog\/clean-architecture-net-core","og_locale":"en_US","og_type":"article","og_title":"Clean Architecture .NET Core: A Complete Guide","og_description":"Master Clean Architecture in .NET Core! Comprehensive guide for .NET developers. Learn best practices & implementation","og_url":"https:\/\/positiwise.com\/blog\/clean-architecture-net-core","og_site_name":"Positiwise","article_publisher":"https:\/\/www.facebook.com\/positiwise\/","article_published_time":"2023-08-21T07:00:15+00:00","article_modified_time":"2024-08-05T12:05:21+00:00","og_image":[{"width":1021,"height":621,"url":"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/clean-architecture-net-core.jpg","type":"image\/jpeg"}],"author":"Parag Mehta","twitter_card":"summary_large_image","twitter_creator":"@positiwise","twitter_site":"@positiwise","twitter_misc":{"Written by":"Parag Mehta","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/positiwise.com\/blog\/clean-architecture-net-core#article","isPartOf":{"@id":"https:\/\/positiwise.com\/blog\/clean-architecture-net-core"},"author":{"name":"Parag Mehta","@id":"https:\/\/positiwise.com\/blog\/#\/schema\/person\/b4b3d9970ea94f5914a615f70345353a"},"headline":"Clean Architecture .NET Core: A Complete Tutorial from .NET Developer","datePublished":"2023-08-21T07:00:15+00:00","dateModified":"2024-08-05T12:05:21+00:00","mainEntityOfPage":{"@id":"https:\/\/positiwise.com\/blog\/clean-architecture-net-core"},"wordCount":1702,"publisher":{"@id":"https:\/\/positiwise.com\/blog\/#organization"},"image":{"@id":"https:\/\/positiwise.com\/blog\/clean-architecture-net-core#primaryimage"},"thumbnailUrl":"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/clean-architecture-net-core.jpg","articleSection":[".NET Development"],"inLanguage":"en-US","copyrightYear":"2022","copyrightHolder":{"@id":"https:\/\/positiwise.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/positiwise.com\/blog\/clean-architecture-net-core","url":"https:\/\/positiwise.com\/blog\/clean-architecture-net-core","name":"Clean Architecture .NET Core: A Complete Guide","isPartOf":{"@id":"https:\/\/positiwise.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/positiwise.com\/blog\/clean-architecture-net-core#primaryimage"},"image":{"@id":"https:\/\/positiwise.com\/blog\/clean-architecture-net-core#primaryimage"},"thumbnailUrl":"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/clean-architecture-net-core.jpg","datePublished":"2023-08-21T07:00:15+00:00","dateModified":"2024-08-05T12:05:21+00:00","description":"Master Clean Architecture in .NET Core! Comprehensive guide for .NET developers. Learn best practices & implementation","breadcrumb":{"@id":"https:\/\/positiwise.com\/blog\/clean-architecture-net-core#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/positiwise.com\/blog\/clean-architecture-net-core"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/positiwise.com\/blog\/clean-architecture-net-core#primaryimage","url":"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/clean-architecture-net-core.jpg","contentUrl":"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/08\/clean-architecture-net-core.jpg","width":1021,"height":621,"caption":"Clean Architecture .NET Core"},{"@type":"BreadcrumbList","@id":"https:\/\/positiwise.com\/blog\/clean-architecture-net-core#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/positiwise.com\/blog"},{"@type":"ListItem","position":2,"name":"Clean Architecture .NET Core: A Complete Tutorial from .NET Developer"}]},{"@type":"WebSite","@id":"https:\/\/positiwise.com\/blog\/#website","url":"https:\/\/positiwise.com\/blog\/","name":"Positiwise","description":"Providing Full-cycle Software Development Services","publisher":{"@id":"https:\/\/positiwise.com\/blog\/#organization"},"alternateName":"Positiwise Software Pvt Ltd","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/positiwise.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/positiwise.com\/blog\/#organization","name":"Positiwise","alternateName":"Positiwise Software Pvt Ltd","url":"https:\/\/positiwise.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/positiwise.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/07\/logo.png","contentUrl":"https:\/\/positiwise.com\/blog\/wp-content\/uploads\/2023\/07\/logo.png","width":202,"height":29,"caption":"Positiwise"},"image":{"@id":"https:\/\/positiwise.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/positiwise\/","https:\/\/x.com\/positiwise","https:\/\/github.com\/positiwise","https:\/\/www.linkedin.com\/company\/positiwise"]},{"@type":"Person","@id":"https:\/\/positiwise.com\/blog\/#\/schema\/person\/b4b3d9970ea94f5914a615f70345353a","name":"Parag Mehta","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/072ea4a638415a77610a840228d51b8225ad88856ed34d69cbe1fcd638390535?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/072ea4a638415a77610a840228d51b8225ad88856ed34d69cbe1fcd638390535?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/072ea4a638415a77610a840228d51b8225ad88856ed34d69cbe1fcd638390535?s=96&r=g","caption":"Parag Mehta"},"description":"Parag Mehta, the CEO and Founder of Positiwise Software Pvt Ltd has extensive knowledge of the development niche. He is implementing custom strategies to craft highly-appealing and robust applications for its clients and supporting employees to grow and ace the tasks. He is a consistent learner and always provides the best-in-quality solutions, accelerating productivity.","sameAs":["https:\/\/www.linkedin.com\/in\/paragcmehta"],"url":"https:\/\/positiwise.com\/blog\/author\/parag-mehta"}]}},"_links":{"self":[{"href":"https:\/\/positiwise.com\/blog\/wp-json\/wp\/v2\/posts\/12053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/positiwise.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/positiwise.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/positiwise.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/positiwise.com\/blog\/wp-json\/wp\/v2\/comments?post=12053"}],"version-history":[{"count":17,"href":"https:\/\/positiwise.com\/blog\/wp-json\/wp\/v2\/posts\/12053\/revisions"}],"predecessor-version":[{"id":17372,"href":"https:\/\/positiwise.com\/blog\/wp-json\/wp\/v2\/posts\/12053\/revisions\/17372"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/positiwise.com\/blog\/wp-json\/wp\/v2\/media\/12187"}],"wp:attachment":[{"href":"https:\/\/positiwise.com\/blog\/wp-json\/wp\/v2\/media?parent=12053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/positiwise.com\/blog\/wp-json\/wp\/v2\/categories?post=12053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/positiwise.com\/blog\/wp-json\/wp\/v2\/tags?post=12053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}