Desenvolvimento em .Net - Dados vs Objectos

Preview:

Citation preview

Desenvolvimento em .Net

Dados vs Objectos

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

Dados vs Objectos

Como se relacionam?

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

● 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

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● ...

Mapeamento dados / objectos● ORM – Object/Relational Mapping

– tem como objectivo ligar os dois mundos... bases de dados e objectos

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

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.

Mapear Hierarquias● Estratégia 1

– mapear toda a estrutura hierarquica para uma tabela

Mapear Hierarquias● Estratégia 2

– mapear cada classe uma tabela

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

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)

de volta ao inicio...

Recapitulando● porque queremos adoptar o famoso conceito

“3-camadas”?

● Separação de Responsabilidade● Independencia na tecnologia usada nas diversas camadas

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”

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

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, ...

Caracteristica de um O/R Mapper● herança● transações● agregações (SUM, AVG, ...)● independente da base de dados● linguagem de pesquisa (tipo SQL)● ...

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

Recommended