{"id":1024,"date":"2014-12-12T16:19:40","date_gmt":"2014-12-12T14:19:40","guid":{"rendered":"http:\/\/adrhc.go.ro\/wordpress\/?p=1024"},"modified":"2017-05-12T11:17:32","modified_gmt":"2017-05-12T09:17:32","slug":"multilayered-architecture","status":"publish","type":"post","link":"https:\/\/adrhc.go.ro\/blog\/multilayered-architecture\/","title":{"rendered":"Multilayered architecture"},"content":{"rendered":"<pre>\r\n<h5>Why use a multilayered architecture ?<\/h5><strong>Flexibility<\/strong>\r\nIt's easier to understand, create, correct, upgrade a very specialized software component instead of a many-specialized one.\r\n<\/pre>\n<pre>\r\n<strong>Crosscutting Concerns<\/strong>\r\n<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ee658105.aspx\" target=\"_blank\">http:\/\/msdn.microsoft.com\/en-us\/library\/ee658105.aspx<\/a>\r\nAuthentication\r\nAuthorization\r\nCaching\r\nCommunication\r\nConfiguration Management\r\nException Management\r\nLogging and Instrumentation\r\nState Management\r\nValidation\r\n<\/pre>\n<pre>\r\n<strong>Rich Domain vs Anaemic Domain<\/strong>\r\n<a href=\"http:\/\/martinfowler.com\/bliki\/AnemicDomainModel.html\" target=\"_blank\">http:\/\/martinfowler.com\/bliki\/AnemicDomainModel.html<\/a>\r\n<a href=\"http:\/\/www.sapiensworks.com\/blog\/post\/2014\/03\/26\/Rich-Domain-Is-SOLID-Anaemic-Domain-Is-An-Anti-Pattern.aspx\" target=\"_blank\">http:\/\/www.sapiensworks.com\/blog\/post\/2014\/03\/26\/Rich-Domain-Is-SOLID-Anaemic-Domain-Is-An-Anti-Pattern.aspx<\/a>\r\n<\/pre>\n<pre>\r\n<strong>Domain Objects vs Persistence Model (ORM Entities)<\/strong>\r\n<a href=\"http:\/\/www.sapiensworks.com\/blog\/post\/2012\/04\/20\/Dont-Use-ORM-Entities-To-Model-The-Domain.aspx\" target=\"_blank\">http:\/\/www.sapiensworks.com\/blog\/post\/2012\/04\/20\/Dont-Use-ORM-Entities-To-Model-The-Domain.aspx<\/a>\r\n<a href=\"http:\/\/www.sapiensworks.com\/blog\/post\/2012\/04\/07\/Just-Stop-It!-The-Domain-Model-Is-Not-The-Persistence-Model.aspx\" target=\"_blank\">http:\/\/www.sapiensworks.com\/blog\/post\/2012\/04\/07\/Just-Stop-It!-The-Domain-Model-Is-Not-The-Persistence-Model.aspx<\/a>\r\n\r\n<strong>Practical examples<\/strong>\r\nORM ids might differ the DO's identifier (if any).\r\nIn many-to-many relationships you might have methods to add an element to a collection and also to set the element's parent <em>this<\/em> object. This kind of ORM method might not exists\/be necessary to DO (domain object).\r\nORM might need <em>Formula<\/em> properties but DO not.\r\nORM might need usage of @EntityListeners but DO not.\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Why use a multilayered architecture ?Flexibility It&#8217;s easier to understand, create, correct, upgrade a very specialized software component instead of a many-specialized one. Crosscutting Concerns http:\/\/msdn.microsoft.com\/en-us\/library\/ee658105.aspx Authentication Authorization Caching Communication Configuration Management Exception Management Logging and Instrumentation State Management Validation [&hellip;]<\/p>\n<div class=\"link-more\"><a href=\"https:\/\/adrhc.go.ro\/blog\/multilayered-architecture\/#more-1024\" class=\"more-link\">Continue reading &#10142; <span class=\"screen-reader-text\">Multilayered architecture<\/span><\/a><\/div>","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[141,140],"class_list":["post-1024","post","type-post","status-publish","format-standard","hentry","category-programming","tag-architecture","tag-layer"],"_links":{"self":[{"href":"https:\/\/adrhc.go.ro\/blog\/wp-json\/wp\/v2\/posts\/1024","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adrhc.go.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adrhc.go.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adrhc.go.ro\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/adrhc.go.ro\/blog\/wp-json\/wp\/v2\/comments?post=1024"}],"version-history":[{"count":0,"href":"https:\/\/adrhc.go.ro\/blog\/wp-json\/wp\/v2\/posts\/1024\/revisions"}],"wp:attachment":[{"href":"https:\/\/adrhc.go.ro\/blog\/wp-json\/wp\/v2\/media?parent=1024"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrhc.go.ro\/blog\/wp-json\/wp\/v2\/categories?post=1024"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrhc.go.ro\/blog\/wp-json\/wp\/v2\/tags?post=1024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}