Introdução à Plataforma Microsoft .NET Monique Monteiro Agenda • Plataforma Microsoft .NET • .NET X J2EE • Common Language Infrastructure – Modelo de Compilação – Common Type System – CLI – Principais Implementações • • • • • • CLR X JVM .NET – Arquitetura ASP .NET Web Services C# X Java Referências Introdução à Plataforma Microsoft .NET Plataforma Microsoft .NET • Plataforma de desenvolvimento multilinguagem e multi-paradigma • Ambiente de execução gerenciado: – Máquina virtual – Compilação just-in-time – Gerenciamento automático de memória • Integração de serviços para: – Desenvolvimento Web (ASP .NET) – Service Oriented Architecture (Web Services) – Computação Distribuída (.NET Remoting) • Principais linguagens: C#, VB .NET, J# Introdução à Plataforma Microsoft .NET .NET X J2EE • .NET: “Várias linguagens em um único ambiente” • J2EE – “Uma única linguagem em vários ambientes” Web J2EE Struts, JSF, Laszlo Banco de Dados JDBC Web Services Suporte por meio de APIs Distribuição RMI, EJB Introdução à Plataforma Microsoft .NET .NET ASP .NET ADO .NET Suporte embutido e simplificado .NET Remoting Common Language Infrastructure • Infra-estrutura de execução padronizada pela ECMA • Especificação define: – – – – Common Type System Metadados Common Language Specification Virtual Execution System Introdução à Plataforma Microsoft .NET Modelo de Compilação Manifesto 1 Código Fonte Assembly Common Intermediate Language Linguagem X 2 (Compilação Just-In-Time) OU 2 (Interpretação) Introdução à Plataforma Microsoft .NET Código Nativo Common Type System Tipo Por Valor (“Value Types”) Por Referência (“Reference Types”) Definidos pelo Usuário Pré-definidos Auto-descritos Inteiros Enumerações (“Enums”) Ponto Flutuante Estruturas Interface Ponteiro Equivalentes por Nome String Delegates Object “Boxed Value Types” “Boxed Enums” Equivalentes Estruturais Arrays Introdução à Plataforma Microsoft .NET Pré-definidos Estruturas • Exemplo de value type (alocadas na pilha) • Exemplo (C#): Introdução à Plataforma Microsoft .NET Enumerações • Exemplo de value type (alocadas na pilha) • Exemplo (C#): Introdução à Plataforma Microsoft .NET Delegates • Versão OO e segura de ponteiros para função • Utilizados no modelo de eventos • Exemplo: public delegate int Function(int x, int ... Function function1 = new Function(Sum); Function function2 = new Function(<some int result1 = function1(10, 20); int result2 = function2(30, 40); ... static int Sum(int x, int y) { return x ... int Subtract(int a, int b) { return x – Introdução à Plataforma Microsoft .NET y); object>.Subtract); + y; } y; } CLI – Principais Implementações • Common Language Runtime (Microsoft .NET) • Shared Source CLI (Rotor) – “Subconjunto” da CLR para fins de pesquisa • Mono – Plataformas: Linux, Solaris, Mac OS X, Windows, Unix Introdução à Plataforma Microsoft .NET CLR X JVM CLR JVM Suporte a Generics Nativo Sintático Boxing/Unboxing Nativo Sintático Enumerações Nativo Sintático Multi-paradigma Específico para Java Sistema de Tipos Introdução à Plataforma Microsoft .NET .NET – Arquitetura Web Services Web Forms ASP .NET Windows Forms ADO .NET – Dados e XML Biblioteca de Classes Básicas Common Language Runtime Introdução à Plataforma Microsoft .NET ASP .NET • Tecnologia para criação de aplicações Web baseada no Framework .NET • Reformulação total da tecnologia ASP • Compatível com qualquer linguagem .NET • Gerenciamento automático de sessões em Web Farms Introdução à Plataforma Microsoft .NET ASP .NET • Web Forms – Páginas ASP .NET compiladas dinamicamente – Correspondente ao Java Server Pages do J2EE – Componentes semelhantes aos encontrados em ferramentas RAD para desktop – Modelo declarativo – Suporte automático a validação – Portáveis entre diferentes navegadores (incluindo dispositivos móveis) Introdução à Plataforma Microsoft .NET Web Forms – Ferramentas • • • • • Visual Studio .NET Web Matrix (gratuita) Macromedia Dreamweaver MX Borland C# Builder Notepad... Introdução à Plataforma Microsoft .NET ASP .NET • Web Services “Serviços disponibilizados via WWW com base em padrões e especificações estabelecidos (SOAP, WSDL, UDDI, etc.), de forma independente de linguagem de programação.” • Foco em facilidade de desenvolvimento – Identificados por uma única palavra-chave – Mecanismos built-in de conversão entre SOAP/XML e o ambiente orientado a objetos Introdução à Plataforma Microsoft .NET Web Services • WebMethods Framework – Fornecido por ASP .NET – Extensível – Mapeia mensagens SOAP em chamadas/retorno de métodos Introdução à Plataforma Microsoft .NET Web Service – Exemplo • Arquivo .asmx <%@ WebService class="MathService"%> • Arquivo Fonte (pré-compilado) 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;} } Introdução à Plataforma Microsoft .NET Web Services – Modelo de Execução 1. 2. 3. Requisição HTTP/SOAP é recebida e encaminhada ao arquivo .asmx correspondente Classe e método são localizados Processamento é realizado e retornado via HTTP/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 • Deserialização SOAP → Objetos via Reflexão Classe Objetos Objetos Objetos Esquema XML Objetos Objetos Documento XML • Limitada ao padrão de esquemas (WSDL, XML Schemas) Introdução à Plataforma Microsoft .NET C# X Java – Similaridades • Sintaxes praticamente idênticas • Todas as classes descendem de Object • Não há funções ou constantes globais – Tudo pertence a uma classe • Falta de suporte a herança múltipla – Suporte a interfaces • Uso de exceções • Conceito de espaço de nomes (namespaces X packages) • Comentário utilizado para documentação • Classes e métodos com nomes parecidos – Equals(), Finalize(), ToString(), etc. Introdução à Plataforma Microsoft .NET C# X Java – Diferenças • Sentença foreach para iteração por arrays e classes que implementam IEnumerable – Introduzido no J2SE 5.0 • Suporte a propriedades • Enumerações, estruturas • Métodos não virtuais por padrão – Declarados como virtual e sobrescritos com override • • • • Campos/métodos e propriedades private por padrão Sobrecarga de operador (inclusive coerção) Documentação em XML Uso de ponteiros (código marcado como unsafe) Introdução à Plataforma Microsoft .NET Propriedades – Exemplo public class Pessoa { string nome; public string Nome{ get { return nome; } set { nome = value; } } } Introdução à Plataforma Microsoft .NET Referências • .NET Framework Developer Cente – http://msdn.microsoft.com/netframework/ • ASP .NET: – http://msdn.microsoft.com/ASP.NET/ – http://www.asp.net/whidbey/ • Web Services: – http://msdn.microsoft.com/webservices/ • Mobile Developer Center: – http://msdn.microsoft.com/mobility/ • C# para Programadores de Java. Brian Bagnall, Philip Chen, Stephen Golsberg. Alta Books. Introdução à Plataforma Microsoft .NET Introdução à Plataforma Microsoft .NET Monique Monteiro