Introdução à Introdução à Plataforma Plataforma Microsoft .NET Microsoft .NET Monique Monteiro Monique Monteiro
Introdução à Plataforma Introdução à Plataforma Microsoft .NET Microsoft .NET
Monique MonteiroMonique Monteiro
Introdução à Plataforma Microsoft .NET
AgendaAgenda• Plataforma Microsoft .NETPlataforma Microsoft .NET• .NET X J2EE.NET X J2EE• Common Language InfrastructureCommon Language Infrastructure
– Modelo de CompilaçãoModelo de Compilação– Common Type SystemCommon Type System– CLI – Principais ImplementaçõesCLI – Principais Implementações
• CLR X JVMCLR X JVM• .NET – Arquitetura.NET – Arquitetura• ASP .NETASP .NET• Web ServicesWeb Services• C# X JavaC# X Java• ReferênciasReferências
Introdução à Plataforma Microsoft .NET
Plataforma Microsoft .NETPlataforma Microsoft .NET• Plataforma de desenvolvimento multi-Plataforma de desenvolvimento multi-
linguagem e multi-paradigmalinguagem e multi-paradigma• Ambiente de execução gerenciado:Ambiente de execução gerenciado:
– Máquina virtualMáquina virtual– Compilação Compilação just-in-timejust-in-time– Gerenciamento automático de memóriaGerenciamento automático de memória
• Integração de serviços para:Integração de serviços para:– Desenvolvimento Web (ASP .NET)Desenvolvimento Web (ASP .NET)– Service Oriented Architecture Service Oriented Architecture (Web (Web
Services)Services)– Computação Distribuída (.NET Remoting)Computação Distribuída (.NET Remoting)
• Principais linguagens: C#, VB .NET, J#Principais linguagens: C#, VB .NET, J#
Introdução à Plataforma Microsoft .NET
.NET X J2EE.NET X J2EE
J2EEJ2EE .NET.NET
WebWeb Struts, JSF, Struts, JSF, LaszloLaszlo
ASP .NETASP .NET
Banco de Banco de DadosDados
JDBCJDBC ADO .NETADO .NET
Web Web ServicesServices
Suporte por Suporte por meio de APIsmeio de APIs
Suporte Suporte embutido e embutido e simplificadosimplificado
DistribuiçãoDistribuição RMI, EJBRMI, EJB .NET Remoting.NET Remoting
• ..NET:NET:““Várias linguagens em um único ambiente”Várias linguagens em um único ambiente”
• J2EEJ2EE– ““Uma única linguagem em vários ambientes”Uma única linguagem em vários ambientes”
Introdução à Plataforma Microsoft .NET
Common Language InfrastructureCommon Language Infrastructure
• Infra-estrutura de execução Infra-estrutura de execução padronizada pela ECMApadronizada pela ECMA
• Especificação define:Especificação define:– Common Type SystemCommon Type System– MetadadosMetadados– Common Language SpecificationCommon Language Specification– Virtual Execution SystemVirtual Execution System
Introdução à Plataforma Microsoft .NET
Modelo de CompilaçãoModelo de Compilação
Código Fonte
Linguagem X
Manifesto
Common Intermediate Language
Assembly
Código Nativo
1
2
(Compilação Just-In-Time)
2
(Interpretação)
OU
Introdução à Plataforma Microsoft .NET
Common Type SystemCommon Type SystemTipoTipo
Por Valor(“Value Types”)
Por Referência(“Reference Types”)
Por Referência(“Reference Types”)
Pré-definidosPré-definidos Definidos pelo Usuário
Definidos pelo Usuário
Enumerações (“Enums”)
Enumerações (“Enums”)InteirosInteiros
Ponto FlutuantePonto Flutuante
Auto-descritosAuto-descritos
Equivalentes por Nome
Equivalentes por Nome
DelegatesDelegates
“Boxed Value Types”
“Boxed Value Types”
“Boxed Enums”“Boxed Enums”
Equivalentes Estruturais
Equivalentes Estruturais
ArraysArrays
EstruturasEstruturas
Interface Ponteiro Pré-definidos
String
Object
Introdução à Plataforma Microsoft .NET
EstruturasEstruturas
• Exemplo de Exemplo de value typevalue type (alocadas na (alocadas na pilha)pilha)
• Exemplo (C#):Exemplo (C#):
Introdução à Plataforma Microsoft .NET
EnumeraçõesEnumerações
• Exemplo de Exemplo de value typevalue type (alocadas na (alocadas na pilha)pilha)
• Exemplo (C#):Exemplo (C#):
Introdução à Plataforma Microsoft .NET
DelegatesDelegates
• Versão OO e segura de ponteiros para Versão OO e segura de ponteiros para funçãofunção
• Utilizados no modelo de eventosUtilizados no modelo de eventos• Exemplo:Exemplo:public delegate int Function(int x, int y);...Function function1 = new Function(Sum);Function function2 = new Function(<some object>.Subtract);int result1 = function1(10, 20);int result2 = function2(30, 40);...static int Sum(int x, int y) { return x + y; }...int Subtract(int a, int b) { return x – y; }
public delegate int Function(int x, int y);...Function function1 = new Function(Sum);Function function2 = new Function(<some object>.Subtract);int result1 = function1(10, 20);int result2 = function2(30, 40);...static int Sum(int x, int y) { return x + y; }...int Subtract(int a, int b) { return x – y; }
Introdução à Plataforma Microsoft .NET
CLI – Principais ImplementaçõesCLI – Principais Implementações
• Common Language Runtime Common Language Runtime (Microsoft .NET)(Microsoft .NET)
• Shared Source CLI (Rotor)Shared Source CLI (Rotor)– ““Subconjunto” da CLR para fins de Subconjunto” da CLR para fins de
pesquisapesquisa
• MonoMono– Plataformas: Linux, Solaris, Mac OS X, Plataformas: Linux, Solaris, Mac OS X,
Windows, UnixWindows, Unix
Introdução à Plataforma Microsoft .NET
CLR X JVMCLR X JVM
CLRCLR JVMJVM
Suporte a Suporte a GenericsGenerics
NativoNativo Sintático Sintático
Boxing/UnboxingBoxing/Unboxing NativoNativo SintáticoSintático
EnumeraçõesEnumerações NativoNativo SintáticoSintático
Sistema de TiposSistema de Tipos Multi-Multi-paradigmaparadigma
Específico Específico para Javapara Java
Introdução à Plataforma Microsoft .NET
.NET – Arquitetura .NET – Arquitetura
Common Language Runtime
Biblioteca de Classes Básicas
ADO .NET – Dados e XML
Web Services Web Forms
Windows FormsASP .NET
Introdução à Plataforma Microsoft .NET
ASP .NETASP .NET
• Tecnologia para criação de aplicações Tecnologia para criação de aplicações Web baseada no Framework .NETWeb baseada no Framework .NET
• Reformulação total da tecnologia ASPReformulação total da tecnologia ASP• Compatível com qualquer Compatível com qualquer
linguagem .NETlinguagem .NET• Gerenciamento automático de Gerenciamento automático de
sessões em sessões em Web FarmsWeb Farms
Introdução à Plataforma Microsoft .NET
ASP .NETASP .NET
• Web FormsWeb Forms– Páginas ASP .NET compiladas Páginas ASP .NET compiladas
dinamicamentedinamicamente– Correspondente ao Correspondente ao Java Server PagesJava Server Pages do do
J2EEJ2EE– Componentes semelhantes aos encontrados Componentes semelhantes aos encontrados
em ferramentas RAD para desktopem ferramentas RAD para desktop– Modelo declarativoModelo declarativo– Suporte automático a validaçãoSuporte automático a validação– Portáveis entre diferentes navegadores Portáveis entre diferentes navegadores
(incluindo dispositivos móveis)(incluindo dispositivos móveis)
Introdução à Plataforma Microsoft .NET
Web Forms – FerramentasWeb Forms – Ferramentas
• Visual Studio .NETVisual Studio .NET• Web Matrix (gratuita)Web Matrix (gratuita)• Macromedia Dreamweaver MXMacromedia Dreamweaver MX• Borland C# BuilderBorland C# Builder• Notepad...Notepad...
Introdução à Plataforma Microsoft .NET
ASP .NETASP .NET
• Web ServicesWeb Services““Serviços disponibilizados via Serviços disponibilizados via WWW WWW com base com base
em padrões e especificações estabelecidos em padrões e especificações estabelecidos (SOAP, WSDL, UDDI, etc.), de forma (SOAP, WSDL, UDDI, etc.), de forma
independente de linguagem de independente de linguagem de programação.”programação.”
• Foco em facilidade de desenvolvimentoFoco em facilidade de desenvolvimento– Identificados por uma única palavra-chaveIdentificados por uma única palavra-chave– Mecanismos Mecanismos built-inbuilt-in de conversão entre de conversão entre
SOAP/XML e o ambiente orientado a objetosSOAP/XML e o ambiente orientado a objetos
Introdução à Plataforma Microsoft .NET
Web ServicesWeb Services
• WebMethods FrameworkWebMethods Framework– Fornecido por ASP .NETFornecido por ASP .NET– ExtensívelExtensível– Mapeia mensagens SOAP em Mapeia mensagens SOAP em
chamadas/retorno de métodoschamadas/retorno de métodos
Introdução à Plataforma Microsoft .NET
• Arquivo .asmxArquivo .asmx
• Arquivo Fonte (pré-compilado)Arquivo Fonte (pré-compilado)
Web Service – Exemplo Web Service – Exemplo
using System.Web.Services;
public class MathService { [WebMethod] public double Add(double x, double y) { return x + y;}
[WebMethod] public double Sub(double x, double y) { return x – y;}
public double Mul(double x, double y) { return x * y;}
public double Div(double x, double y) { return x / y;}
}
using System.Web.Services;
public class MathService { [WebMethod] public double Add(double x, double y) { return x + y;}
[WebMethod] public double Sub(double x, double y) { return x – y;}
public double Mul(double x, double y) { return x * y;}
public double Div(double x, double y) { return x / y;}
}
<%@ WebService class="MathService"%><%@ WebService class="MathService"%>
Introdução à Plataforma Microsoft .NET
Web Services – Modelo de ExecuçãoWeb Services – Modelo de Execução
1.1. Requisição HTTP/SOAP é recebida e encaminhada Requisição HTTP/SOAP é recebida e encaminhada ao arquivo .asmx correspondenteao arquivo .asmx correspondente
2.2. Classe e método são localizadosClasse e método são localizados3.3. Processamento é realizado e retornado via Processamento é realizado e retornado via
HTTP/SOAPHTTP/SOAP
POST /math/math.asmx HTTP/1.1…SOAPAction: "urn:math:subtract"
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Subtract xmlns="http://example.org/math"> <x>33</x> <y>66</y> </Subtract> </soap:Body></soap:Envelope>
Introdução à Plataforma Microsoft .NET
Web Services – Mapeamento XML – OO Web Services – Mapeamento XML – OO
• Deserialização SOAP Deserialização SOAP → → Objetos via Objetos via ReflexãoReflexão
• Limitada ao padrão de esquemas Limitada ao padrão de esquemas (WSDL, (WSDL, XML SchemasXML Schemas))
Classe
ObjetosObjetos
Objetos
Esquema XML
ObjetosObjetos
Documento XML
Introdução à Plataforma Microsoft .NET
C# X Java – Similaridades C# X Java – Similaridades • Sintaxes praticamente idênticasSintaxes praticamente idênticas• Todas as classes descendem de ObjectTodas as classes descendem de Object• Não há funções ou constantes globaisNão há funções ou constantes globais
– Tudo pertence a uma classeTudo pertence a uma classe
• Falta de suporte a herança múltiplaFalta de suporte a herança múltipla– Suporte a interfacesSuporte a interfaces
• Uso de exceçõesUso de exceções• Conceito de espaço de nomes (namespaces Conceito de espaço de nomes (namespaces
X packages)X packages)• Comentário utilizado para documentaçãoComentário utilizado para documentação• Classes e métodos com nomes parecidosClasses e métodos com nomes parecidos
– Equals(), Finalize(), ToString(), etc.Equals(), Finalize(), ToString(), etc.
Introdução à Plataforma Microsoft .NET
C# X Java – Diferenças C# X Java – Diferenças • Sentença Sentença foreach foreach para iteração por arrays e para iteração por arrays e
classes que implementam classes que implementam IEnumerableIEnumerable– Introduzido no J2SE 5.0Introduzido no J2SE 5.0
• Suporte a propriedadesSuporte a propriedades• Enumerações, estruturasEnumerações, estruturas• Métodos não virtuais por padrãoMétodos não virtuais por padrão
– Declarados como Declarados como virtualvirtual e sobrescritos com e sobrescritos com overrideoverride
• Campos/métodos e propriedades Campos/métodos e propriedades privateprivate por por padrãopadrão
• Sobrecarga de operador (inclusive coerção)Sobrecarga de operador (inclusive coerção)• Documentação em XMLDocumentação em XML• Uso de ponteiros (código marcado como Uso de ponteiros (código marcado como unsafeunsafe))
Introdução à Plataforma Microsoft .NET
Propriedades – ExemploPropriedades – Exemplopublic class Pessoa{ string nome;
public string Nome{ get
{ return nome; } set { nome = value; } }}
public class Pessoa{ string nome;
public string Nome{ get
{ return nome; } set { nome = value; } }}
Introdução à Plataforma Microsoft .NET
ReferênciasReferências
• .NET Framework Developer Cente.NET Framework Developer Cente– http://msdn.microsoft.com/netframework/http://msdn.microsoft.com/netframework/
• ASP .NET:ASP .NET:– http://msdn.microsoft.com/ASP.NET/http://msdn.microsoft.com/ASP.NET/– http://www.asp.net/whidbey/http://www.asp.net/whidbey/
• Web Services:Web Services:– http://msdn.microsoft.com/webservices/http://msdn.microsoft.com/webservices/
• Mobile Developer Center:Mobile Developer Center:– http://msdn.microsoft.com/mobility/http://msdn.microsoft.com/mobility/
• C# para Programadores de JavaC# para Programadores de Java. Brian . Brian Bagnall, Philip Chen, Stephen Golsberg. Alta Bagnall, Philip Chen, Stephen Golsberg. Alta Books.Books.
Introdução à Plataforma Introdução à Plataforma Microsoft .NET Microsoft .NET
Monique MonteiroMonique Monteiro