desenvolvimento em .net - dados vs objectos
TRANSCRIPT
![Page 1: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/1.jpg)
Desenvolvimento em .Net
Dados vs Objectos
![Page 2: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/2.jpg)
Objectivos● perceber questão "dados ou objectos"● perceber conceito 3-tier● identificar semelhanças e diferenças entre
sgbdr e objectos● perceber conceito n-tier e soa● perceber de que forma podemos ver o acesso
a dados como um serviço● saber o que é O/R Mapping● identificar caracteristicas de um O/R Mapper
![Page 3: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/3.jpg)
Dados vs Objectos
Como se relacionam?
![Page 4: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/4.jpg)
Dados vs Objectos● Necessidades
– Objectos incluem dados e comportamentos– Dados... bem são só dados...
● Existência fisica– objectos normalmente existem em memória volátil
(ram)– dados normalmente existem em memória não
volátil (hdd)● eventualmente num SGBDR
![Page 5: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/5.jpg)
● No entanto:– qualquer aplicação minimamente interessante
necessitará de guardar informação para utilização futura - “data-persistence”.
● Ou seja...– teremos SEMPRE que arranjar alguma forma de
mapear a estrutura de objectos para a estrutura de tabelas!
Dados vs Objectos
![Page 6: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/6.jpg)
Nota Prévia● a análise partindo de um paradigma “data-
oriented” ou partindo de um paradigma “object-oriented” não chega ao mesmo modelo de “entidades”– (considerando uma entidade uma tabela ou um
objecto respectivamente.)● várias soluções para o mesmo problema● legacy code● ...
![Page 7: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/7.jpg)
Mapeamento dados / objectos● ORM – Object/Relational Mapping
– tem como objectivo ligar os dois mundos... bases de dados e objectos
![Page 8: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/8.jpg)
Mapeamento dados / objectos● Dataset – Uma solução .Net
– não é só uma tabela– não é bem um objecto– facilita a resolução de alguns problemas
● se quisermos um conjunto de objectos do mesmo tipo normalmente teremos que:
– criar o objecto (uma classe);– criar uma coleção desses objectos (outra classe)– escrever código para filtrar / ordenar esses dados
![Page 9: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/9.jpg)
Mapeamento dados / objectos● Problema Simples
– Um Objecto <=> Uma Tabela– Uma Propriedade <=> Um Campo
● Problemas Complexos– Hierarquia de objectos (herança)– Propriedades que não têm tipos de dados
“primitivos” => são por exemplo outro objecto.
![Page 10: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/10.jpg)
Mapear Hierarquias● Estratégia 1
– mapear toda a estrutura hierarquica para uma tabela
![Page 11: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/11.jpg)
Mapear Hierarquias● Estratégia 2
– mapear cada classe uma tabela
![Page 12: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/12.jpg)
Mapear Hierarquias● Outras opções
– mapear cada classe concreta para uma tabela– criar uma estrutura genérica de tabelas que permita
acomodar todo o tipo de objectos● outras dificuldades
– herança multipla
![Page 13: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/13.jpg)
Mapeamento dados / objectos● assumindo que é baixo o custo (tempo) para:
– a criação de objectos– a criação de mecanismos para persistir esses
objectos– a criação de mecanismos para utilizar esses
objectos● então a opção poderá ser
– esquecer os datasets...● não ignorando as suas possiveis aplicações (por
exemplo relatórios)
![Page 14: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/14.jpg)
de volta ao inicio...
![Page 15: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/15.jpg)
Recapitulando● porque queremos adoptar o famoso conceito
“3-camadas”?
● Separação de Responsabilidade● Independencia na tecnologia usada nas diversas camadas
![Page 16: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/16.jpg)
SOA e N-Tier – pequena introdução
● “...the concept is to build an application, not as a monolithic system, but as an aggregation of smaller systems that form a community”
![Page 17: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/17.jpg)
Acesso a dados como um serviço● SE:
– todos os objectos precisam de ser persistidos– todos os objectos precisam de ser pesquisáveis
● SE um serviço é:– uma função perfeitamente definida– "self-contained"– que não depende do contexto ou estado de outro
serviço
![Page 18: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/18.jpg)
Acesso a dados como um serviço● ENTÃO
– o acesso a dados é um serviço● MELHOR...
– Já há frameworks que implementam esse serviço!● (O/R Mapper)● exemplos
– Hibernate, ActiverRecord, LLBLGen, ...
![Page 19: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/19.jpg)
Caracteristica de um O/R Mapper● herança● transações● agregações (SUM, AVG, ...)● independente da base de dados● linguagem de pesquisa (tipo SQL)● ...
![Page 20: Desenvolvimento em .Net - Dados vs Objectos](https://reader036.vdocuments.com.br/reader036/viewer/2022082812/5599ca9d1a28abc2418b4578/html5/thumbnails/20.jpg)
Objectivos● perceber questão "dados ou objectos"● perceber conceito 3-tier● identificar semelhanças e diferenças entre
sgbdr e objectos● perceber conceito n-tier e soa● perceber de que forma podemos ver o acesso
a dados como um serviço● saber o que é O/R Mapping● identificar caracteristicas de um O/R Mapper