You are on page 1of 107

1

Desenvolvimento de
Componentes e Acesso a
dados com ADO.NET
.NET Apprentice
Maio de 2004
Jos Antnio Tavares
jrt@isep.ipp.pt
2
Requisitos
Conhecimentos de Base de Dados (Relacionais)
Programao:
De preferncia VB ou C/C++ ou C# ou Java
Paradigma OOP
Estar familiarizado com Microsoft SQL Server ou
outras aplicaes como o Microsoft Access
Conhecer o ADO embora no seja fundamental
Estar familiarizado com o desenvolvimento de
aplicaes para o ambiente Microsoft Windows
3
Agenda
1. Programao com ADO.NET
2. Componentes na Framework .NET
3. Exemplos de Aplicao:
Componentes + ADO.NET
4. Instalao de componentes
Deployment
4
PARTE I
Programao com ADO.NET
5
Contedo
1. Desenho de aplicaes centradas em dados
2. Arquitectura ADO.NET
3. Ligao a Base de Dados
4. Operaes ligadas Base de Dados
5. Construo de Data Sets
6. Ler e Escrever XML com ADO.NET
7. Construir Data Sets a partir de Bases de Dados
6
PARTE I
Programao com ADO.NET
1. Desenho de aplicaes centradas em dados
2. Arquitectura ADO.NET
3. Ligao a Base de Dados
4. Operaes ligadas Base de Dados
5. Construo de Data Sets
6. Ler e Escrever XML com ADO.NET
7. Construir Data Sets a partir de Bases de Dados
7
Cenrios Conectados
Um cenrio conectado aquele no qual os
utilizadores esto permanentemente ligados
bases de dados
Vantagens:
mais fcil exercer segurana ao nvel do ambiente
A concorrncia mais fcil de controlar
Os dados esto mais actualizados que nos outros cenrios
Desvantagens
necessrio haver uma ligao constante ao servidor
Escalabilidade
8
Cenrios Desconectados
Num ambiente desconectado, um sub-conjunto de dados pode
ser copiado e modificado independentemente e mais tarde as
alteraes podem ser introduzidas de novo na base de dados
Vantagens
Pode-se trabalhar a qualquer altura e pode-se efectuar uma
ligao base de dados apenas quando necessrio
Outros utilizadores podem usar os recursos
Este tipo de ambientes aumenta a escalabilidade e
desempenho das aplicaes
Desvantagens
Os dados nem sempre esto actualizados
Podem ocorrer conflitos de dados que tm que ser resolvidos
9
O que o ADO.NET?
ADO.NET a soluo de acesso a dados em .NET
Faz parte integrante Framework .NET
Substitui completamente o ADO clssico
Constitui uma evoluo ao clssico ADO
Existem similaridades mas mudou muito
Suporta os modelos conectados e desconectados
DataReaders para acesso conectados a dados
DataSets e DataAdapters para desconectados
Baseado em pluggable Data Providers
SQL Server, Oracle, OLE DB & ODBC standard
10
ADO.NET
A nvel do armazenamento de Dados, o ADO.NET suporta
vrios tipos:
No estruturados;
Estruturados, no-hierrquicos
Ficheiros CSV (Comma Separated Value), Folhas Microsoft
Excel, Ficheiros Microsoft Exchange,
Hierrquicos
Documentos XML e outros
Bases de Dados Relacionais
SQL Server, Oracle, Access, ODBC,
11
Viso .net
12
ADO.NET e a Framework .NET
Win32 Win32
Message Message
Queuing Queuing
COM+ COM+
(Transactions, Partitions, (Transactions, Partitions,
Object Pooling) Object Pooling)
IIS IIS WMI WMI
Common Language Runtime Common Language Runtime
.NET Framework Class Library .NET Framework Class Library
ADO.NET: Data and XML ADO.NET: Data and XML
Web Services Web Services User Interface User Interface
VB C++ C#
ASP.NET ASP.NET
Perl Python
13
Connection
Connection
A
D
O
A
D
O
.
N
E
T
Command
Command
Recordset
Recordset
XxxConnection
XxxConnection
XxxCommand
XxxCommand
DataSet
DataSet
XxxTransaction
XxxTransaction
XxxDataReader
XxxDataReader
XxxDataAdapter
XxxDataAdapter
Evoluo do ADO para ADO.NET
14
ADO vs. ADO.NET 1/2
ADO
Desenhado para acessos conectados
Amarrado ao modelo fsico dos dados
RecordSet o contentor central de dados
RecordSet uma (1) tabela que contem todos os dados
Obter dados de > 1 tabela requer um comando JOIN
Os dados "so planos": perde relaes e a navegao
sequencial
Os tipos de dados esto limitados aos tipos de dados
COM/COM+
A partilha de dados via COM marshalling
Problemas com marshalling atravs firewalls (DCOM, binrios)
15
ADO vs. ADO.NET 2/2
ADO.NET
Desenhado acessos desconectados
Pode modelar dados logicamente (em memria)!
DataSet substitui o RecordSet
DataSet pode conter mltiplas tabelas
Obter dados de > 1 tabela no requer um comando JOIN
Relaes so preservadas e a navegao relacional
Os tipos de dados esto apenas limitados por esquemas
(schema) XML
No necessrio converso de tipo de dados
XML, tal como HTML, texto: Firewall friendly
16
Beneficios do ADO.NET
Interoperacionalidade atravs do uso de XML
Standard aberto
Texto legvel e compreensvel pelos humanos
Dados descrevem-se a si mesmos (XML)
Usado transferir todos os dados em ADO.NET
Escalabilidade atravs de DataSet desconectados
Coneces no so mantidas por longos periodos
Database locking no existe
Works the way the Web works: Hit and Run!
Maintainability
Separao entre o tratamento de dados e a user interface
17
PARTE I
Programao com ADO.NET
1. Desenho de aplicaes centradas em dados
2. Arquitectura ADO.NET
3. Ligao a Base de Dados
4. Operaes ligadas Base de Dados
5. Construo de Data Sets
6. Ler e Escrever XML com ADO.NET
7. Construir Data Sets a partir de Bases de Dados
18
Arquitectura do ADO.NET
DataAdapter
Connection
Command
DataReader
Company:
Northwind Traders
Company:
Northwind Traders
DataSet
DataTables
Managed Provider Classes
Database
Database Database
19
SQL Server 7.0
(e posterior)
Usar as classes ADO.NET num
cenrio conectado
Num cenrio conectado, os
recursos so mantidos no
servidor at a ligao ser
fechada
1. Abrir ligao
2. Executar comando
3. Processar linhas no reader
4. Fechar reader
5. Fechar ligao
SqlConnection
SqlConnection
SqlCommand
SqlCommand
SqlDataReader
SqlDataReader
20
Usar as classes ADO.NET
num cenrio desconectado
Num cenrio desconectado, os
recursos no so mantidos no
servidor durante o processamento
dos dados
1. Abrir a ligao
2. Encher o DataSet
3. Fechar a ligao
4. Processar o DataSet
5. Abrir a ligao
6. Actualizar a fonte de dados
7. Fechar a ligao
SqlConnection
SqlConnection
SqlDataAdapter
SqlDataAdapter
DataSet
DataSet
SQL Server 7.0
(and later)
21
Arquitectura do ADO.NET
Esta animao descreve a
arquitectura do ADO.NET
considerando ambos os modelos:
conectado e desconectado
22
O ADO.NET totalmente integrado com
XML
Utilizao do XML numa aplicao ADO .NET desconectada
XML Web Services
DataSet
DataSet
Request data
1
1 1
SQL query
2
2 2
Results
3
3 3 XML
4
4 4
Updated XML
5
5 5
SQL updates
6
6 6
Data Source Cliente
DataSet
DataSet
ADO.NET e XML
23
PARTE I
Programao com ADO.NET
1. Desenho de aplicaes centradas em dados
2. Arquitectura ADO.NET
3. Ligao a Base de Dados
4. Operaes ligadas Base de Dados
5. Construo de Data Sets
6. Ler e Escrever XML com ADO.NET
7. Construir Data Sets a partir de Bases de Dados
24
O que so .NET Data Providers
Definio
Um .NET data provider um conjunto de classes que
pode ser usado para efectuar ligaes a bases de dados,
manipular e actualizar os dados
Tipos de .NET data providers
SQL Server .NET Data Provider
OLE DB .NET Data Provider
ODBC .NET Data Provider
Outros (DB2/400, MySQL, )
25
DataSet
SQL Server .NET
Data Provider
SQL Server .NET
Data Provider
OLE DB .NET
Data Provider
OLE DB .NET
Data Provider
SQL Server 7.0
(e posterior)
OLEDB sources
(SQL Server 6.5)
Modelo de objectos do
ADO.NET
26
Os Namespaces
System.Data
System.Data.Common
System.Data.SqlClient
System.Data.OleDb
System.Data.SqlTypes
System.Xml
27
Classes do .NET Data Provider
XxxConnection exemplo, SqlConnection
XxxTransaction exemplo, SqlTransaction
XxxException exemplo, SqlException
XxxError exemplo, SqlError
XxxCommand exemplo, SqlCommand
XxxParameter exemplo, SqlParameter
XxxDataReader exemplo, SqlDataReader
XxxDataAdapter exemplo, SqlDataAdapter
XxxPermission exemplo, SqlClientPermission
28
Gesto de coneces
Abrir e fechar conexes explicitamente:
Open
Close
Abrir e fechar ligaes implicitamente:
Os Data Adapters podem abrir e fechar as ligaes
automaticamente sempre que necessrio
O mtodo Dispose:
Remove a conexo da pool de conexes
29
OleDbConnection e
SQLConnection
Criao, abertura e fecho de uma coneco a uma
fonte de dados
Exemplo OleDbConnection :
St r i ng conSt r =" Pr ovi der =Mi cr osof t . J et . OLEDB. 4. 0; " +
" Dat a Sour ce=NWI ND_RW. MDB" ;
Ol eDbConnect i on aConn = new Ol eDbConnect i on( conSt r ) ;
aConn. Open( ) ;
/ / acesso, i nser o e act ual i zao de dados
aConn. Cl ose( ) ;
30
Pooling de Coneces
A abordagem desconectada melhora significativamente
a escalabilidade
No entanto, requisitar frequentemente coneces degrada o
desempenho das aplicaes
O pooling de coneces permite uma pool de
coneces idnticas partilhadas por mltiplos
utilizadores/aplicaes
Escalvel e rpido
Os maiores benefcios so para as aplicaes Web / n-tier
ADO.NET usa pooling por defeito
31
Pooling de Coneces com o
SQL Server
Esta animao descreve como
que o pooling de coneces
funciona com o Microsoft SQL
Server 2000
32
PARTE I
Programao com ADO.NET
1. Desenho de aplicaes centradas em dados
2. Arquitectura ADO.NET
3. Ligao a Base de Dados
4. Operaes ligadas Base de Dados
5. Construo de Data Sets
6. Ler e Escrever XML com ADO.NET
7. Construir Data Sets a partir de Bases de Dados
33
O objecto COMMAND
O objecto command uma referncia a uma
instruo de SQL ou Stored Procedure
Propriedades
(Name), Connection, CommandType, CommandText,
Parameters
Mtodos
ExecuteScalar, ExecuteReader, ExecuteNonQuery
ExecuteXmlReader (s para o SqlCommand)
34
Retornar s um registo
Exemplo
OADO.NET mais eficiente que o ADO clssico,
dado que este retorna um RecordSet completo
Exemplos de utilizao:
Obter as unidades em stock para um determinado produto
Contar os produtos
COUNT, MAX, MIN, AVERAGE
35
Retornar mltiplos registos
DataReader
Read-only
Forward-only
O mtodo ExecuteReader retorna um
DataReader
36
Exemplo Data Reader
Di mcmPr oduct s As New Sql Command( _
" SELECT Pr oduct Name, Uni t sI nSt ock " & _
" FROM Pr oduct s" , cnNor t hwi nd)
cnNor t hwi nd. Open( )
Di mr dr Pr oduct s As Sql Dat aReader
r dr Pr oduct s = cmPr oduct s. Execut eReader ( )
Do Whi l e r dr Pr oduct s. Read( )
Li st Box1. I t ems. Add( r dr Pr oduct s. Get St r i ng( 0) )
Loop
r dr Pr oduct s. Cl ose( )
37
Instrues de Insero e
Actualizao de Dados
Di mcmd As Sql Command = New Sql Command( _
" dbo. I ncr easePr oduct Pr i ces" , cnNor t hwi nd)
cmd. CommandType = CommandType. St or edPr ocedur e
cnNor t hwi nd. Open( )
Di maf f ect ed As I nt eger = cmd. Execut eNonQuer y( )
cnNor t hwi nd. Cl ose( )
MessageBox. Show( Regi st os Af ect ados: " & af f ect ed)
38
Transaces
XxxConnection por exemplo, SqlConnection
BeginTransaction
XxxTransaction por exemplo, SqlTransaction
Commit
Rollback
Exemplo
39
DEMO 01
Criar uma soluo em Visual Studio .NET do tipo
Database
Criar uma pequena aplicao que ilustra o modelo
conectado
40
PARTE I
Programao com ADO.NET
1. Desenho de aplicaes centradas em dados
2. Arquitectura ADO.NET
3. Ligao a Base de Dados
4. Operaes ligadas Base de Dados
5. Construo de Data Sets
6. Ler e Escrever XML com ADO.NET
7. Construir Data Sets a partir de Bases de Dados
41
Como constitudo o DataSet
Database
Connection
Stored
Procedure
DataSet
DataTable
DataTable
DataRow
DataColumn
DataTable
DataRelation
Constraints
42
Modelo de Objectos do
DataSet
DataSet
DataTableCollection DataTable
DataColumnCollection
DataRowCollection
ConstraintCollection
DataColumn
DataRow
Constraint
DataRelationCollection DataRelation
43
DataSet, DataTable, DataColumn
Criar um DataSet
Arrastar o controlo DataSet da Toolbox
Criar uma DataTable
Editar a coleco de Tables de um DataSet usando
a janela de propriedades
Criar uma DataColumn e adicion-la a uma
DataTable
Editar a coleco de Columns de uma DataTable
usando a janela de propriedades
44
System.Data DataSet e
DataTable
Criar DataTable e adicionar a um DataSet
Dat aSet ds = new Dat aSet ( ) ;
/ / Cr eat e Dat aTabl e obj ect : Cust omer s.
Dat aTabl e dt = new Dat aTabl e( Cust omer s ) ;
/ / Cr eat e and add col umns t o t he t abl e
/ / 1. Expl i ci t l y cr eat e and Add a Dat aCol umn
Dat aCol umn dc = new Dat aCol umn( Cust I D, I nt 16 ) ;
dt . Col umns. Add( dc ) ;
/ / 2. I mpl i ci t l y Cr eat e and Add col umns ( Dat aCol umn) .
dt . Col umns. Add( Fi r st _Name, St r i ng ) ;
dt . Col umns. Add( Last _Name, St r i ng ) ;
/ / Add t he Dat aTabl e obj ect t o t he Dat aSet
ds. Tabl es. Add( dt ) ;
45
Restrio de Chave Primria
Usar a propriedade PrimaryKey da DataTable
Seleccionar as colunas pela ordem desejada
No permite mudar o nome restrio
Editar a coleco de Constraints da DataTable
Adicionar uma UniqueConstraint
Dar o nome restrio
Seleccionar as colunas
Activar a caixa de chave primria
46
Expresses Customisadas
As expresses Custom so colunas cujos valores
so originados em clculos e no em valores
guardados
Usar a propriedade Expression da DataColumn
Sum( [ Uni t Pr i ce] * [ Quant i t y] )
As funes de agregao podem usar relaes
pai/filho
Avg, Count , Sum, Max, Mi n
47
DEMO 02
Um pequena aplicao que ilustra programaticamente,
no modelo desconectado, a criao de DataSets
48
Inserir registos
Criar uma linha nova
DataRow drNovoEmpregado = dtEmpregados.NewRow();
Preencher a nova linha
drNovoEmpregado["EmpregadoID"] = 11;
drNovoEmpregado["Nome"] = "Nuno";
Adicionar a linha a uma DataTable
dt Empr egados. Rows. Add( dr NovoEmpr egado) ;
Criar, preencher e adicionar numa s instruo
dtEmpregados.Rows.Add(new Object[]{11, "Nuno"});
49
Modificar registos
O mtodo BeginEdit da classe DataRow
Desliga o lanamento de eventos e
excepes
Os mtodos EndEdit e CancelEdit da
classe DataRow
Ligam de novo o lanamento de eventos e
excepes
50
Apagar registos
O mtodo Remove da classe DataRowCollection
apaga completamente o registo da coleco
dtEmpregados.Rows.Remove(drEmpregado);
O mtodo Delete da classe DataRow marca o registo
como apagado. Este fica escondido, mas acessvel,
se necessrio
drEmpregado.Delete();
51
Alteraes de dados no
DataSet
Uma DataRow pode guardar mltiplas verses de
valores para cada coluna:
DataRowVersion.Current
O valor actual da coluna
DataRowVersion.Original
O valor da coluna antes de qualquer alterao ter ocorrido
DataRowVersion.Proposed
O valor da coluna durante o ciclo BeginEdit / EndEdit
DataRowVersion.Default
O valor por defeito em funo do rows state
52
Processamento de Verses de
linha
CURRENT ORIGINAL PROPOSED
White White N/A
White White Brown
Brown White N/A
dataRow.BeginEdit();
dataRow[ "au_lname" ] = "Brown";
dataRow.EndEdit();
dataRow[ "au_lname", DataRowVersion.Current ] // Brown
dataRow[ "au_lname", DataRowVersion.Original ] // White
53
Processamento do Row State
CURRENT ORIGINAL ROW STATE
White White Unchanged
Brown White Modified
Brown Brown Unchanged
dr [ " au_l name" ] = " Br own" ;
dr . Accept Changes( ) ;
54
Actualizaes com o
DataAdapter
Actualizaes so escritas na base de dados usando o mtodo
Update do DataAdapter
DataAdapter analisa o Row State para cada linha
Executa a aco apropriada (insert, update or delete) de acordo com o
seu row state
Usa os objectos Command atribuidos s suas propriedades
InsertCommand, UpdateCommand e DeleteCommand
RowSt at e = Unchanged
RowSt at e = Added
RowSt at e = Modi f i ed
RowSt at e = Del et ed
I gnor e
Use I NSERT command
Use UPDATE command
Use DELETE command
Dat aRows i n Dat aTabl e Dat aAdapt er Act i on
55
Optimizao de actualizaes
Objectos do tipo DataSet e DataTable suportam o mtodo
GetChanges
GetChanges sem argumentos
Extrai todas as linhas cujo RowState no Unchanged
dsChanges = ds. Get Changes( ) ;
GetChanges com argumento do tipo RowState
Extrai apenas as linhas com um RowState especificado
Permite controlar a ordem em que os inserts, updates e
deletes so efectuados base de dados
changes = ds. Get Changes( Dat aRowSt at e. Added ) ;
56
Usar o mtodo SELECT
As DataTables tm um mtodo de Select que
permite filtrar as DataRows de modo a cumprir com
restries de ordenao e de estado
Trs parmetros opcionais
Expresses de filtragem, como por exemplo,
"City=Porto'"
Ordenar, por exemplo, "City ASC"
DataViewRowState, por exemplo, Deleted
57
Criar um DataView
Criar um DataView atravs da utilizao dos
controlos
Criar um DataView programaticamente
DataView dvProdutos = new
DataView(dsNorthwind.Tables["Products"]);
dvProdutos.Sort = "UnitPrice";
dvProdutos.RowFilter = "CategoryID > 4";
grdProducts.DataSource = dvProdutos;
Aplicar um DataView a um DataTable
dvProdutos.Table = dsNorthwind.Tables("Products");
58
Objectos DataView - Exemplo
/ / Code f or myTabl e Cust omer s wi t h
/ / Name col umn not shown
Dat aVi ew vi ew1 = new Dat aVi ew( myTabl e ) ;
Dat aVi ew vi ew2 = new Dat aVi ew( myTabl e ) ;
/ / Cr eat es Ascendi ng vi ew of Cust omer s by Name
vi ew1. Sor t = Name ASC;
/ / Set t he vi ew t o show onl y modi f i ed ( or i gi nal ) r ows
vi ew2. RowSt at eFi l t er =
Dat aVi ewRowSt at e. Modi f i edOr i gi nal ;
/ / Bi nd t o UI el ement ( s) . . .
Dat aGr i d myGr i d = new Dat aGr i d( ) ;
myGr i d. Set Dat aBi ndi ng( vi ew1, Cust omer ) ;
/ / . . .
59
DEMO 03
Considerando a aplicao do DEMO 02 e
programaticamente:
Adicionar e actualizar registos
Criar DataViews
60
PARTE I
Programao com ADO.NET
1. Desenho de aplicaes centradas em dados
2. Arquitectura ADO.NET
3. Ligao a Base de Dados
4. Operaes ligadas Base de Dados
5. Construo de Data Sets
6. Ler e Escrever XML com ADO.NET
7. Construir Data Sets a partir de Bases de Dados
61
ADO.NET: Data e XML
ADO.NET: Data and XML
ADO.NET: Data and XML
OleDb OleDb SqlClient SqlClient
Common Common SQLTypes SQLTypes
System.Data System.Data
XSL XSL
Serialization Serialization
XPath XPath
System.Xml System.Xml
62
XML e ADO .NET
Mtodo ReadXML
dsNor t hwi nd. ReadXml ( @" c: \ XML\ t est e. xml " ,
Xml ReadMode. I nf er Schema) ;
Mtodo WriteXML
dsNor t hwi nd. Wr i t eXml ( @" c: \ XML\ t est e. xml " ,
Xml Wr i t eMode. Wr i t eSchema) ;
63
DEMO 04
Utilizao de XML
Um pequena aplicao que ilustra a persistncia de
DataSets
64
PARTE I
Programao com ADO.NET
1. Desenho de aplicaes centradas em dados
2. Arquitectura ADO.NET
3. Ligao a Base de Dados
4. Operaes ligadas Base de Dados
5. Construo de Data Sets
6. Ler e Escrever XML com ADO.NET
7. Construir Data Sets a partir de Bases de Dados
65
DataAdapter
Pode-se preencher um DataSet atravs de um
DataAdapter
Invoca-se o mtodo Fill do DataAdapter
O mtodo Fill executa o SelectCommand
Preenche o DataSet com a estrutura e contedo do
resultado do inqurito
Para optimizar o desempenho
aDat aSet . Enf or ceConst r ai nt s=Fal se
Chamar o mtodo BeginLoadData do DataTable
66
DataAdapter - Exemplo
/ / Vi sual C#
Dat aSet dsCust omer s = new Dat aSet ( ) ;
dsCust omer s. Tabl es. Add( new Dat aTabl e( " Cust omer s" ) ) ;
dsCust omer s. Tabl es[ 0] . Begi nLoadDat a( ) ;
daCust omer s. Fi l l ( dsCust omer s, " Cust omer s" ) ;
dsCust omer s. Tabl es[ 0] . EndLoadDat a( ) ;
dat aGr i d1. Dat aSour ce =
dsCust omer s. Tabl es[ 0] . Def aul t Vi ew;
67
Algumas operaes do
DataAdapter
Deve-se usar o mtodo Merge para juntar dois DataSets um
original e um que contenha apenas as mudanas ao original
O mtodo de Update de um DataAdapter chama o comando
apropriado para cada linha alterada (INSERT, UPDATE, DELETE)
numa DataTable especfica
O mtodo AcceptChanges de um DataSet efectua o Commit a
todas as alteraes efectuadas a um DataSet especfico desde o
seu ltimo carregamento ou desde que foi chamado este mtodo
pela ltima vez
68
DEMO 05
Um pequena aplicao que mostra como criar e preencher
DataSets a partir de fontes de dados e como persistir as
alteraes dos DataSets para fontes de dados
BD em MS Access
69
Typed DataSets
Visual Studio .NET pode gerar strongly typed DataSets
Classes customisadas derivadas de DataSet
Proporciona toda a funcionalidade dos DataSet
Contem classes, mtodos, eventos e propriedades especificas
relacionadas com os dados em questo
Por exemplo, um typed DataSet pode conter:
Uma classe chamada Customers deriveda de DataTable
Uma classe chamada CustomerRow deriveda de DataRow
com propriedades CustomerID e Name
70
Typed DataSets - Vantagens
Compile-time type checking
Funcionalidades adicionais
Por exemplo, o mtodo FindByCustomerID
Cdigo mais legvel e manuteno facilitada
Total suporte pelo IntelliSense
Torna o cdigo mais legvel e menos sujeito a erros
st r i ng s = cust omer Dat aSet . Cust omer s[ 1 ] . Name;
comparado com :
st r i ng s = ( st r i ng) cust omer Dat aSet .
Tabl es[ " Cust omer s" ] .
Rows[ 1 ] . I t em[ " Name" ] ;
71
Typed DataSets - Criar
Visual Studio gera typed DataSets a partir definies XML
schema (XSD)
Visual Studio oferece varias formas de gerar definies XML
schema
A forma mais fcil :
Seleccionar o Add New Item wizard
Seleccionar a template Data Set para adicionar um ficheiros
XSD
Arrastar uma table ou uma stored procedure do Server
Explorer para a rea de trabalho
E tudo!
72
DEMO 06
As mesma aplicao do DEMO 04, mas agora com Typed
DataSets
73
PARTE II
Componentes na
Framework .NET
74
Criao Componente para a
Framework .NET
Pontos a considerar
1. Uso de Namespaces e declarao de classes
2. Implementao de classes
3. Implementao estruturada de gesto de
excepes
4. Criao de propriedades
5. Compilao de componentes
75
Criao Componente para a
Framework .NET
Exemplo de demonstrao no Visual Studio
Componente simples que contem apenas um mtodo que valida
utilizadores. O utilizador e a respectiva palavra chave esto numa
tabela da Base de Dados.
76
Criar uma Simples Aplicao
Cliente
Pontos a considerar
1. Uso das Libraries
2. Instanciao dos Componentes
3. Chamar os Componentes
4. Contruir a aplicao Cliente
77
Criar uma Simples Aplicao
Cliente para a Consola
Exemplo de demonstrao no Visual Studio
78
Criar uma Simples Aplicao
Cliente do tipo Windows Forms
Exemplo de demonstrao no Visual Studio
79
PARTE III
Exemplos de Aplicao:
Componentes + ADO.NET
80
Loja de Informtica
Componente simples que implementa as regras de negcio de
uma loja de equipamentos e artigos de informtica.
81
Loja de Informtica
Desenvolvimento em duas camadas
Apresentao Interface com utilizador
Aplicao local
Acesso via Web
Outras
Regras de Negcio - Componente
82
Funcionalidades do componente:
Validao de utilizador/ password ;
Inserir / actualizar clientes;
Verificar se um determinado cliente / produto existe;
Actualizar a quantidade de produtos quando feita
uma venda;
Inserir vendas (transaces) com validao da
existncia dos produtos em stock.
Loja de Informtica
83
Loja de Informtica
Exemplo de demonstrao no Visual Studio
84
PetShop - Microsoft
Microsoft .NET Pet Shop
http://msdn.microsoft.com/library/en-us/dnbda/html/bdasamppet.asp
85
PetShop - Microsoft
.NET Pet Shop high-level logical architecture
86
PetShop - Microsoft
.NET Pet Shop 2.0 Architecture
87
PetShop - Microsoft
.NET Pet Shop 3.0 Architecture
88
PARTE IV
Instalao de componentes
Deployment
89
Instalao de componentes
Deployment
1. Conceitos Comuns
2. Aplicaes Simples
3. Aplicaes Baseadas em Componentes
4. Configurao e Distribuio
90
Conceitos Comuns
Classes and Types Used in .NET Framework
Applications Are:
Organized in a hierarchy of namespaces
Stored in PE files, such as DLLs and EXEs
Fully described by metadata
Assemblies:
Are made up of one or more PE files
Contain a manifest that identifies the assembly
and its files
Specify exported and imported classes and types
Are units of deployment, reuse, and versioning
91
Aplicaes Simples
Require .NET Runtime Be Installed on Local
Computer
Can Be Run Directly from a File Server or Copied
Locally
Make No Registry Entries
Cannot Break Another Application
Eliminate DLL Hell
Can Be Uninstalled by Deleting Locally Copied File(s)
92
Aplicaes baseadas em
componentes
Assemblies Private to an Application
Same as a simple application
Assemblies Private to Related Applications
Deployed into a common subdirectory
Assemblies Shared with Other Unrelated
Applications
Require a strong name and version information
Deployed into the global assembly cache
93
Configurao e Distribuio
Configuration
Maintained in plain-text files
Deployment
Common distribution formats, such as a
.CAB file
or a .MSI file
Common distribution mechanisms, such as
Windows 2000 IntelliMirror or Microsoft
Systems Management Server
94
Cenrios de Instalao
A Simple Application
A Componentized Application
Specifying a Path for Private Assemblies
A Strong-Named Assembly
Deploying Shared Components
A Versioned Assembly
Creating Multiple Versions of a Strong-Named Assembly
Binding Policy
Deploying Multiple Versions of a Strong-Named Assembly
95
A Simple Application
Use the Microsoft Intermediate Language
Disassembler (Ildasm.exe) to Examine the
Assembly Manifest
Version information
Imported types
Exported types
Deploy the Application by:
Running the executable file directly from a file
server, or
Installing it locally by copying the file
Uninstall the application by deleting the file
96
Componentized Application
Assembly Component to Be Used by Application
Assembly Stringer.dll is built from Stringer.cs as follows:
Client Needs to Reference Assembly
Deployment by File Server or Local Copy
csc /target:library Stringer.cs
csc /target:library Stringer.cs
csc /reference:Stringer.dll Client.cs
csc /reference:Stringer.dll Client.cs
97
Specifying a Path for Private
Assemblies
Specifying a Directory From Which to Load Private
Assemblies.
Client.exe.config file specifies a privatePath tag
Configuration Files XML Tags Are Case-Sensitive
<configuration>
<runtime>
<assemblyBinding
xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath=MyStringer"/>
</assemblyBinding>
</runtime>
</configuration>
<configuration>
<runtime>
<assemblyBinding
xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath=MyStringer"/>
</assemblyBinding>
</runtime>
</configuration>
98
Global Assembly Cache
Contains assemblies shared by unrelated applications
Strong Names Are Required for Assemblies in the Cache
Generate a public-private key pair:
Add code to source file to specify version and key information:
Compile:
#if STRONG
[assembly: System.Reflection.AssemblyVersion("1.0.0.0")]
[assembly: System.Reflection.AssemblyKeyFile("orgKey.snk")]
#endif
#if STRONG
[assembly: System.Reflection.AssemblyVersion("1.0.0.0")]
[assembly: System.Reflection.AssemblyKeyFile("orgKey.snk")]
#endif
csc /define:STRONG /target:library /out:AReverser.dll
AReverser.cs
csc /define:STRONG /target:library /out:AReverser.dll
AReverser.cs
sn k orgKey.snk
sn k orgKey.snk
Strong-Named Assembly
99
Deploying Shared
Components
Installing the Strong-Named Component in
the Global Assembly Cache
Examining the Global Assembly Cache
Removing a Shared Component File
gacutil /i AReverser.dll
gacutil /i AReverser.dll
gacutil /l
gacutil /l
gacutil /u AReverser
gacutil /u AReverser
100
A Versioned Assembly
Applications Need to Bind to a Suitable Version of
a Shared Assembly
The Version Number Is Represented by a 4-Part
Number
Applications Get the Versions of Assemblies with
Which They Were Built and Tested
Unless overridden by explicit policy rules
<major version>.<minor version>.<revision>.<build number>
<major version>.<minor version>.<revision>.<build number>
101
Creating Multiple Versions of a
Strong-Named Assembly
Building Two New Versions of AReverser with a New Key Pair
Specify version 2.0.0.0 for one and 2.0.1.0 for the other
For AReverser_v2.0.0.0\AReverser.cs:
Build
Use Ildasm.exe to Examine Different Versions
Note the publickey and version numbers
#if STRONG
[assembly: System.Reflection.AssemblyVersion("2.0.0.0")]
[assembly: System.Reflection.AssemblyKeyFile("orgVerKey.snk")]
#endif
#if STRONG
[assembly: System.Reflection.AssemblyVersion("2.0.0.0")]
[assembly: System.Reflection.AssemblyKeyFile("orgVerKey.snk")]
#endif
csc /define:STRONG /target:library
/out:AReverser_v2.0.0.0\AReverser.dll AReverser_v2.0.0.0\AReverser.cs
csc /define:STRONG /target:library
/out:AReverser_v2.0.0.0\AReverser.dll AReverser_v2.0.0.0\AReverser.cs
.assembly AReverser
{ ...
.publickey = (00 24 ... 82 B1 F2 A0 )
.hash algorithm 0x00008004
.ver 2:0:1:0
.assembly AReverser
{ ...
.publickey = (00 24 ... 82 B1 F2 A0 )
.hash algorithm 0x00008004
.ver 2:0:1:0
102
Binding Policy
Policy Resolution
Allows an assembly reference, specified at compile time, to be
modified after the application has been deployed without
recompiling
Happens in the Following Stages:
1. Application-policy resolution
2. Publisher-policy resolution
3. Administrator-policy resolution
In Each Stage, an XML Configuration File Is Read
Note: XML is case-sensitive
Version Numbers of Assemblies That Are Not Strong-Named
Are Not Checked
Configuration File Tag Examples
privatePath
bindingRedirect
103
Deploying Multiple Versions of
a Strong-Named Assembly
Install Both Versions of AReverser.dll into the Global
Assembly Cache
Compile the VerClient Executable and Specify
Version 2.0.0.0 of the AReverser Component
Use Version Policies to Control Assembly Binding at
Run Time
gacutil /i AReverser_v2.0.0.0\AReverser.dll
gacutil /i AReverser_v2.0.1.0\AReverser.dll
gacutil /i AReverser_v2.0.0.0\AReverser.dll
gacutil /i AReverser_v2.0.1.0\AReverser.dll
csc /reference:MyStringer\Stringer.dll
/reference:AReverser_v2.0.0.0\AReverser.dll VerClient.cs
csc /reference:MyStringer\Stringer.dll
/reference:AReverser_v2.0.0.0\AReverser.dll VerClient.cs
104
Packaging and Deployment
Tools
Assembly Linker (Al.exe)
Global Assembly Cache tool (Gacutil.exe)
MSIL Disassembler (Ildasm.exe)
Strong Name (Sn.exe)
Native Image Generator (Ngen.exe)
Assembly Binding Log Viewer (Fuslogvw.exe)
.NET Framework Configuration Tool
(Mscorcfg.msc)
Code Access Security Policy Tool (Caspol.exe)
105
Perguntas & Respostas
106
Mais Informao...
MSDN Library
http://msdn.microsoft.com/library
.net framework center
http://msdn.microsoft.com/netframework/
C#
http://msdn.microsoft.com/vcsharp/
ASP.net
http://www.asp.net
Laboratrio .net do ISEP/IPP
http://www.dei.isep.ipp.pt/labdotnet/
107
Desenvolvimento de
Componentes e Acesso a
dados com ADO.NET
.NET Apprentice
Maio de 2004
Jos Antnio Tavares
jrt@isep.ipp.pt

You might also like