arquitetura 2012
TRANSCRIPT
3 Camadas / N Camadas – Parte 1
Estrutura1. Apresentação / UI – Primeira camada da arquitetura onde é definida a interface de comunicação entre o usuário e a aplicação.
2. Hosting – Segunda camada da arquitetura onde é definida a interface de comunicação entre outros sistemas e a aplicação.
2.1. Serviços – Parte da segunda camada da arquitetura onde é / são definido(s) os serviços (WCF) de comunicação com a aplicação.
3. Negócio – Terceira camada da arquitetura onde é / são definida(s) a(s) classe(s) de negócio, interface entre a camada 1 e / ou 2 com a camada 4.
3.1 Entidade – Parte da terceira camada da arquitetura onde é / são definidas(os) a(s) classe(s) que representam as entidades da aplicação.
Estrutura3 Camadas / N Camadas – Parte 2
5. Teste – Quinta camada da arquitetura, é uma camada independente da aplicação, serve apenas para organizar as classes de UnitTest.
Framework – Camada base e auxiliar dos projetos Gommo. Nesta camada são definidas(os) classes e controles comuns para os projetos em geral.
4. Dados – Quarta camada da arquitetura onde é / são definida(s) a(s) classe(s) de acesso ao banco de dados.
Estrutura3 Camadas / N Camadas – Parte 3
A estrutura de camadas também é refletida no Windows Explorer e na estrutura de pastas físicas.
Cada projeto fica em uma pasta separada, assim como existem pastas para a documentação do projeto, e outros artefatos como diagramas, etc.
Isso torna eficaz a pesquisa de arquivos, o controle de versão e a visualização por parte da equipe.
Funcionamento – Parte 1Fluxo de informações
1. Apresentação UI – Web Site
3. Negócio - Facade
3.1 Entidades – TO - EO
4. Dados - Dao
B.D.
Funcionamento – Parte 2Fluxo de informações
2. Hosting
3. Negócio - Facade
3.1 Entidades – TO - EO
4. Dados - Dao
B.D.
2.1 Serviços - WCF
Sistema externo
DDD – Domain Driven Design - Parte 1
Metodologias utilizadas ou aplicáveis
A arquitetura apresentada baseia-se no conceito do DDD, que é a construção de uma aplicação baseada em domínios.
Um domínio neste cenário, nada mais é que um assunto ou entidade mais popularmente conhecido.
Exemplo do domínio Usuário:
(3) Namespace Gommo.ProjetoModelo.Facade Classe UsuarioFacade.(3.1) Namespace Gommo.ProjetoModelo.Entidade Classe UsuarioTO – UsuarioEO ou Usuario.(4) Namespace Gommo.ProjetoModelo.Dao Classe UsuarioDao.Exemplo do domínio Usuário com integração:
(2) Namespace Gommo.ProjetoModelo.InterfaceComunicacaoServer Classe UsuarioInterface.(2.1) Namespace Gommo.ProjetoModelo.InterfaceComunicacao Interface IUsuarioService Classe UsuarioService.(3) Namespace Gommo.ProjetoModelo.Facade Classe UsuarioFacade.(3.1) Namespace Gommo.ProjetoModelo.Entidade Classe UsuarioTO – UsuarioEO ou Usuario.(4) Namespace Gommo.ProjetoModelo.Dao Classe UsuarioDao.
Metodologias utilizadas ou aplicáveisDDD – Domain Driven Design - Parte 2
Usuario – Entidade – TO - EO
UsuarioFacade
UsuarioDao
B.D.
UI
Sistema Externo
UsuarioInterface
UsuarioService
WebSite ou WebApplicationDetalhes
Item WebApplication WebSite
Arquivo de projeto Sim Não
Pasta App_Code Sim* Sim
Classes organizadas por Namespaces Sim Não
Opções de Deployment 1 3
Alteração das classes na Depuração (Debug) Não Sim
Alteração na página (.aspx) na Depuração (Debug) Sim Sim
Properties do Arquivo no projeto Sim Não
*é necessário criá-la manualmente com a opção New Folder e, se necessário, mudar a Propriedade "Build Action" das classes dentro da App_Code para "Compile".http://msdn.microsoft.com/en-us/library/dd547590.aspx
Estrutura de diretórios - UIDetalhes
A importância da estrutura de diretórios dentro do WebSite é muito importante, pois garante a integridade do fluxo de informações da aplicação.
No exemplo ao lado, há uma estrutura de pastas para Upload de arquivos do usuário. É importante separar as pastas por domínio (DDD).
Classes e Patterns UtilizadosDetalhes
No modelo proposto já existe uma parte da camada 4 (Dao) pronto, que é justamente a parte onde realiza a conexão com o banco de dados, e efetiva as operações necessárias no mesmo.
A camada 4 (Dao) é uma das mais importantes, pois trata do acesso as informações de cada aplicação assim como a performance na execução das mesmas. Para garantir que a performance não seja um problema nas aplicações independente de seu tamanho, o acesso para leitura de dados é realizado utilizando-se a classe SqlDataReader do namespace System.Data.SqlClient.SqlDataReader, através da tecnologia de conexão ADO.Net.
SqlDatareader http://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqldatareader.aspx
ADO.Net http://msdn.microsoft.com/en-us/library/e80y5yhx(v=vs.80).aspx
A classe SqlDataReader é utilizada sempre dependendo de uma conexão (modo conectado), e apesar disso seu desempenho é superior ao da classe DataSet que trabalha de modo desconectado.
Classes e Patterns UtilizadosDetalhes
Design Patterns é uma forma de estruturar um conjunto de classes e suas interdependências assim como seus comportamentos, assim como para garantir a melhor performance na utilização dessas classes.
Singleton – garante uma única instância de determinada classe na memória.
Facade – interligação entre classes de forma isolada.
Bridge – separa a interface de um objeto da sua implementação.
Design Patterns http://www.dofactory.com/Patterns/Patterns.aspx
Web.config
Configurações
<?xml version="1.0"?><configuration><appSettings> <add key="DataProvider" value="System.Data.SqlClient"/> <add key="ConnectionStringName" value="ADO.NET.SqlServer"/></appSettings><connectionStrings> <add name="ADO.NET.SqlServer" connectionString="Data Source=servidor;Initial Catalog=DataBase;Integrated Security=False;User ID=Usuario;Password=Senha;"/></connectionStrings>
Deployment
Basta gerar um Publish do projeto conforme figura.
A primeira opção é para permitir atualização do site atravéz de dlls separadas.
A segunda opção é para gerar dlls separadas para cada arquivo, .aspx e .ascx.
Como fazer – Web Site
Como fazer – Web App
Deployment
Basta gerar um Publish do projeto conforme figura.
A imagem representa um Publish Profile, onde você configura o padrão diretamente no IIS.
Ou escolher a opção FileSystem em Publish method. E aio deploy é igual ao WebSite exceto pelo fato de Web App gerar apenas uma dll para todo o projeto.
Por que utilizar?
Vantagens
Fácil adaptação da equipe;
Tecnologia .Net otimizada utilizando boas práticas e Design Patterns;
Flexibilidade;
Manutenabilidade;
Escalabilidade;
Patrimônio da Gommo;
Plataforma própria;
Por que não utilizar?
Desvantagens
Definição dos controles e classes comuns;
Tempo de implementação dos controles e classes comuns;
O que mais pode ser feito
Plugins
TFS – Deploy automático, Build Automático; Work Item
Code Metrics;
Code Analysis;
Redgate;
Re-sharper;