<?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: Dimitrov</title>
    <description>The latest articles on DEV Community by Dimitrov (@devtalker).</description>
    <link>https://dev.to/devtalker</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%2F508650%2F5d7646d1-b59f-47a0-be33-da9c1fcd98ab.jpg</url>
      <title>DEV Community: Dimitrov</title>
      <link>https://dev.to/devtalker</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/devtalker"/>
    <language>en</language>
    <item>
      <title>Layered architecture</title>
      <dc:creator>Dimitrov</dc:creator>
      <pubDate>Sun, 29 Nov 2020 10:36:51 +0000</pubDate>
      <link>https://dev.to/devtalker/layered-architecture-597a</link>
      <guid>https://dev.to/devtalker/layered-architecture-597a</guid>
      <description>&lt;p&gt;Layered architecture is the first architectural pattern that we are going to explore. If you haven’t read my article about &lt;a href="https://ddimitrov.dev/2020/11/08/what-is-software-architecture/"&gt;software architecture&lt;/a&gt;, I suggest you do it before continuing with this one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a layered architecture?
&lt;/h2&gt;

&lt;p&gt;Simply put, the layered architecture pattern’s main idea is to group and isolate system concerns while defining strict communication direction between them.&lt;/p&gt;

&lt;p&gt;Each group of related modules/classes we call layer. Different layers are encapsulated and depend on each other through abstraction and well-defined interfaces.&lt;/p&gt;

&lt;p&gt;Layers in this architecture pattern are stacked. The request direction is from the upper layers to the lower layers. In the best-case scenario, a layer can request a layer that is only directly below it.&lt;/p&gt;

&lt;p&gt;In sporadic cases, an upper layer is allowed to request a layer two-level or more levels below, but in general, it is considered bad practice.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--daK4lWdJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/olelew72scs1n7tcnkhq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--daK4lWdJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/olelew72scs1n7tcnkhq.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Layered architecture is widespread. We can find it the simple client-&amp;gt;server pattern or OSI network model. Also, many enterprise applications implement that pattern.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;In the following examples, we do not discuss cross-cutting concerns and their implementation.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the difference between layered architecture and N-tier architecture?
&lt;/h2&gt;

&lt;p&gt;There is none significant one. By tier, we consider a physical layer (like SQL server, for example). N describes the number of layers/tiers you have.&lt;/p&gt;

&lt;p&gt;In general, both names refer to the principles we discuss in this article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enterprise application example
&lt;/h2&gt;

&lt;p&gt;Most of the layered architecture implementations consist of four layers (ok, three layers, and a tier).&lt;/p&gt;

&lt;p&gt;They are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Presentation layer&lt;/li&gt;
&lt;li&gt;Business layer&lt;/li&gt;
&lt;li&gt;Data Access layer&lt;/li&gt;
&lt;li&gt;Data Storage tire&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Their names are explanatory enough, but let’s discuss them in detail.&lt;/p&gt;

&lt;h2&gt;
  
  
  Presentation layer
&lt;/h2&gt;

&lt;p&gt;In the presentation layer, you can find user interface components.&lt;/p&gt;

&lt;p&gt;In a standard ASP.NET Core application, these are the Views. The presentation layer, of course, is not limited to any technology. You can have anything that a user can interact with. CLI, SPA, etc.&lt;/p&gt;

&lt;p&gt;The presentation layer should not contain business logic and should not access database data directly.&lt;/p&gt;

&lt;p&gt;Its only task is to visualize data and dispatch the user’s input. That’s why the presentation layer requests data and sends commands from/to the business layer.&lt;br&gt;
You can read the full article on my programming blog -&amp;gt; &lt;a href="https://ddimitrov.dev/2020/11/22/layered-architecture-what-is-layered-architecture-and-when-to-use-it/"&gt;Layered architecture&lt;/a&gt; &lt;/p&gt;

</description>
      <category>programming</category>
      <category>architecture</category>
    </item>
    <item>
      <title>How to learn to become a good software developer</title>
      <dc:creator>Dimitrov</dc:creator>
      <pubDate>Fri, 06 Nov 2020 13:21:23 +0000</pubDate>
      <link>https://dev.to/devtalker/how-to-learn-to-become-a-good-software-developer-2gd7</link>
      <guid>https://dev.to/devtalker/how-to-learn-to-become-a-good-software-developer-2gd7</guid>
      <description>&lt;p&gt;Two reasons provoked this article — my previous article and a recent Twitter post asking, “How do you learn new technologies?”.&lt;br&gt;
In the next paragraphs, I will try to explain how I see learning should happen. Please have in mind that what I suggest is not for total beginners currently learning basics as “if statements” and variables.&lt;/p&gt;

&lt;h2&gt;
  
  
  Young developer with great ideas
&lt;/h2&gt;

&lt;p&gt;And not that great ones. When you are inexperienced, everything is new to you. Everything is exciting, and you want to try everything. It is a lot easier to jump on the hype train for something new.&lt;/p&gt;

&lt;p&gt;Always learning new things is excellent, but it isn’t that good for a novice developer in the long run.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ddimitrov.dev/2020/10/18/how-to-learn-to-become-a-good-software-developer/"&gt;READ THE FULL ARTICLE&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
