Buscar

Tcc desenvolvimento de e commerce em asp.net 20 03 2011

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Tcc - desenvolvimento de e-commerce em asp.net
 de renanro | trabalhosfeitos.com
 FACULDADE CENECISTA DE VARGINHA
CURSO DE BACHAREL EM SISTEMAS DE INFORMAÇÃO
RENAN ROBERTO OLIVEIRA
DESENVOLVIMENTO DE UM 
E-COMMERCE EM ASP.NET
Varginha
2010
RENAN ROBERTO OLIVEIRA
DESENVOLVIMENTO DE UM 
E-COMMERCE EM ASP.NET
Trabalho de conclusão de curso apresentado à Faculdade Cenecista de Varginha como parte dos requisitos para obtenção do grau de Bacharel em Sistemas de Informação.
	
Varginha
2010
RENAN ROBERTO OLIVEIRA
DESENVOLVIMENTO DE UM 
E-COMMERCE EM ASP.NET
Trabalho apresentado ao Curso de Bacharel em Sistemas de Informação da Faculdade Cenecista de Varginha como parte dos requisitos para conclusão do curso. Submetida à aprovação da banca examinadora composta pelos seguintes membros.
_____________________________________
Prof. Rafael Rodrigues de Sousa - Orientador
_____________________________________
Membro
_____________________________________
Membro
	Varginha, 23	de Novembro	de 2010
		Primeiramente agradeço a Deus pela dádiva da vida. Agradeço também à minha família pela compreensão e apoio ao longo deste curso. À minha noiva pelo carinho. Aos meus colegas de curso. Agradeço também aos professores pelo apoio e esclarecimento das dúvidas ao longo do curso.
“A arte de programar consiste em organizar
e dominar a complexidade. "
Edsger W. Dijkstra
RESUMO
		
	
	Esta monografia tem por finalidade o desenvolvimento de um sistema de e-commerce usando a linguagem de programação c#, a plataforma ASP.NET com desenvolvimento em N camadas e o software Visual Studio 2010. O banco de dados utilizado nesta aplicação será o SQLServer 2005, onde será mostrado a criação eos relacionamentos das tabelas. Contudo, vamos explicar os seguintes conceitos: internet, e-commerce, ASP.NET e demais recursos utilizados para a criação da aplicação. Serão analisadas as funcionalidades e a agilidade no desenvolvimento da aplicação das tecnologias utilizadas e também a facilidade de utilização e manutenção do sistema. Desta maneira será implementado um e-commerce com uma área administrativa, onde será gerenciada a inclusão, exclusão e edição de produtos, clientes, categorias, fabricantes e as vendas da loja virtual. O e-commerce será realizado com o sistema de pagamento pronto para o PagSeguro, uma solução completa para pagamentos online.
Palavras-chave: E-commerce, ASP.NET, Aplicações WEB.
ABSTRACT
This monograph aims to develop a e-commerce system using the C# programming language, the ASP.NET platform with N Layers development and Visual Studio 2010 software. The database used in this application is the SQLServer 2005, where it will show the creation of tables and relationships. However, we will explain the following concepts: Internet, e-commerce, ASP.NET and other resources used to create the application. You will analyze the functionality and flexibility in application development technologies used and also the ease of use and maintenance. Thus will be implemented an e-commerce with an administrative area, which will be managed the addition, deletion and editing products, customers, categories, manufacturers and sales shop. The e-commerce will be realized with the payment system ready for PagSeguro, a complete solution for online payments.
		
		
		Keywords: E-commerce, ASP.NET, WEB applications.SUMÁRIO
1.	Introdução	10
2.	Internet	11
	2.1.	O que é internet?	11
	2.2.	Qual é a origem da Internet?	12
	2.3.	Futuro da Internet	12
3.	E-Commerce	14
	3.1.	Introdução	14
	3.2.	Vantagens e desvantagens do e-commerce	15
	3.3.	Por que investir num Comércio Eletrônico ou e-commerce?	16
	3.4.	Por que comprar e vender pela internet?	18
4.	ASP.NET e Conceito de Recursos utilizados	19
	4.1.	Introdução	19
	4.2.	Arquitetura da Plataforma .NET, Vantagens e Características	20
	4.3.	ASP.NET, HTML e C#	24
	4.4.	Vantagens do ASP.NET	26
	4.5.	Arquitetura n camadas	26
	4.6.	Entity Framework	28
	4.7.	Métodos CRUD	32
	4.8.	Generics	33
	4.9.	Interface	34
	4.10.	Expressões Lambda	36
	4.11.	Herança	37
	4.12.	Programação Orientada a Objeto	38
	4.13.	Master Page	39
	4.14.	WebForms	40
	4.15.	Principais controles utilizados	41
	4.16.	SQL Server	43
5.	A Aplicação e os recursos utilizados	46
	5.1.	Introdução sobre o sistema	46
	5.2.	Banco de Dados	46
	5.3.	Iniciando o Projeto no Visual Studio	48
	5.4.	Classes	50
	5.5.	Layout da Aplicação e Camada WEB	56
	5.6.	Camada Admin	61
	5.7.	Front-end e back-end do sistema	62
6.	Considerações Finais	67
7.	Referências Bibliográficas	68
8.	Anexos	69
Introdução
Em todo o mundo, as empresas buscam novas formas de otimizar a produção, comercialização e distribuição dos seus bens e serviços, de forma a garantir ganhos de produtividade e a redução de custos, para competir no mercado globalizado. Com a globalização da economia, outro fenômeno vem conquistando espaços em vários países, inclusive no Brasil: o Comércio Eletrônico, uma forma de fazer negócios através do computador. Asfacilidades cada vez crescentes de acesso das diversas nações à Rede Mundial de Computadores (Internet) tendem a transformar o Comércio Eletrônico em
uma das mais significativas portas de negócios.
	Portanto, esta monografia apresenta alguns conceitos sobre e-commerce e o desenvolvimento da aplicação na plataforma ASP.NET utilizando o desenvolvimento em N camadas, utilizando a linguagem C# e o Visual Studio 2010. Será apresentado várias ferramentas e recursos utilizadas no Visual Studio 2010 para a implementação do sistema.
Internet
 1. 
 2. 
O que é internet?
Segundo Ferreira (2000) a Internet tem revolucionado o mundo dos computadores e das comunicações como nenhuma invenção foi capaz de fazer antes. A invenção do telégrafo, telefone, rádio e computador prepararam o terreno para esta nunca antes havida integração de capacidades. A Internet é, de uma vez e ao mesmo tempo, um mecanismo de disseminação da informação e divulgação mundial e um meio para colaboração e interação entre indivíduos e seus computadores, independentemente de suas localizações geográficas. 
A Internet representa um dos mais bem sucedidos exemplos dos benefícios da manutenção do investimento e do compromisso com a pesquisa e o desenvolvimento de uma infra-estrutura para a informação. Começando com as primeiras pesquisas em trocas de pacotes, o governo, a indústria e o meio acadêmico tem sido parceiros na evolução e uso desta excitante nova tecnologia. Hoje, termos como nome@nomedeempresa.com (ou nome@nomedeempresa.com.br, no caso do Brasil) e http://www.nomedeempresa.com (ou http://www.nomedeempresa.com.br, no caso do Brasil) são usados diariamentepor milhões de pessoas. 
Nesta análise, muitos de nós envolvidos com o desenvolvimento e a evolução da Internet dão suas visões sobre as origens e a história da Internet. A história envolve quatro aspectos distintos:
 * a evolução tecnológica que começou com as primeiras pesquisas sobre trocas de pacotes e a ARPANET e suas tecnologias, e onde pesquisa atual continua a expandir os horizontes da infra-estrutura em várias dimensões como escala, desempenho e funcionalidade de mais alto nível;
 * os aspectos operacionais e gerenciais de uma infra-estrutura operacional complexa e global;
 * o aspecto social que resultou numa larga comunidade de internautas trabalhando juntos para criar e evoluir com a tecnologia;
 * e o aspecto de comercialização que resulta numa transição extremamente efetiva da pesquisa numa infra-estrutura de informação disponível e utilizável. 
A história da Internet é complexa e envolve muitos aspectos - tecnológicos, organizacionais e comunitários. E sua influência atinge não somente os campos técnicos das comunicações via computadores
mas toda a sociedade, na medida em que usamos cada vez mais ferramentas online para fazer comércio eletrônico, adquirir informação e operar em comunidade.
Qual é a origem da Internet?
Segundo Ferreira (2000), no final dos anos sessenta uma divisão do Departamento de Defesa dos Estados Unidos (a Advanced Research Projects Administration - ARPA) desenvolveu a ARPANET, uma rede que uniu universidades e empreendedores de contratos de defesa de alta tecnologia. No âmbito desta rede foi desenvolvida a tecnologia TCP-IP para fornecer um protocolo padrão para comunicações naARPANET. Nos anos oitenta a National Science Foundation - NSF criou a NSFNET para prover conectividade (através de redes de alta velocidade) para seus centros de supercomputação, bem como outros serviços. A NSFNET adotou o protocolo TCP-IP e passou a prover um backbone (espinha dorsal ou alicerce) para desenvolver a INTERNET. 
Futuro da Internet
Segundo Favaretto (2008), o correio eletrônico ou e-mail foi a primeira aplicação da Internet e continua com um valor inestimável. O e-mail permite a comunicação entre duas ou mais pessoas de uma forma extremamente fácil. Pelo e-mail, podemos nos contactar com especialistas ou amigos em qualquer parte do mundo apenas com um clique do mouse. 
A web (ambiente multimídia da Internet) é outra grande aplicação. Ela mudou a forma de fazer marketing, a forma de atender aos clientes, a forma de fazer negócios, a forma de educar, a forma de aprender. Isso é fantástico! E a telefonia pela Internet diminui os custos das ligações telefônicas absurdamente. Falando em ligações telefônicas, a evolução da Internet possibilita a telefonia pela Internet, a televisão e o cinema pela Internet. Uma nova geração de tecnologias básicas de rede que atenda às necessidades de acesso de alta velocidade surgirá. "Novos modos de acesso e novas formas de serviço gerarão novas aplicações que, por sua vez, expandirão ainda mais a Internet". 
Atendimento online com visualização online, vídeo de alta qualidade, tradução de conteúdo para outros idiomas, prontuário eletrônico de pacientes com acesso descentralizado pela Internet, ênfase na educação à distância em nível de treinamento de cargos ou tutoriais de classes,pesquisas e eleições interativas, são exemplos de serviços que encontraremos na Internet. Agora existem os ASP - Application Solution Providers, que são empresas especializadas no desenvolvimento de aplicações para a Internet. O número de possíveis aplicações na Internet é absolutamente infinito. Veja o sucesso no Brasil da entrega do Imposto de Renda pela Internet, tanto em termos de comodidade para a população como em termos de redução de custos para, no caso, o Governo. 
 	| 	|
Uma aplicação que temos grande interesse como cidadãos e internautas é a votação eletrônica. Já existe um projeto em andamento nos Estados Unidos que permitirá que a população vote em eleições públicas de sua casa, pelo telefone ou pela Internet. Estique mais um pouco este conceito e veja que qualquer consulta poderá um dia ser feita diretamente à população (isso demandará centros comunitários com acesso à Internet para as classes sociais menos favorecidas, sim!). 
Mas, claro, isso demandará infra-estrutura de telefonia, TV a cabo, rádio, eletricidade ou satélite. É preciso que as empresas comerciais ligadas a estes segmentos invistam na infra-estrutura da Internet agora pensando num mercado futuro lucrativo. Ainda mais antecipando que os internautas estão cada vez mais trocando os seus modems de discagem para o provedor de acesso por alguma forma de conectividade permanente ou acesso dedicado, como modem a cabo, ADSL, satélite ou outros. 
E-Commerce
 3. 
Introdução
Shapiro e Varian (1999) falam que nas últimas décadas, a evolução das tecnologias de informação e de transmissão de dados e a criação da internet marcaram uma nova fase do processode globalização da economia. Nesse novo cenário aparece como grande inovação no mundo econômico, o comércio eletrônico, possibilitando a realização de operações comerciais sem a definição exata do local de origem e destino.
“O Comércio Eletrônico (CE) é a realização de toda a cadeia de valor dos processos de negócio num ambiente eletrônico, por meio da aplicação intensa das tecnologias de comunicação e de informação, atendendo aos objetivos de negócio. Os processos podem ser realizados de forma completa ou parcial, incluindo as transações negócio-a-negócio, negócio-a-consumidor e intra-organizacional, numa infra-estrutura predominantemente pública de fácil e livre acesso e baixo custo. O CE também pode ser definido como a compra e a venda de informações, produtos e serviços por meio de redes de computadores. O conceito de CE engloba a realização de toda a cadeia de valor dos processos de negócio num ambiente eletrônico, não se restringindo simplesmente à realização de transações comerciais de compra e venda de produtos e serviços. Algumas vezes, esta abrangência não é reconhecida e acaba-se tendo uma visão errônea e restrita de todo o potencial deste novo ambiente.” (Albertin, 2000).
O e-commerce está mudando a forma de concorrer, a velocidade da atuação e a natureza da liderança, devido à facilitação das interações, dos produtos e dos pagamentos dos clientes para as empresas e das empresas para os fornecedores. O e-commerce, que chegou ao Brasil no ano de 2000, tornou-se um mercado próspero que cresce 40% a 50% ao ano. Os editores da revista acrescentam: “O e-commerce, que em seu início vendia livros e CDs, mudou nos últimosanos. A cesta de produtos se expandiu e hoje as vendas estão muito ligadas à sazonalidade”.
Vantagens e desvantagens do e-commerce
Shapiro e Varian (1999, p. 68) apresentam algumas vantagens em trabalhar esse segmento de comércio:
 * Em primeiro lugar, o aumento da competitividade e qualidade de serviço, pois o acesso não é restrito ao público local, e traz comodidade aos consumidores que podem acessar o sistema a qualquer hora e em vários lugares.
 * Em segundo lugar, está a customização em massa de produtos e serviços personalizados, já que as empresas estão concentradas em obter as informações necessárias de cada consumidor;
 * Em terceiro lugar, a economia substancial de custos e redução de preços, ou seja, qualquer negociação envolvendo interações rotineiras entre pessoas oferece a oportunidade de redução nos custos, a qual pode ser repassada para os clientes.
 * Em quarto lugar, o comércio eletrônico também oferece a oportunidade para produtos e serviços inteiramente novos.
Além que, hoje em dia cada vez mais pessoas estão conectadas à internet, assim os internautas estão comprando mais on-line, os consumidores estão aumentando sua freqüência de compras.
De acordo com Shapiro e Varian (1999, p. 69) existem sete problemas referentes ao comércio eletrônico:
 * O primeiro trata-se da globalização, conforme os autores, as empresas podem negociar com clientes de todo o Mundo com uma enorme facilidade. Porém, a falta de informação pode dificultar a negociação.
 * O segundo aponta as questões tributárias. Considerando que o comércio eletrônico pode ser um sistema gerador de novos negócios, ele ainda não possui umalegislação adequada, onde é determinada uma tributação de impostos justa.
 * O terceiro trata da prioridade para os bens, que podem ser distribuídos eletronicamente, e rapidamente copiados.
 * O quarto problema se refere à privacidade e segurança. O comércio eletrônico pode estar presente em redes abertas, onde o sistema pode não ser confiável. As principais preocupações dos clientes em realizar transações on-line são: fraude no cartão de crédito; pagar por informações antes gratuitas; falta de privacidade; intangibilidade e invisibilidade das empresas vendedoras.
 * O quinto trata da unificação dos provedores de acesso. Para alcançar o potencial máximo do comércio eletrônico os provedores precisam estar unificados, desta maneira
os usuários terão acesso universal a todos os produtos e serviços disponibilizados na Internet.
 * O sexto aponta a falta de habilidade no uso do comércio eletrônico. O conhecimento do sistema é um fator essencial para o seu crescimento. E por fim, o sétimo trata da logística. Os autores ressaltam que, cabe a logística observar as dificuldades nas operações para que não ocorram falhas nos processos.
Segundo O’Brien (2001), existem vários fatores que consolidam e ampliam o comércio eletrônico. O autor afirma que cada empresa deve procurar formas e métodos de atrair os seus clientes de modo on-line. Principalmente no desempenho e na eficiência do atendimento, da personalização e na socialização. Ele ainda ressalta que para obter o sucesso, esses sites devem apresentar alguns diferenciais, como:
 * Qualidade e rapidez nos serviços oferecidos;
 * Demonstrar aos clientes a sua importância paraa empresa;
 * Os sites devem ser atrativos e funcionais;
 * Os sites devem apresentar promoções, descontos ou cupons, que acabam atraindo os clientes a comprarem pela Internet;
 * Transmitir segurança e confiabilidade, para o cliente efetivar a compra pela Internet.
Por que investir num Comércio Eletrônico ou e-commerce?
Segundo Almeida (2007), a venda de produtos via Web é uma maneira de ganhar dinheiro. Para as empresas que vendem produtos ou prestam de serviços é interessante investir no e-commerce para expandir os negócios da empresa? 
 * O internauta brasileiro vem perdendo o medo de comprar pela Internet. E, por isso mesmo, este é um bom momento para quem quer investir no comércio online. Em 2004, foram gastos em lojas virtuais mais de 700 milhões, de acordo com o instituto. ”A promessa é que esse mercado continue crescendo nos próximos anos e que as vendas de produtos e serviços sejam a maior fonte de renda de 90% dos sites em dez anos”, isto foi o que previu Elliot Maxwell, especialista em e-commerce do Departamento do Comércio dos Estados Unidos. Esses números como podem ver já aumentou bastante, por exemplo a camara-e.net e a e-bit avaliam que o faturamento tenha alcançado R$ 585 milhões no período de 28 de setembro a 11 de outubro de 2010. A cifra representa aumento de 30% nas vendas para a data sazonal infantil. O tíquete médio das compras de R$ 350, impulsionada pela aquisição de videogames, máquinas digitais, computadores e notebooks.
 * Segundo o Relatório WebShoppers elaborado pela e-bit o faturamento para o setor no primeiro semestre de 2010 foi de R$ 6,7 bilhões. Esse valor representa um aumentonominal de 40% em relação ao primeiro semestre de 2009, quando registrou R$ 4,8 bilhões. Como podem ver, em apenas seis meses de 2010, o valor de compras aumentou 10 vezes mais do que em 2004.
 * O Índice de Confiança do e-Consumidor atingiu, nos meses de julho e agosto, o índice de 87,29%, o melhor desempenho desde fevereiro de 2009, quando começou a ser divulgado, repetindo o recorde atingido em agosto do ano passado. O faturamento do comércio eletrônico deve fechar 2010 com R$ 15 bilhões, contra R$ 10,8 bilhões, em 2009, e R$ 850 milhões, em 2001.
 * As categorias de produtos mais vendidas no 1º semestre do e-Commerce em 2010 que compuseram o Top Five foram: 
 1) Livros e assinaturas de revistas e jornais 
 2) Eletrodomésticos 
 3) Saúde, beleza e medicamentos 
 4) Informática 
 5) Eletrônicos 
Já o Tíquete Médio referente às compras Online foi de R$ 379,00. 
10 bons motivos para investir em uma loja virtual:
 1. Baixo investimento
 2. Alcance mundial – ou
 3. Comodidade - a loja nunca fecha – trabalha de 
 4. Especialistas indicam que será uma das principais fontes de dinheiro da Web. 
 5. As chances de calote são mínimas. 
 6. A fidelização é grande: se o cliente for bem atendido, voltará sempre.
 7. Segurança – clientes escolhem, compram, e recebem produtos sem sair de casa.
 8. Facilidades - clientes encontram, rápida e intuitivamente, tudo que procuram. 
 9. Pagamento e financiamento pela integração das lojas com o ambiente bancário.
 10. Baixo custo de manutenção. 
Por que comprar e vender pela internet?
Segundo Junior (2007), o fato de a Internet seruma ferramenta sem fronteiras territoriais, permite que um usuário qualquer, sentado diante da telinha de seu computador numa cidadezinha perdida no interior do Brasil, tenha acesso a sites localizados em qualquer outra parte do mundo sem sair de sua cadeira. Quando esses sites oferecem produtos e serviços a preços acessíveis então, a Internet passa a ser um poderoso instrumento de compras. Além de saber que existe uma infinidade de produtos disponíveis com os quais aquele nosso usuário do interior antes só poderia sonhar, ele passa a tê-los ao alcance das mãos e, melhor, sem precisar se levantar daquela cadeira em frente ao computador, a não ser para abrir a porta para recebê-los!
Resumindo, o comércio on-line apresenta duas grandes vantagens como: a possibilidade de acesso a produtos antes difíceis de serem encontrados, e a comodidade de adquiri-los sem sair de casa. Outra grande vantagem das lojas virtuais é que elas não necessitam de espaço físico e funcionários, diminuindo custos. Além disso, estão abertas 24 horas por dia e oferecem serviços personalizados de acordo com o perfil do consumidor. Elas também podem existir como serviço complementar de uma rede de lojas ou serviços já existentes ou somente na Internet.
ASP.NET e Conceito de Recursos utilizados
 4. 
Introdução
Segundo Payne (2001), ASP.NET (Active Server Pages.NET) compõe a forma de se criar páginas da Internet utilizando-se a plataforma .NET. Esta plataforma provê uma série de serviços, através de classes existentes no Microsoft .NET Framework. Com ele, é possível a construção não apenas de páginas Web, mas também, de aplicativos desktop, aplicativos paradispositivos móveis, objetos de negócios, web services, etc.
Pode-se dizer que a plataforma .NET é similar à plataforma Java, que também
oferece diversos serviços. Dentre suas principais diferenças, destacam-se as seguintes
características: a plataforma Java utiliza a linguagem de programação Java e seus aplicativos são híbridos (compilados e interpretados, característica que permite que os
aplicativos sejam multi-plataforma); enquanto que em .NET, pode-se utilizar Visual Basic.NET, C++, JScript.NET ou C# (que estará sendo utilizada neste curso), e os aplicativos gerados são compilados em uma linguagem chamada MSIL (Microsoft Intermediate Language). No caso das páginas ASP.NET, sua compilação é realizada no
momento em que elas são chamadas pela primeira vez através do browser, que apresenta o conteúdo final em HTML (Hypertext Markup Language).
A execução de páginas ASP.NET requer a utilização do IIS (Internet Information Server), além da instalação do .NET Framework SDK.
As páginas ASP.NET podem ser escritas utilizando-se editores de textos planos, tal como Bloco de Notas e Vi. Porém, existem várias ferramentas que auxiliam o desenvolvimento de páginas ASP.NET. Algumas das ferramentas de maior destaque são:
 * Microsoft ASP.NET Web Matrix - um software específico para construção de aplicativos para a Web que utilizam a plataforma .NET. É bastante leve (1,3 Mb), apesar de prover muitos recursos de desenvolvimento. É uma ferramenta gratuita, podendo ser baixada em http://www.asp.net/webmatrix/.
 * Macromedia Dreamweaver MX – seguindo a tradição de suas versões anteriores, este software suporta várias tecnologias (ASP,ASP.NET, JSP, PHP, CSS, Java, XML, entre outras). Uma versão para teste pode ser encontrada em http://www.dreamweaver.com.
 * Microsoft Visual Studio .NET – é considerado pela Microsoft, o seu principal ambiente de desenvolvimento, suportando a criação de soluções baseadas na plataforma .NET, incluindo-se aplicativos desktop, ASP.NET, web services, classes, aplicativos para dispositivos
móveis, entre outros. Sua página na Internet é http://msdn.microsoft.com/vstudio/.
Arquitetura da Plataforma .NET, Vantagens e Características
A Figura 1 mostra a arquitetura da plataforma .NET, mais precisamente o .NET Framework. Basicamente segundo Payne (2001), as famílias de linguagens .NET são compiladas em uma linguagem intermediária chamada Intermediate Language (IL), de acordo com a Common Language Specification (CLS). Os dois principais tipos de desenvolvimento de aplicação são Winforms (aplicações Windows) e WebForms (Aplicações Web). O Visual Studio .NET não é necessário para desenvolver aplicações .NET, embora o VS.NET ofereça uma extensiva arquitetura que o torna ideal para o desenvolvimento de aplicações .NET.
Figura 1 – Arquitetura da plataforma .NET
Fonte: Elaborada pelo próprio autor
Essa arquitetura oferece inúmeras vantagens, sendo a maior delas uma API (Application Programming Interface ou Interface de Programação de Aplicações) consistente. Escrevendo para o CLR(Common Language Runtime) e usando a BCL(Base Class Library), todos os serviços de aplicação estão disponíveis através de um modelo comum de programação, orientado a objetos. Hoje, algumas funções do sistema operacional são acessadas por meio de chamadas DLLusando a API baseada em C e outros recursos são acessados através de objetos COM, permitindo que o desenvolvedor construa a base necessária para fazer tudo funcionar de maneira harmoniosa.	
De conceito similar ao Java Virtual Machine, o CLR é um ambiente de runtime que executa código IL. Diferentemente do ambiente Java, que é o conceito de linguagens para todos os efeitos, a plataforma .NET suporta múltiplas linguagens de programação. Todo código visando a plataforma .NET é chamado de código gerenciado. Isso significa simplesmente que a execução do código e o seu gerenciamento são gerenciados pelo CLR.
A BCL é uma rica biblioteca de classes que permite ao desenvolvedor extrair todos os recursos da plataforma .NET em tempo de execução. As classes contidas na BCL estão organizadas em namespaces. Um namespace contem classes bases e fundamentais que definem tipos de dados por valor, tipos de dados por referência, eventos, interfaces, atributos e processamento de exceções. Outras classes oferecem suporte a conversão de tipos de dados, métodos para a manipulação de parâmetros, métodos para a manipulação de operações matemática, entre outras.
	Esse novo modelo de programação simplifica enormemente os esforços que eram necessários quando se escreviam aplicações Win32 e COM. Hoje, o desenvolvedor não precisa mais ser gurus da arquitetura Windows ou COM. Outra grande vantagem para os desenvolvedores .NET é o modelo para tratamento de erros através de exceções. Desenvolver software para a plataforma Windows sempre significou ser atraído para as próprias inconsistências dessa plataforma, particularmente no modo como os erros eram retornados. No.NET, todos os erros são reportados através de exceções, o que simplifica ao extremo a escrita, a leitura e a manutenção de código.
O .NET Framework foi desenvolvido para suportar múltiplas linguagens:
 * Mais de 20 linguagens já suportadas
 * Microsoft fornece as linguagens VB.NET, C#, J#.NET, Jscript.NET
 * Independências de plataforma e dispositivos
Vantagens do suporte a múltiplas linguagens:
 * Reusabilidade
 * Linguagem certa para a tarefa certa
 * Diferença insignificante em relação a performance
Suas principais características são:
 * Integração total e completa entre diversas linguagens:
 * Suporte para herança entre linguagens
 * Tratamento de exceções
 * Debugging simultâneo
 * Um motor Runtime partilhado por todas as linguagens 
 * Gestão de memória realizada pelo Runtime e não pelo programador
 * Biblioteca de classes que disponibilizam (virtualizam) toda a API do SO, consistente em todas as linguagens
 * Um modelo de distribuição das aplicações simplificado 
 * Acabaram os registros. Controle automático de versões e suporte para coexistência de várias versões da mesma DLL
Facilidade no uso:
 * Modelo orientado a objetos
 * Tudo é um objeto
 * Estrutura de namespaces
 * Fácil de compreender e utilizar
 * O namespace reflete a funcionalidade dos componentes
 * Possibilidade de escolha
 * A linguagem em que você melhor se adapta
 * A ferramenta de desenvolvimento que você mais se adapta
 * As funcionalidades e features que você quiser
Vantagens do .NET
 * Estabilidade
 * O fim dos memory leaks
 * Ogarbage collector gerência a memória
 * Os assemblys eliminam problemas de compatibilidade
 * Conteúdo e acesso restrito ao assembly
 * Segurança
 * Restringe o acesso a memória (a operação ilegais)
 * Modelo de segurança compreensível
 * A nível de assembly
 * A nível de sistema
 * Inspeção de códigos através de MISL
 * Distribuição e gerenciamento
 * Distribuição: O código é compilado e roda em ambiente seguro
 * Manutenção: A manutenção de versões é simplificada
 * Webservices
 * Soluções para Web com qualquer arquitetura
 * Em qualquer lugar
 * Em qualquer hora
 * Em qualquer dispositivo
Figura 2. Desenvolvimento em .NET
Fonte: Elaborada pelo próprio autor
ASP.NET, HTML e C#
Segundo Payne (2001) as páginas ASP.NET produzem arquivos de extensão “.aspx”. Normalmente, elas são divididas em duas seções principais: HTML e, no nosso caso, C# (C Sharp).
Assim, o código C# é colocado dentro do elemento script, antes do código HTML propriamente. É necessário ainda, que seja explicitada a linguagem que está sendo utilizada, o que é feito com uso da diretiva “Page Language”, que é adicionada no início do código da página. Um exemplo simples de uma página ASP.NET é o seguinte:
 1. 
 1. 
Figura 3. Divisão do código de uma página ASP.NET
Fonte: Aprenda em 21 Dias ASP.NET, 2001
Nota-se, que o elemento script possui um atributo runat, que possui o valor server. Isto significa que todo o conteúdo deste elemento estará sendo executado no servidor [Payne 2001]. Isto é necessário pelo fato de ser o servidor, o lugar onde está instalado o .NETframework (o cliente não necessariamente o terá instalado).
A linguagem C# possui muitas semelhanças com as linguagens C, C++ e Java.
Assim, o código é case-sensitive (existe diferença entre letras maiúsculas e minúsculas), e declarações de variáveis, operadores e estruturas de controle são utilizados praticamente da mesma maneira que nestas linguagens. Por exemplo, para se declarar uma variável do tipo inteiro, basta escrever o seguinte:
int variavel;
A forma do código ASP.NET se comunicar com o código HTML é através de
funções que são invocadas por controles de servidor (que serão visto adiante, em detalhes), por meio do evento onclick. Outra forma desta comunicação acontecer ocorre no momento em que a página é carregada, por meio da função Page_Load.
 5. 
 6. 
 7. 
 8.1. 
 8.2. 
 8.3. 
Vantagens do ASP.NET
Segundo Figueredo (2010), ASP.NET possui muitas vantagens em relação a outras plataformas de desenvolvimento de aplicações Web. Dentre as muitas vantagens existentes, duas se destacam: total integração com servidores Windows e ferramentas de programação. Aplicações Web criadas com ASP.NET são fáceis de criar e distribuir, pois todas essas tarefas são automatizadas com o Visual Studio.NET. A seguir, outras vantagens do ASP.NET em relação a outras plataformas de desenvolvimento de aplicações Web:
 * Código compilado;
 * Distribuição da aplicação sem a necessidade de se reiniciar o servidor;
 * Acesso ao .NET Framework, que simplifica em muitos aspectos a programação para Windows;
 * Integração com o ADO.NET para acesso
a banco de dados e criação de banco de dados dentro doVisual Studio.NET;
 * Suporte total a XML, CSS e outros padrões;
Arquitetura n camadas
Segundo Macoratti (2010), as três partes de um ambiente modelo três camadas são: camada de apresentação, camada de negócio e camada de dados. Deve funcionar de maneira que o software executado em cada camada possa ser substituído sem prejuízo para o sistema. De modo que atualizações e correções de defeitos podem ser feitas sem prejudicar as demais camadas. Por exemplo: alterações de interface podem ser realizadas sem o comprometimento das informações contidas no banco de dados.
 * Camada de apresentação - É a chamada GUI (Graphical User Interface), ou simplesmente interface. Esta camada interage diretamente com o usuário, é através dela que são feitas as requisições como consultas, por exemplo.
 * Camada de negócio(BLL – Business Logic Layer) - Também chamada de lógica empresarial, regras de negócio ou funcionalidade. É nela que ficam as funções e regras de todo o negócio. Inexiste uma interface para o usuário e seus dados são voláteis, ou seja, para que algum dado seja mantido deve ser utilizada a camada de dados.
 * Camada de BD(DAO – Data Access Object) - A terceira camada é definida como o repositório das informações e as classes que a manipulam. Esta camada recebe as requisições da camada de negócios e seus métodos executam essas requisições em um banco de dados. Alterando o banco de dados alteraria apenas as classes da camada de dados, e o restante das camadas não seriam afetados por essa alteração.
Na figura 5 abaixo é mostrado como é feita a comunicação entre as camadas e a comunicação com o entity framework. Tanto a camada dedados e a camada de negócios acessa o entity framework, no entanto quem acessa a fonte de dados é apenas a camada DAO através do entity framework.
Figura 5. Comunicação entre as camadas
Fonte: Elaborada pelo próprio autor
Entity Framework
Segundo Macoratti (2010), nesse sistema de e-commerce é utilizado o Entity Framework - EF, que é um conjunto de tecnologias da ADO .NET que suporta o desenvolvimento a aplicações orientadas a dados. Arquitetos e desenvolvedores de aplicações orientadas a dados tem se debatido com a necessidade de alcançar dois objetivos distintos:
 * Modelar entidades, relacionamentos e problemas da lógica de negócio; 
 * Trabalhar com sistemas de armazenamento de dados para armazenar e consultar informações; 
O problema é que os dados podem estar distribuídos em múltiplos sistemas de armazenamentos, cada um com suas particularidades e protocolos e mesmo em situações no qual somente um único sistema de armazenamento é usado ainda a existe a necessidade de balancear os requisitos de armazenamento com os requisitos de escrever um código eficiente.
O Entity Framework - EF, permite aos desenvolvedores trabalhar com dados na forma de propriedades e objetos específicos do domínio como clientes e produtos, etc, sem ter que relacioná-los com as tabelas do banco de dados e as colunas onde os dados estão armazenados. Isto é possível pela elevação do nível de abstração no qual os desenvolvedores podem trabalhar quando estão tratando com os dados e pela redução do código que é necessário para manter as aplicações orientadas a dados.
O Entity Framework é um componente da .NET Framework 3.5 e pode ser usado emqualquer ambiente no qual estejam instalados o .NET Framework 3.5 com Service Pack 1.
O Entity Framework renova o modelo conceitual permitindo que os desenvolvedores consultem entidades e relacionamentos neste modelo enquanto contam com o suporte da Entity Framework para traduzir estas operações para comandos específicos da fonte de dados liberando as aplicações das dependências de código específicas de uma fonte de dados particular.
Um padrão muito usado para modelagem de dados divide o modelo de dados em 3 partes: 
 * O modelo Conceitual - Define as entidades e relacionamentos do sistema modelado; 
 * O modelo Lógico - Normaliza as entidades relacionamentos entre as tabelas com chaves primárias e constraints para os banco de dados relacionais; 
 * O modelo Físico - Análise e aplica as capacidades de um sistema de armazenamento específico definindo detalhes de armazenamento como particionamento e indexação;
 O modelo conceitual, o modelo de armazenamento e o mapeamento entre os dois são expressos em uma especificação externa chamada de Entity Data Model-EDM.
O Entity Data Model é um modelo de dados Entidade-Relacionamento cujo conceito central são as entidades e os relacionamentos, onde Entidades são instâncias de Tipos de entidades como Cliente, Produto, Categoria as quais são estruturas de registros com uma chave. Um Chave de Entidade é formada a partir de um subconjunto de propriedades do Tipo da entidade. A chave (clienteID, ProdutoID, etc) é um conceito fundamental para identificar de forma única , atualizar instâncias e permitir que as instâncias de entidades participem nos relacionamentos. 
Além do Entity DataModel , o Entity Framework inclui serviços que incrementam o poder do modelo incluindo o provedor gerenciado EntityClient, ObjectServices e LINQ to Entities conforme mostrado na figura abaixo:
Figura 6. Outros serviços do Entity Framework
Fonte: (Em: http://www.macoratti.com.br. Acesso em: 05 nov.2010)
Object Services é um componente do Entity Framework que permite que você realize consultas, inclusões, atualizações e exclusões de dados , expressos como um objetos CLR fortemente tipados que são instâncias de tipos de entidades. 
O Object Services da suporte a consultas  LINQ e Entity SQL  contra tipos que são definidos em um EDM.
O Object Services também materializam os dados retornados como objetos e propagam as alterações dos objetos de volta a fonte de dados, além de fornecer facilidades para tratar alterações, vinculação de controles a objetos e efetuar o tratamento da concorrência.
Obs: Entities são instâncias de Entity types e representam instâncias individuais de objetos (Clientes, Produtos) 
Um Entity Data Model - EDM é definido pelos seguintes arquivos de modelo e mapeamento:
 * Arquivo de definição de schema conceitual - ( .csdl ) - define o modelo conceitual; 
 * Arquivo de definição schema de armazenamento - ( .ssdl )  - Define o modelo de armazenamento que também é chamado de modelo lógico; 
 * Arquivo de especificação de mapeamento - ( .msl ) - Define o mapeamento entre os modelos conceitual e de armazenamento; 
Abaixo temos as camadas do Entity Data Model  e o seu relacionamento :
 Figura 7. Camadas do Entity Data Model
Fonte: (Em: http://www.macoratti.com.br. Acesso em: 05 nov.2010)
O EntityFramework utiliza estes modelos baseados em XML e arquivos de mapeamento para transformar operações de  criar, ler, atualizar, e deletar contra entidades e relacionamentos no modelo conceitual para operações equivalentes na fonte de dados.
Mais do que um outra solução de mapeamento objeto relacional o Entity Framework esta fundamentado na capacidade de permitir que aplicações acessem e alterem dados que estão representados como entidades e relacionamentos no modelo conceitual. O  Entity Data Model-EDM é então usado para traduzir consultas de objetos contra tipos de entidades que são representados no modelo conceitual em consultas específicas da fonte de dados. O EF fornece as seguintes formas de consultar um EDM e retornar objetos:
 * LINQ to Entities - Fornece suporte as consultas LINQ para consultar tipos de entidades que são definidos no modelo conceitual; 
 * Entity SQL - Uma dialeto SQL independente que trabalha diretamente com as entidades no modelo conceitual que suporta as características EDM como herança e relacionamento; 
 * Métodos Query Builder - Permitem a construção de consultas Entity SQL usando o estilo de métodos de consulta LINQ; 
O Entity Framework também inclui um provedor de dados EntityClient que
gerencia conexões, traduz consultas de entidades em consultas específicas da fonte de dados e retorna um leitor de dados que os Serviços de Objeto usam para materializar os dados de entidades em objetos. Quando a materialização em objetos não é necessária o provedor EntityClient  também pode ser usado como um provedor de dados ADO .NET padrão permitindo que aplicações executem consultas Entity SQL e consumam osdados retornados como um leitor somente-leitura.
A Entity SQL é uma variação da SQL e foi criada com objetivo de escrever consultas declarativas e atualizações sobre entidades e relacionamentos de entidades no nível conceitual.  A Entity SQL  vai além da SQL pois da suporte aos seguintes recursos: 
 * Types, que são como entidades ADO.NET , totalmente tipados; 
 * EntitySets,  que são tratados como uma coleção de entidades; 
 * Composability, que remove restrições onde as sub-consultas podem ser usadas;
Junto com o runtime do Entity Framework a plataforma .NET 3.5 SP1 inclui um gerador Entity Data Model (EdmGen.exe); um utilitário de linha de comando que se conecta com a fonte de dados e gera um EDM baseado em um mapeamento um-para-um entre entidades e tabelas. Ela também usa o arquivo de definição de modelo conceitual (.csdl) para gerar uma camada de objeto que contém classes que representam tipos de entidades e o ObjectContext.
A partir do Entity Framework poderemos  fazer mapeamento para bases de dados como SQLServer, Oracle, DB2, MySql, PostgreSQL, SQLite, VistaDB, Informix, Sybase, etc, bem como para outras fontes como XML, Texto e outros serviços.
Métodos CRUD 
Segundo Macoratti (2010), a primeira classe criada na aplicação são os métodos CRUD. O acrônimo CRUD é utilizado freqüentemente para definir as quatro operações básicas de um banco de dados. Seu significado é C(reate)R(etrieve)U(pdate)D(elete), ou melhor , são os comandos: INSERT, SELECT, UPDATE e DELETE. 
Tais comandos estão presentes na linguagem SQL(Structured Query Language) que é uma linguagem declarativa. A linguagem SQL é subdividida em 3 partes:DML, DDL e DCL. Os comandos acima citados estão presentes na subdivisão DML(Data Manipulation Language).
Portando é implementado os métodos:
 * Select - O comando SELECT, sem dúvida, é o comando mais utilizado em qualquer sistema de banco de dados relacional. Através dele consegui-se manipular grandes massas de dados a nível de consulta.
 * Insert - O comando INSERT serve para inserir um registro em alguma tabela de um banco de dados. Todos os campos não nulos devem ser informados os demais são de caráter facultativo.
 * Update - O comando UPDATE serve para realizar a alteração de algum registro já inserido em alguma tabela de um banco de dados.
 * Delete - O comando DELETE apaga um determinado registro em uma dada tabela
Generics
Segundo Macoratti (2010), quando olhamos para o termo "genérico", sem relação com o mundo da programação, isso significa simplesmente algo que não está vinculado a qualquer tipo de marca. Por exemplo, quando compramos algum remédio genérico na farmácia, sabemos para qual enfermidade o remédio pode nos ajudar, mesmo que não seja o rémerio de marca e não sabemos ao certo se ele contém realmente as mesmas propriedades do remédio de marca, temos certeza que ele ajudará em nossa enfermidade. Pense no generics dessa maneira. Podemos nos referir a uma classe, onde não precisamos forçá-la a estar relacionada a nenhum tipo específico, mas ainda podemos executar o trabalho com ele de uma maneira segura. Um exemplo perfeito do que nós precisaríamos no generics é lidar com coleções de itens (inteiros, strings, Ordens, etc.) Nós podemos criar uma coleção genérica do que podem lidar com qualquer tipo deforma genérica e Type-Safe. Por exemplo, podemos ter uma classe única matriz que podemos usar para armazenar uma lista de usuários ou até mesmo uma lista de produtos, e quando usá-lo, seremos capazes de acessar os itens na coleção diretamente como uma lista de Usuários ou produtos, e não como objetos.
Atualmente, se quisermos lidar com nossos tipos de uma forma genérica, temos sempre necessidade de lançá-los para um System.Object, e nós perdemos todo o benefício de uma experiência de desenvolvimento ricos digitada. Por exemplo, eu tenho certeza que a maioria de nós estão familiarizados com a classe System.Collection.ArrayList no Framework v1 e v1.1. Se você já usou ele em tudo, você vai notar algumas coisas sobre ele:
 1. Ela exige que você guarde tudo na mesma como um objeto 
int público virtual Add (valor do objeto); 
objeto virtual público presente [int index] {get; set;}
 2. Você precisa para levantar a fim de obter o objeto de volta para o tipo atual
 3. O desempenho é realmente carente, especialmente quando a iteração com foreach ()
Abaixo está um exemplo simples do que é uma classe genérica:
public interface IBaseCRUD<T>
 {
 void Add(T pEntity);
 void Delete(T pEntity);
 }
 
Ouvir
Ler foneticamente
 
Dicionário - Ver dicionário detalhado
 1.1. 
 1.2. 
 1.3. 
 1.4. 
 1.5. 
 1.6. 
 1.7. 
 1.8. 
Interface
Segundo Macoratti (2010), uma interface é como uma classe, mas todos os métodos e propriedades são abstratos. An Interface cannot be instantiated like abstract class. Uma interface não pode ser instanciada como classeabstrata. All the methods and properties defined in Interface are by default public and abstract. Todos os métodos e as propriedades definidas na interface são públicos por padrão e abstrato. 
Interface generally refers to an abstraction that an entity provides of itself to the outside.Interface geralmente se refere a uma abstração que uma entidade proporciona, por si só para o exterior. Interface can help in separating the methods for external and internal communication without effecting in the way external entities interact with the type.. Interface pode ajudar a separar os métodos de comunicação externa e interna sem afetar de forma interagir com entidades externas do tipo Interfaces são um conceito comum em programação orientada a objetos.
Uma interface é um dispositivo ou sistema que entidades independentes usam para interagir. According to this definition, a remote control is an interface between you and a television set, the English language is an interface between two people, and the protocol of behavior enforced in the military is the interface between people of different ranks. Segundo esta definição, um controle remoto é uma interface entre você e um aparelho de televisão, o idioma Inglês é uma interface entre duas pessoas, e o protocolo do comportamento aplicada no serviço militar é a interface entre pessoas de diferentes classificações. Within [an object-oriented] ... Dentro de programação orientada a objetos, uma interfaceis a device that unrelated objects use to interact with each other. é um dispositivo que objetos não relacionados usam para interagir uns com os outros. An interface is probably most analogous to aprotocol (an agreed on behavior). Uma interface é provavelmente o mais parecido com um protocolo (um acordo sobre o comportamento).
Você pode usar uma interface para definir um protocolo de comportamento que pode ser implementada por qualquer classe em qualquer lugar na hierarquia de classe. Interfaces are useful for the following: Interfaces são úteis para o seguinte: 
 * Capturing similarities among unrelated classes without artificially forcing a class relationship.Capturando semelhanças entre classes não relacionadas sem artificialmente forçar uma relação de classe. 
 * Declaring methods that one or more classes are expected to implement.Declarando métodos que uma ou mais classes devem implementar. 
 * Revealing an object's programming interface without revealing its class.Revelando interface de programação de um objeto sem revelar a sua classe.
Escrever uma
interface é rápida e fácil, como mostra o código abaixo:
																using System;
																namespace Demo.WithInterfaces Demo.WithInterfaces namespace
																{ {
																	/// <summary> / / / <summary>
																	/// Summary description for ISection. / / / Description Resumo para ISection.
																	/// </summary> / / / </ Summary>
																	public interface ISection ISection interface pública
																	{ {
																		string GetData { get; } GetData seqüência {get;}
																	
																		void ClearFields(); void Clearfields ();
																
																	} //end of interface } / / Fim da interface
																} //end of namespace } / / Fim donamespace
Esse código cria uma interface denominada ISection . Observe como apenas como arquivos de classe regular, começa uma interface com os namespaces que ele usa, e pode-se ser envolvido em um namespace. However it differs from a class by using the interface keyword instead of the class keyword, and by having a body that is only a list of signatures without any actual implementation. No entanto, difere de uma classe usando a interface palavra-chave em vez da class de palavras-chave, e por ter um corpo que é apenas uma lista de assinaturas, sem qualquer aplicação real. This particular interface declares a read-only property named GetData that returns a string, and a method ClearFields() . Essa interface especial declara uma propriedade somente leitura chamado GetData que retorna um string, e um método ClearFields() . 
Although an interface is similar to a base class, it is also very different. 	Apesar de uma interface ser semelhante a uma classe base, são muito diferentes. They are similar in that: Elas são semelhantes em que: 
 * Both provide structure to another class that uses themAmbos fornecem uma estrutura para outra classe para poderem ser utilizadas 
 * Both can be used for polymorphismAmbos podem ser usados para o polimorfismo 
Interfaces are different than base classes in that								Interfaces são diferentes de classes base em que: 
 * A class can inherit only one base class, but it can implement many interfacesUma classe pode herdar apenas uma classe base, mas pode implementar várias interfaces 
 * A base class can contain implementation, an interface cannotUma classe base pode conter execução, umainterface não pode 
 * Interfaces can only contain Methods, Properties, Indexers, and Events.Interfaces só pode conter métodos, propriedades, indexadores e eventos. They cannot contain fields or constants (which are used for implementation) Eles não podem conter campos ou constantes (que são utilizadas para a execução) 
Segundo Richter (2005), interfaces derivam de nenhum tipo derivado de system.object. Uma interface é simplesmente um tipo abstrato que consiste em um conjunto de métodos virtuais, cada um com seu próprio nome, parâmetros e tipo de retorno. Os métodos de interface não podem conter nenhuma implementação: daí, os tipos por interface serem incompletos (abstratos). Por convenção, o nome de um tipo de interface é prefixado com um I maíusculo. Herança de interface significa que um tipo herda as assinaturas dos métodos de suas interfaces, mas não suas implementações. Quando um tipo herda uma interface, ele se compromete a fornecer aos métodos suas próprias implementações; se o tipo não implementa os métodos da interface, ele é considerado abstrato e não será possível construir uma instância do tipo.
Expressões Lambda
Segundo Macoratti (2010), as expressões lambda foram incluídas no VS/VB 2008 para dar suporte a consultas LINQ. As cláusulas Where são assim compiladas como expressões lambdas e chamadas em itens aplicáveis do seu dataset. Podem ser consideradas uma forma de delegate que pode passar ou retornar outra função.
No LINQ as expressões lambda são usadas para realizar ações sobre listas de objetos e com extensões de métodos.
No LINQ as expressões lambda são a base de muitos operadores usados nas consultas padrão. Ocompilador cria expressões lambda para capturar os cálculos definidos nos métodos fundamentais de consulta como Where, Select, Order By, Take While, e outros. As expressões Lambda usam o operador =>. O lado esquerdo do operador lambda especifica os parâmetros de entrada  e o lado direito especifica a expressão. Por exemplo, a expressão Lambda x=>x*x.Veja o exemplo abaixo:
 
																 int highScoreCount = scores.Where(n => n > value).Count();
Como resultado dessas restrições e das maneiras pelas quais as expressões lambda são usadas, elas geralmente são simples , curtas e pouco complexas.
Herança
Segundo Vicente (2003), é comum haver similaridades entre diferentes classes. Frequentemente, duas ou mais classes irão compartilhar os mesmos atributos e/ou métodos. Como nenhum de nós deseja reescrever várias vezes o mesmo código, seria interessante se algum mecanismo pudesse tirar proveito dessas similaridades. A herança é esse mecanismo. Por intermédio da herança, é possível modelar relacionamentos do tipo “é” ou “é semelhante”, o que nos permite reutilizar rotinas e dados já existentes. Uma subclasse herda as propriedades de sua classe-mãe; uma subclasse herda as propriedades das subclasses e assim por diante. Uma subclasse pode herdar a estrutura de dados e os métodos, ou alguns dos métodos, de sua superclasse. Ela também tem métodos e às vezes, tipos de dados próprios.
 * Subclasse – uma classe que é um subtipo de uma ou mais classes (denominadas superclasses). Como tal, ela herda todas as características de suas superclasses. Em outras palavras, todas as características de uma classe sãoreusáveis por suas subclasses. Se a classe B herda de A, então dizemos que B é uma subclasse de A.
 * Superclasse – Uma classe que é um supertipo de uma ou mais classes (tb chamadas de subclasses). Como tal, ela é uma classe a partir da qual todas as suas características são herdadas por suas subclasses. Em outras palavras, todas as características de uma superclasse são reusáveis por aquelas classes que são seus subtipos. Se a classe B herda de A, então dizemos que A é uma superclasse de B.
Quando uma classe herda características somente de uma outra classe, dizemos que esta é uma herança simples. Quando uma classe herda de duas ou mais classes, temos um caso de herança múltipla. Em qualquer circunstância, o fato que você deverá lembrar é o seguinte: a subclasse herda todos os atributos e métodos das superclasses.
Temos um grande número de vantagens ao utilizar este conceito de POO, uma delas é a fácil manutenção: caso se tenha que alterar/adicionar/remover uma propriedade na classe base, essa alteração é refletida de forma automática em todas as classes que herdam da classe base.  Torna-se também mais rápido e eficiente adicionar novas classes que herdem da classe base, pois já existem nela implementadas muitas das funcionalidades básicas bem como as propriedades partilhadas que são transversais à família de classes.
Programação Orientada a Objeto
Essa aplicação de e-commerce foi desenvolvida baseada em programação orientada a objeto. Veja algumas das vantagens da POO:
 * Alta capacidade reutilização de código
 * Facilidade de Documentação
 * Processo claro de retro-compatibilidade
 * Facilidade manutenção docódigo
 * Maior agilidade na distribuição e organização de equipes de trabalho Etc.
Segundo Sintes (2002), objeto é uma entidade encapsulada que possui propriedades e protocolos de acesso bem definidos.
Orientação a objetos:
 * Orientação : 1. Ato ou efeito de orientar-se. 2. Direção, guia. 3. Impulso, tendência.
 * Objeto : 1.Tudo que é perceptível por qualquer um dos sentidos. 2. Coisa, peça, artigo de compra
A programação Orientada a Objetos (O.O.) é uma tentativa de representação do mundo real na forma de linguagem de programação.
A Orientação a Objeto exige que:
 * Mudança na forma de programar.
 * Mudança na forma de ver o problema.
 * Mudança de paradigma para quem vem com os conceitos da programação estruturada.
 * Não se poder ver em partes pequenas e separar em pequenas funções (procedures), é preciso ter uma visão do todo.
O objeto é uma entidade encapsulada que possui propriedades e protocolos de acesso bem definidos.
A O.O. Exige uma pré-analise do problema como um todo. Identificação objetos que compõem o problema, bem como as relações que existem entre eles (atributos e protocolos de acesso). Em seguida vem a codificação deste objetos em forma de classes.
 * Classe: é a receita para a criação do objeto (o programa que origina o objeto, receita do bolo).
 * Objeto: é a 'materialização' da classe dentro do computador (também chamado de instância, o bolo propriamente dito)
Master Page
Segundo Lotar (2007), desde o Visual Studio 2005, ASP.NET suporta herança de páginas visuais. Este recurso é similar a herança de formulários utilizada em aplicações Windows. Com o ASP.NET, você pode criaruma página master contendo todos os principais elementos usados pelas páginas de seu Web site. Master page é um recurso que permite criar templates pré-definidos para criação do layout de um website ou aplicação web-based, o que facilita em muito o desenvolvimento, uma vez que não é necessário repetir os passos de desenho da aplicação em cada uma das páginas.
A maior vantagem é na hora da manutenção, agora você não precisa mais sair modificando página a página como era antes, basta alterar a MasterPage que todas as páginas referenciadas a ela receberá automaticamente, sem dor de cabeça.
WebForms
Segundo Lotar (2007), os formulários da Web constituem a principal forma de interação entre o usuário e uma página Web. Dentro deles, estão contidos recursos para captação de dados, tais como caixas de texto, caixas de listas e botões. É sobre estes controles que, geralmente, são realizadas as operações que caracterizam uma página dinâmica (aquela que não apenas exibe informações estáticas, mas permitem interações e realizam algum processamento).
Com a tecnologia ASP.NET, é possível construir aplicativos Web com facilidades semelhantes às da construção de aplicativos desktop, com Delphi ou C++ Builder, por exemplo. Ou seja, é possível acessar o conteúdo dos componentes dos formulários e associar eventos ao código (no nosso caso, em C#). Em se tratando de aplicativos Web, esta tarefa era permitida apenas por JavaScript, que por outro lado, não constituía, isoladamente, um recurso para comunicação com um servidor, outra característica também oferecida por ASP.NET.
ASP.NET suporta o uso de elementos HTML, desde que possuam o atributo runat=“server” , passando a serem chamados de “controles de servidor HTML”. Isto se
deve ao fato de ASP.NET ser baseada no servidor, caso contrário, ele não poderia enxergar os controles. Os controles normalmente possuem atributos, específicos para cada um, que permitem sua alteração de várias formas. Como estes controles são, na verdade, alguns dos elementos HTML, eles não serão apresentados aqui, mas podem ser encontrados nas ferramentas de desenvolvimento.
Existem ainda, os controles de servidor da Web, que são semelhantes aos controles de servidor HTML. Eles foram criados para serem utilizados especificamente por páginas ASP.NET e podem representar elementos de interface mais complexos, tal como calendários. Sua utilização é feita da seguinte maneira:
<asp:NomeDoControle id=“nome” runat=“server”>
Eles podem possuir vários outros atributos, dependendo do tipo de controle e da necessidade do desenvolvedor. Estes controles são colocados no código entre as tags do
código HTML, dentro de um formulário (representado pelo controle form). Os principais controle de servidor da Web são apresentados na tabela a seguir:
 Nome	| Descrição	|
 Button	| Botão	|
 Calendar	| Calendário gráfico que permite a navegação e escolha de datas	|
 CheckBox	| Caixa para selecionar ou não um item	|
 CheckBoxList	| Grupo de caixas de seleção que normalmente estão relacionadas entre si	|
 DataGrid	| Mecanismo para exibição de dados em forma de linhas e colunas, sendo possível a classificação e edição	|
 DataList	| Mecanismo parecido com o DataGrid, porém, com menos recursos	|
 DropDownList	| Lista para escolha de uma das opções. Bastante útilquando se quer que as opções sejam extraídas de um banco de dados	|
 Image	| Exibição de uma imagem	|
 Label	| Texto que não pode ser editado diretamente	|
 LinkButton	| Um botão com aparência de link	|
 ListBox	| Lista para escolha de uma ou mais opções	|
 RadioButton	| Caixa para selecionar ou não um item. Dentre os RadioButtons pertencentes a um RadioButtonList, apenas um pode ser selecionado	|
 RadioButtonList	| Contêiner de RadioButtons	|
 Repeater	| Controle para exibição de coleções de dados em controles de servidor HTML. Para cada registro, os dados são exibidos no controle especificado	|
 Table	| Tabela	|
 TableCell	| Célula de uma linha da tabela	|
 TableRow	| Linha de uma tabela	|
 TextBox	| Caixa para inserção de dados pelo usuário	|
Quadro 1. Controles de Servidor da WEB
Fonte: Elaborada pelo próprio autor
 1.1. 
 1.2. 
 1.3. 
 1.4. 
 1.5. 
 1.6. 
 1.7. 
 1.8. 
 1.9. 
 1.10. 
 1.11. 
 1.12. 
 1.13. 
 1.14. 
Principais controles utilizados
Segundo Lotar (2007), os controles tem os seguintes conceitos:
GridView - O controle GridView é a evolução do controle DataGrid encontrado nas versões anteriores do Visual Studio.NET. Esta é uma versão contém uma série de vantagens, principalmente no que diz respeito à agilidade no desenvolvimento, ganhando assim uma enorme produtividade.
As melhorias vão desde as formas de carregarmos o GridView até funcionalidades inexistentes nas versões anteriores, as quais necessitávamos escrever muito código para atender algo mais específico. Grandes melhorias foram criadas, como por exemplo:novos tipos de colunas, ordenação e paginação de registros sem a escrita de nenhuma linha de código, entre outras.
Button - O uso de controles do tipo botão em páginas da Web ASP.NET permite que os usuários indiquem que eles completaram o formulário ou que eles desejam executar um comando específico. 
	LinkButton - Processado como um hiperlink na página.
Entretanto, ele contém script do lado do cliente que faz com que o formulário seja postado de volta (posted back) para o servidor.
	ImageButton - Permite que você especifique uma imagem como um botão. 
Isso é útil para apresentar uma aparência rica do botão.
	Label - O controle Label oferece uma maneira de definir texto em uma página da Web do ASP.NET programaticamente. 
Você normalmente usa o controle Label sempre que desejar alterar texto na página em tempo de execução, como em resposta a um clique de botão. Você pode definir o texto do controle Label em tempo de design ou em tempo de execução em um programa, configurando  a propriedade Text do mesmo. 
Observação: Se você desejar exibir texto estático, você pode apresentá-lo usando HTML, você não precisa de um controle Label. Use um controle Label somente se você precisar alterar o conteúdo ou outras características do texto no código do servidor.
	Textbox - O controle TextBox fornece uma maneira de os usuários digitarem informações em uma página de Web Forms, inclusive texto, números e datas. 
Você pode configurar o controle do servidor Web TextBox de várias formas, conforme descrito na tabela a seguir. 
 * Single-line (uma única linha) - Os usuários digitam informações em uma única linha.
 * Password (senha) - Como umcontrole TextBox de uma única linha, mas os caracteres digitados pelo usuário são mascarados com asteriscos (*) para ocultá-los.
* Multiline (de múltiplas linhas) - Usuários digitam informações em uma caixa que exibe várias linhas e permite quebra automática de texto
DropDownList - O controle DropDownList permite aos usuários selecionar em uma caixa de listagem suspensa de seleção única. 
O DropDownList é semelhante ao controle ListBox. 
Mas  é diferente pois ele mostra somente o item selecionado em uma caixa, juntamente com um botão suspenso. 
Quando os usuários clicam no botão, uma lista de itens é exibida. Além disso, o controle DropDownList difere do controle ListBox em que ele não oferece suporte a vários modos de seleção.
SQL Server 
Segundo Otey e Otey (2007), o SQL Server é um sistema de gerenciamento de bancos de dados cliente/servidor de alto desempenho com alta integração com o Windows. Suas características são: 
 * Integração com os serviços de multithreading [múltiplas linhas], agendamento, Monitor de Desempenho, e log de eventos do Windows. Um usuário pode se conectar ao SQL Server com a mesma senha usada para a rede Windows. 
 * Replicação nativa permite disseminar informações para vários locais, reduzindo a dependência de um servidor único, e deixando a informação necessária mais próxima de quem realmente precisa dela. 
 * Arquitetura paralela, que executa as funções de banco de dados simultaneamente para diversos usuários e tira proveito de sistemas com múltiplos processadores. 
 * Gerenciamento centralizado de todos os servidores através de uma arquitetura de gerenciamento distribuída, comuma interface visual de gerenciamento.
O SQL Server 2005 traz mais de 70 medições de desempenho e de uso de recursos do Banco de Dados interno que vão de memória, bloqueio e agendamento de transações, rede e E/S do disco.
Se uma empresa necessitar de uma tecnologia que trabalhe incansavelmente para suportar negócios e precisar de um pacote de ferramentas que ofereça integração total e escalabilidade para suportar as exigências, podem estar certos, pois o SQL Server 2005 proporciona isso e muita mais.
Foi construído com base na força de SQL Server 2000, o SQL Server 2005, fornece solução de gerenciamento de informação que pode ajudar organizações de qualquer porte.
É uma ferramenta extremamente complexa que traz grandes vantagens, principalmente nas ferramentas de Administração e Desenvolvimento. Um dos grandes atrativos dessa versão é a forte integração com o *CLR (Common Language Runtime) que é o ambiente gerenciado da plataforma .NET e inclui uma série de recursos para gerenciamento de recursos de sua aplicação.
Essa solução de análise de gerenciamento de dados de última geração fornece mais segurança, *escalabilidade e disponibilidade de dados empresariais e aplicativos analíticos, tornando-os mais fáceis de criar, implementar, gerenciar e são mais confiáveis e seguros.
São compartilhados dados entre múltiplas plataformas, aplicações e dispositivos para facilitar a conexão entre sistemas internos e externos, integrando soluções robustas de inteligência empresarial *BI (Business Intelligence), que ajudam na tomada de decisões e aumentam a produtividade em toda a empresa; controlando custos sem sacrificar o desempenho, adisponibilidade e a escalabilidade ou a segurança.
	Portanto, o SQL Server é fácil de usar:
 * Rápido de baixar e instalar
 * Download compacto.
 * Pronto para usar em apenas 20 minutos.
 * Administração simplificada
 * Ajuste automaticamente seu banco de dados para um excelente desempenho. 
 * Use o Microsoft Update para receber automaticamente as correções e atualizações mais recentes, possibilitando um alto nível de segurança e as últimas novidades em recursos.
 * Ferramentas de gerenciamento gratuitas: SQL Server Management Studio
 * Você pode baixar o SQL Server Management Studio Express (download separado abaixo), uma ferramenta de gerenciamento fácil e eficiente para SQL Server Express.
 * Com o SQL Server Management Studio, você desfruta de uma experiência de gerenciamento consistente em todas as edições do SQL Server 2005.
 * Integração total com as edições do Visual Studio Express
 * Experiência de dados totalmente integrada para a criação de aplicativos para Windows e sites.
 * Fácil de implantar
 * Mova ou copie facilmente seus bancos de dados do SQL Server Express para outro computador ou servidor hospedado usando a implantação do XCopy e do ClickOnce.
A Aplicação e os recursos utilizados
 8. 
Introdução sobre o sistema
Consiste em uma aplicação de e-commerce completa, criando todas as páginas do site principal e a parte administrativa do sistema. Será apresentado algumas classes criadas durante a criação do sistema e alguns controles do ASP.NET utilizados nas páginas. Além de apresentar novas tecnologias adotadas no visual Studio 2010, como asp.net4.0, c# 4.0, entity data model, desenvolvimento em N camadas, generics, interface, herança, programação orientada a objetos e expressões lambda. Além de mostrar a integração do sistema com uma empresa de pagamentos online, que no nosso caso foi adotado o PagSeguro da UOL.
Banco de Dados
O banco de dados utilizado para a aplicação foi o SQLServer e a ferramenta para criação do banco de dados foi a SQLServer Management Studio Express. Pois, é uma plataforma de base de dados abrangente que oferece ferramentas de gestão de dados de classe empresarial. O motor de base de dados SQL Server 2005 proporciona um armazenamento mais seguro e viável tanto para dados relacionais como estruturados, permitindo-lhe criar e gerir aplicações de dados de elevada disponibilidade e desempenho para a empresa.
	Algumas características do SQLServer são:
 * transações ;
 * procedimentos armazenados ;
 * triggers;
 * administração simples com SQLServer Management Studio Express.
Assim, as tabelas criadas para a aplicação foram: 
 * Tabela Clientes;
 * Tabela Categoria;
 * Tabela Produto;
 * Tabela Fabricante;
 * Tabela Comentário;
 * Tabela Tipo_Venda;
 * Tabela Venda;
 * Tabela Item_Venda;
 * Tabela Banner;
 * Tabela Login;
O relacionamento entre as tabelas ficaram da seguinte forma:
 * O campo IDT_CLIENTE que possui a chave primária da tabela CLIENTE com foreign key para o campo IDT_CLIENTE para a tabela de VENDA, este é um relacionamento de uma para muitos;
 * O campo IDT_VENDA que possui a chave primária da tabela VENDA com foreign key para o campo IDT_VENDA para a tabela de ITEM_VENDA que possui chaveprimária composta, este é um relacionamento de muitos para muitos;
 * O campo IDT_PRODUTO que possui a chave primária da tabela PRODUTO com foreign key para o campo IDT_ PRODUTO para a tabela de ITEM_VENDA que possui chave primária composta, este é um relacionamento de muitos para muitos;
 * O campo IDT_TIPO_VENDA que possui a chave primária da tabela TIPO_VENDA com foreign key para o campo TIPO_VENDA para a tabela de VENDA, este é um relacionamento de uma para muitos;
 * O campo IDT_PRODUTO que possui a chave primária da tabela PRODUTO com foreign key para o campo IDT_PRODUTO para a tabela de COMENTARIO, este é um relacionamento de uma para muitos;
 * O campo IDT_CATEGORIA que possui a chave primária da tabela CATEGORIA com foreign key para o campo IDT_ CATEGORIA para a tabela de PRODUTOS, este é um relacionamento de uma para muitos;
 * O campo IDT_FABRICANTE que possui a chave primária da tabela FABRICANTE com foreign key para o campo IDT_ FABRICANTE para a tabela de PRODUTOS, este é um relacionamento de uma para muitos;
Na figura 9 abaixo é apresentado o diagrama do banco de dados com seus campos e relacionamentos:
Figura 8. Diagrama de Banco de Dados
Fonte: Elaborada pelo próprio autor
Iniciando o Projeto no Visual Studio
Depois de criado o banco de dados, foi criado um blank solution no Visual Studio 2010. Logo após foi dividido a
solution em 4 projetos: LojaVirtualDAO referente a camada de acesso a dados da aplicação, LojaVirtualBLL referente a camada de regra de negócios da aplicação, LojaVirtualWEB referente a toda a interface com o usuário e a LojaVirtualAdmin referente a interface de administraçãodo e-commerce.
Assim para criamos o relacionamento do banco de dados com as classes foi utilizado o entity data model, desta maneira no projeto LojaVirtualDAO foi adicionado o item Entity Data Model chamado de LojaVirtualEDM. Logo em seguida escolhemos o banco de dados e todas as tabelas para criamos o mapeamento.
	Na figura 10 abaixo é mostrado o mapeamento do entity data model:
Figura 9. Diagrama do Entity Data Model
Fonte: Elaborada pelo próprio autor
 1.1. 
 1.2. 
 9.4. 
Classes
No projeto foram criadas diversas classes, por isso será citado apenas as mais importantes.
Uma das classes mais importantes é a dos métodos CRUD, que são os métodos básicos de todas as tabelas: create, retrieve, update e delete. No entanto, para não repetirmos esses mesmos métodos em todas as classes foi utilizada uma interface e uma classe. A classe foi chamada de AbstractCRUD e a interface de IBaseCRUD. Para que todas as outras classes acessem esses métodos é preciso utilizar generics assim como no código abaixo utilizado na interface:
public interface IBaseCRUD<T>
 {
 void Add(T pEntity);
 void Delete(T pEntity);
 void Attach(T pEntity);
 void Detach(T pEntity);
 void Update(T pEntity);
 IQueryable<T> Find(Expression<Func<T, bool>> where);
 IQueryable<T> GetAll();
 void SaveChanges();
 }
	No código acima o <T> faz com que a interface aceite generics, logo após é passado os métodos de adicionar, deletar, attach e detach(que serve para travar o registro) e atualizar. Esses métodos não retornam nada, eles apenasrealizam sua função e não retorna nada do banco de dados. Para fazer um select no banco é preciso ser um retorno do tipo Iqueryable, assim você tem a opção de retornar apenas um dado do banco de dados ou todos os dados como o getall().
Assim, foi feito a implementação dos métodos na classe AbstractCRUD: 
public abstract class AbstractCRUD<T> : IBaseCRUD<T> where T : class
 {
 LOJAEntities loja = new LOJAEntities();
public void Add(T pEntity)
 {
 loja.AddObject(pEntity.GetType().Name, pEntity);
 }
A classe AbstractCRUD vai herda da interface IBaseCRUD todos os métodos, porém na classe você é obrigado a implementar todos esses métodos, e o where determina o que tem que ser passado no generics deve ser uma classe.
Antes de ser implementado os métodos deve ser instanciado o banco de dados através do LOJAEntites. Logo após, você começa a programar os métodos, o exemplo acima mostra como é implementado o método ADD. Você passa ao objeto loja o método de adicionar um objeto e depois você passa os parâmetros, pEntity.GetType().Name vai pegar o nome da classe que desejamos alterar no banco de dados e o tipo que será pEntity.
	Depois é feito as implementações das classes e interfaces de cada tabela do banco de dados da camada DAO , e também as classes da camada de BLL.
 Interfaces Camada DAO	| Classes Camada DAO	| Classes Camada BLL	|
 IClienteDao	| ClienteDao	| ClienteBLL	|
 ICategoriaDao	| CategoriaDao	| CategoriaBLL	|
 IFabricanteDao	| FabricanteDao	| FabricanteBLL	|
 IProdutoDao	| ProdutoDao	| ProdutoBLL	|
 ITipoVendaDao	| TipoVendaDao	| TipoVendaBLL	|
 IVendaDao	|VendaDao	| VendaBLL	|
 IBanner	| BannerDao	| BannerBLL	|
 IComentario	| ComentarioDao	| ComentarioBLL	|
 ILogin	| LoginDao	| LoginBLL	|
Quadro 2. Controles de Servidor da WEB
Fonte: Elaborada pelo próprio autor
	A interface IClienteDao terá o seguinte código:
public interface IClienteDao:IBaseCRUD<CLIENTE>
	
 Primeiro você tem que tornar a interface pública para permitir acesso a mesma com public, e depois você faz a herença do IBaseCRUD, porém a partir de agora não será mais utilizado generics, pois será definido um tipo, que nesse caso será do tipo CLIENTE.
A classe ClienteDao terá o seguinte código:
public class ClienteDao: AbstractCRUD<CLIENTE>, IClienteDao
Também será tornado a classe pública para permitir o acesso aos seus métodos, e será feito uma herança do AbstractCRUD passando o tipo CLIENTE e uma outra herança a interface IClienteDao. 
A classe ClienteBLL terá o seguinte código:
public class ClienteBLL:ClienteDao
	Na classe ClienteBLL também será adicionado o public para deixá-la pública para o resto da aplicação e depois a herança da classe ClienteDao. Assim ClienteBLL possui todos os métodos de ClienteDao e também de AbstractCRUD. No entanto, a classe ClienteBLL é criada apenas para ficar como padrão, no entanto pode ser que não haja nenhuma regra de negócios dentro da classe. Um exemplo de uma regra de negócios seria na hora da venda de determinado produto haveria uma verificação se o cliente possui mais de 18 anos.
	A classe mais complicada da aplicação e que realmente é o objetivo de um e-commerce é o carrinho.cs. A classe começa da seguinte maneira:
	
public List<ITEM_VENDA>Itens { get { return BuscarLista(); } }
private List<ITEM_VENDA> BuscarLista()
 {
 List<ITEM_VENDA> lista;
 if (HttpContext.Current.Session["lista"] != null)
 {
 lista = (List<ITEM_VENDA>)HttpContext.Current.Session["lista"];
 }
 else
 {
 lista = new List<ITEM_VENDA>(); 
 } return lista;
 }
Primeiro é criado uma lista de itens através da propriedade itens, onde o get vai retornar a lista dos produtos do carrinho, assim é criado um método private BuscarLista(). É declarado a variável lista do tipo List<ITEM_VENDA>, e para que possamos trabalhar com carrinho precisamos trabalhar com session, assim é feito uma verificação se a session da lista de produtos existe, ou seja, se ela é diferente de vazio. Se há uma lista de produtos, ela é convertida para a nossa variável lista através de um DirectCast, ou seja, o DirectCast converte o tipo session em List<ITEM_VENDA>. Caso essa session não exista, a nossa variável lista terá uma nova lista de produtos, e assim vai retornar para a propriedade itens o conteúdo da variável lista.
Depois para adicionar produtos ao carrinho é feito o método AdicionarItem, veja o código abaixo:
public void AdicionarItem(ITEM_VENDA item)
 {
 List<ITEM_VENDA> lista = Itens;
 //Verifica se o produto já existe na lista
var resultado = lista.Where(i => i.IDT_PRODUTO == item.IDT_PRODUTO);
 if (resultado != null && resultado.Count() > 0)
 {//Atualizar a quantidade de produto
 AtualizarLista(item);
 }
 else
 {
 item.SUBTOTAL = (item.VALOR_UNITARIO * item.QUANTIDADE);
 lista.Add(item);
 HttpContext.Current.Session["lista"] = lista;
 }
 }
Assim, é criado o método AdicionarItem como void , pois não retorna nada, passando o tipo Item_Venda. Para adicionarmos um item antes é preciso verificar se já tem algum item nessa lista, assim nossa variável lista recebe os itens já existentes no carrinho. Depois é preciso verificar se o item existe na lista, isso é feito através de LINQ, onde é verificado se o IDT_PRODUTO é igual ao item.IDT_PRODUTO. Caso o resultado seja diferente de vazio ou maior que 0 é preciso atualizar a quantidade do produto, desta maneira é feito um IF para realizar essa verificação. Se caso existe produtos, será executado o método AtualizarLista passando o item como parâmetro. Caso seja um produto novo a ser adicionado então adicionamos a nossa lista

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais