{"id":6,"date":"2013-06-07T13:20:17","date_gmt":"2013-06-07T16:20:17","guid":{"rendered":"http:\/\/www.hectordufau.com.br\/wp\/?p=6"},"modified":"2014-01-05T05:47:05","modified_gmt":"2014-01-05T08:47:05","slug":"parte1","status":"publish","type":"post","link":"https:\/\/www.hectordufau.com.br\/wp\/?p=6","title":{"rendered":"Proposta de Arquitetura &#8211; Parte 1 &#8211; Camadas"},"content":{"rendered":"<p>Para o desenvolvimento de um software, seja qual for o seu prop\u00f3sito, \u00e9 sempre adequado mantermos algum padr\u00e3o na execu\u00e7\u00e3o do trabalho. Independente da metodologia adotada, criar um software em camadas ajuda no aproveitamento de c\u00f3digo e na separa\u00e7\u00e3o de responsabilidades das classes, al\u00e9m de facilitar a manuten\u00e7\u00e3o e a depura\u00e7\u00e3o.<\/p>\n<p>Neste artigo apresentarei a estrutura de camadas que uso em todos os meus projetos, incluindo a nomenclatura utilizada para referenci\u00e1-los. A nomenclatura segue o padr\u00e3o recomendado pela Microsoft, que \u00e9 similar ao utilizado nos pacotes Java.<!--more--><\/p>\n<p>Digamos que iremos criar uma aplica\u00e7\u00e3o para um simples cadastro de clientes. Esta aplica\u00e7\u00e3o usar\u00e1 as diversas interfaces dispon\u00edveis (Web, Windows Forms, WPF, Mobile), e portanto, a nossa nomenclatura ser\u00e1 ajustada para identificar cada projeto pela sua interface.<\/p>\n<p>Abaixo est\u00e1 o diagrama que ilustrar\u00e1 melhor esta estrutura:<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"5\" data-permalink=\"https:\/\/www.hectordufau.com.br\/wp\/?attachment_id=5\" data-orig-file=\"https:\/\/i0.wp.com\/www.hectordufau.com.br\/wp\/wp-content\/uploads\/2013\/06\/Camadas.png?fit=672%2C344&amp;ssl=1\" data-orig-size=\"672,344\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Camadas\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.hectordufau.com.br\/wp\/wp-content\/uploads\/2013\/06\/Camadas.png?fit=672%2C344&amp;ssl=1\" class=\" size-full wp-image-5\" style=\"display: block; margin-left: auto; margin-right: auto;\" alt=\"\" src=\"https:\/\/i0.wp.com\/www.hectordufau.com.br\/wp\/wp-content\/uploads\/2013\/06\/Camadas.png?resize=672%2C344\" width=\"672\" height=\"344\" border=\"0\" srcset=\"https:\/\/i0.wp.com\/www.hectordufau.com.br\/wp\/wp-content\/uploads\/2013\/06\/Camadas.png?w=672&amp;ssl=1 672w, https:\/\/i0.wp.com\/www.hectordufau.com.br\/wp\/wp-content\/uploads\/2013\/06\/Camadas.png?resize=300%2C153&amp;ssl=1 300w\" sizes=\"auto, (max-width: 672px) 100vw, 672px\" \/><\/p>\n<p>Agora vamos explicar o que cada camada significa:<\/p>\n<p><strong>CIA &#8211; Camada de Interface e Acesso<\/strong>. Esta camada \u00e9 a interface gr\u00e1fica com o usu\u00e1rio. Ela sempre ter\u00e1 seu nome extendido caso o projeto seja desenvolvido para mais de um tipo de interface. Por exemplo: Se o projeto for somente Web, ent\u00e3o o nome do projeto terminara \u00e9 CIA. Entretanto, se for constru\u00edda uma vers\u00e3o Web e uma WPF, ent\u00e3o haver\u00e1 dois projetos: o CIA.Web e o CIA.WPF.<\/p>\n<p><strong>CLN &#8211; Camada de L\u00f3gica de Neg\u00f3cios<\/strong>. Esta camada \u00e9 respons\u00e1vel pelo processamento das informa\u00e7\u00f5es que s\u00e3o enviadas pela CIA, e pela prepara\u00e7\u00e3o dos dados recebidos pela camada CAD para exibi\u00e7\u00e3o. Portanto, todas as regras de valida\u00e7\u00f5es, tratamento de dados, formato de exibi\u00e7\u00e3o, etc. devem ser controlados por esta camada.<\/p>\n<p><strong>CAD &#8211; Camada de Acesso a Dados<\/strong>. Esta camada fornece a conectividade com o banco de dados utilizado pela aplica\u00e7\u00e3o. Entretanto, este banco de dados \u00e9 representado pela camada CES, que ser\u00e1 explicada a seguir.<\/p>\n<p><strong>CES &#8211; Camada de Entidades do Sistema<\/strong>. Esta camada fornece a representa\u00e7\u00e3o de todas as tabelas do banco de dados em formato de classes. Na descri\u00e7\u00e3o deste projeto, usaremos o Entity Framework, que oferece todos os recursos de conectividade, m\u00e9todos de consulta, cria\u00e7\u00e3o, atualiza\u00e7\u00e3o e remo\u00e7\u00e3o de registros, sem a necessidade de uso de comandos SQL.<\/p>\n<p><strong>CUB &#8211; Camada de Utilit\u00e1rios B\u00e1sicos<\/strong>. Esta camada \u00e9 um reposit\u00f3rio de utilit\u00e1rios que podem ajudar na valida\u00e7\u00e3o de dados, como a verifica\u00e7\u00e3o de um CNPJ ou CPF, formato de endere\u00e7o de email, entre outros.<\/p>\n<p>A estrutura destes pacotes tamb\u00e9m indica o referenciamento. Em um projeto .NET, a camada CAD \u00e9 referenciada na CLN, que por sua vez \u00e9 referenciada na CIA (ou em cada um dos projetos de interface). As camadas CES e CUB devem ser referenciadas em todas as outras camadas.<\/p>\n<p>Na segunda parte deste artigo, explicarei sobre a cria\u00e7\u00e3o dos projetos no Visual Studio 2010 e como construir a camada CES.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para o desenvolvimento de um software, seja qual for o seu prop\u00f3sito, \u00e9 sempre adequado mantermos algum padr\u00e3o na execu\u00e7\u00e3o do trabalho. Independente da metodologia adotada, criar um software em camadas ajuda no aproveitamento de c\u00f3digo e na separa\u00e7\u00e3o de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[30],"tags":[],"class_list":["post-6","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.hectordufau.com.br\/wp\/wp-content\/uploads\/2013\/06\/Camadas.png?fit=672%2C344&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/s4cTO8-parte1","jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.hectordufau.com.br\/wp\/index.php?rest_route=\/wp\/v2\/posts\/6","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hectordufau.com.br\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hectordufau.com.br\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hectordufau.com.br\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hectordufau.com.br\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6"}],"version-history":[{"count":2,"href":"https:\/\/www.hectordufau.com.br\/wp\/index.php?rest_route=\/wp\/v2\/posts\/6\/revisions"}],"predecessor-version":[{"id":112,"href":"https:\/\/www.hectordufau.com.br\/wp\/index.php?rest_route=\/wp\/v2\/posts\/6\/revisions\/112"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hectordufau.com.br\/wp\/index.php?rest_route=\/wp\/v2\/media\/5"}],"wp:attachment":[{"href":"https:\/\/www.hectordufau.com.br\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hectordufau.com.br\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hectordufau.com.br\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}