arquitetura 2012

20
Projetos .Net - Arquitetura 2012 Controles Common

Upload: cassio-pereira

Post on 25-Jul-2015

227 views

Category:

Documents


0 download

TRANSCRIPT

Projetos .Net - Arquitetura 2012

Controles Common

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;