A Plataforma .NET Vitor Santos Microsoft Corporation Agenda Web Services e Smart Devices A Plataforma .NET O Modelo de programação Sumário 2 Agenda Web Services e Smart Devices A Plataforma .NET O Modelo de programação Sumário 3 A empresa “Virtual” Empresa A Empregados no Exterior Empresa B Empregados no Exterior Escrit.Remoto/Consumidores Escrit.Remoto/Consumidores Clientes Parceiros Fornecedores Exigencia de negócio = Estar tudo ligado 4 Empresa Company C A Empresa B Empregados no Escrit.Remoto/Consumidores Exterior Empregados no Exterior Empregados no Escrit.Remoto/Consumidores Exterior Clientes Parceiros Escrit.Remoto/Consumidores Fornecedores Empresa D Empregados no Escrit.Remoto/Consumidores Exterior Clientes Parceiros Fornecedores Clientes Parceiros Fornecedores Empresa E Empregados no Escrit.Remoto/Consumidores Exterior Empresa F Empregados no Escrit.Remoto/Consumidores Exterior Clientes Parceiros Fornecedores Clientes Parceiros Fornecedores Exigencia de negócio = tudo ligado 5 A Integração Problema clássico Costuma ficar para o fim Demasiado difícil, cara, lenta e frágil Ilhas de tecnologia no mar da conectividade As soluções estão a evoluir para constelações Exemplos Dentro das empresas Entre empresas O indivíduo e diferentes tecnologias 6 Web Services Conceptualmente “Pequenos componentes de funcionalidade disponibilizadas para poderem ser consumidos como serviços através de uma rede” Tecnicamente “Conjunto de operações acessíveis através de mensagens “standard” sobre uma rede 7 Demo 8 Novos dispositivos Uma plataforma de desenvolvimento tem de integrar os novos dispositivos de forma transparente; Conectividade Baixo custo, a Internet a universalizar-se Wireless, acesso a banda larga Proliferação de equipamentos Equipamentos ligados à Internet - PDAs, Telefones celulares etc. Standards para a Internet Integração assente em XML 9 Demo Vídeo Web Services 10 Agenda Web Services e Smart Devices A plataforma .NET O Modelo de Programação Sumário 11 O que é o .NET? Uma plataforma de desenvolvimento: interfaces, componentes e ferramentas para desenvolver software. A maior alteração dentro da Microsoft desde que o Windows NT substituíu o DOS As alterações incluem: Formato do código, compiladores, Modelos de carregamento e execução do código, Modelo de segurança, Modelo de objectos, metadados, protocolos remoting Bibliotecas de classes, … 12 A plataforma .NET 13 O valor estratégico da plataforma Suporte ao desenvolvimento de novos negócios assentes na tecnologia 14 Novos modelos de negócio AUTENTICAÇÃO Leilões Fornecedor A Fornecedor B … … … Fornecedor C 15 Novos modelos de negócio AUTENTICAÇÃO Pagamentos Leilões Fornecedor A Fornecedor B … … … Fornecedor C Empresa A Empresa B Empresa C 16 Novos modelos de negócio AUTENTICAÇÃO Pagamentos Leilões Fornecedor A Fornecedor B … … … Fornecedor C Empresa A Empresa B Empresa C 17 O Software será a base dos novos modelos de negócio dede utilização de software O Experiências software tem permitir: consistentes entre os diversos dispositivos; Produção de software como um serviço; Modelo de programação consistente. 18 Agenda Web Services e Smart Devices A plataforma .NET O Modelo de Programação Sumário 19 O modelo de programação tem de: Simplificar o desenvolvimento de aplicações Fornecer um ambiente de execução seguro e robusto Suporte para múltiplas linguagens de programação Simplificar a distribuição e manutenção de aplicações 20 .NET: Princípios Visão Microsoft para a computação Tornar a computação distribuida na Internet comum Explorar o poder de processamento e largura de banda cada vez mais baratos Integração natural entre múltiplas aplicações e dispositivos Disponibilizar software como um serviço Experiência de utilização nova e mais rica A .NET Framework é o modelo de programação que serve de base para a visão .NET 22 .NET Framework Common Language Runtime (CLR) ASP.NET Web Forms Web Services Mobile Devices Windows Forms ADO.NET and XML Base Class Library Common Language Runtime Suporte múltiplas linguagens Sistema único de tipos Deployment simplificado Code Access Security Bibliotecas base ricas Modelo de programação poderoso e consistente Focus no código e funcionalidade Integração com as tools de desenvolvimento Suporte de funcionalidade design-time Suporte para Debugging, profiling e instrumentação 23 Common Language Runtime Desenvolvimento public static void Main(String[] args ) { String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable("USERNAME"); f=new FileStream(“C:\\test.txt",FileMode.Create); w=new StreamWriter(f); public static void Main(String[] args ) w.WriteLine(usr); { String usr; FileStream f; StreamWriter w; w.Close(); try { } catch (Exceptionusr=Environment.GetEnvironmentVariable("USERNAME"); e){ Console.WriteLine("Exception:"+e.ToString()); f=new FileStream(“C:\\test.txt",FileMode.Create); } w=new StreamWriter(f); } w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine("Exception:"+e.ToString()); } } Código Compilador Assembly C# J# VB Cobol … CIL Metadata Resources 24 Common Language Runtime Desenvolvimento Distribuição public static void Main(String[] args ) { String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable("USERNAME"); f=new FileStream(“C:\\test.txt",FileMode.Create); w=new StreamWriter(f); public static void Main(String[] args ) w.WriteLine(usr); { String usr; FileStream f; StreamWriter w; w.Close(); try { } catch (Exceptionusr=Environment.GetEnvironmentVariable("USERNAME"); e){ Console.WriteLine("Exception:"+e.ToString()); f=new FileStream(“C:\\test.txt",FileMode.Create); } w=new StreamWriter(f); } w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine("Exception:"+e.ToString()); } } Assembly Assembly CompiladorInstall Código C# J# VB Cobol … Setup CIL Copy Metadata BrowserResources Global Assembly Cache (GAC) Application Directory Download Cache 25 Common Language Runtime Distribuição Desenvolvimento Install Assembly Setup Copy Browser Execução IL to Native Compiler Native .exe + GC table Class Loader Code Manager Security Assembly Global on Target Policy Assembly Machine Cache (GAC) <?xml version="1.0" encoding="utf-8" ?> <configuration> <mscorlib> <security> <policy> <PolicyLevel version="1"> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="Nothing" Name="All_Code" Description="Code group grants no permissio ns and forms the root of the code group tree."> <IMembershipCondition clas s="AllMembershipCondition" version="1"/> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust" Application Directory Assembly Loader Download Cache Garbage Collection Exception Manager Thread Support Debug Engine COM Interop 26 Demo Common Language Runtime 27 Objectivos no desenho da .NET Framework Simplificar o desenvolvimento de aplicações Fornecer um ambiente de execução seguro e robusto Suporte para múltiplas linguagens de programação Simplificar a distribuição e manutenção de aplicações 28 Simplificar o desenvolvimento Windows API HWND hwndMain = CreateWindowEx( 0, "MainWinClass", “Janela Principal", WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, (HWND)NULL, (HMENU)NULL, hInstance, NULL); ShowWindow(hwndMain, SW_SHOWDEFAULT); UpdateWindow(hwndMain); .NET Framework Form form = new Form(); form.Text = “Janela Principal"; form.Show(); 29 Simplificar o desenvolvimento Organização Sistema de tipos unificado O código é organizado em classes e namespaces hierárquicos Tudo é um objecto, não há Variants, um só tipo string, todas as strings são Unicode Orientado a Componentes Suporte nativo para propriedades, métodos, eventos, e atributos Funcionalidade Design-time 30 .NET Framework Namespace System.Web Services Description UI HtmlControls Discovery WebControls System.WinForms Design Protocols ComponentModel System.Drawing Caching Security Drawing2D Printing Configuration SessionState Imaging Text System.Data System.Xml ADO SQL XSLT Design SQLTypes XPath Serialization System Collections IO Security Configuration Net ServiceProcess Runtime InteropServices Diagnostics Reflection Text Remoting Globalization Resources Threading Serialization 31 Robusto e Seguro Gestão automática da “existência” dos objectos Code correctness and type-safety Todos os objectos no.NET são geridos pelo “garbage collector” Não há pointers “perdidos” ou referências circulares O código IL pode ser verificado para garantir que é “typesafe” Não existem casts inválidos, variavéis não inicializadas, acesso a posições incorrectas nos arrays… Segurança baseada em “provas” Baseada na origem do código, assim como do utilizador As permissões são extensíveis 32 Plataforma Multi-Linguagem Liberdade de escolha da linguagem Todas as funcionalidades da .NET Framework estão disponíveis para qualquer linguagem .NET Os componentes de uma aplicação podem ser escritos em várias linguagens Os Debuggers, profilers, code coverage analyzers, etc…, funcionam para todas as linguagens Compiladores disponíveis Da Microsoft: VB.NET, C++, C#, JScript.NET, J# De outras companhias / universidades: APL, COBOL, Eiffel, Fortran, Haskell, ML, Perl, Python, RPG, Scheme, Smalltalk, … 33 Suporte a várias linguagens VB.NET Dim s as String s = "authors" Dim cmd As New SqlCommand("select * from " & s, sqlconn) cmd.ExecuteReader() C# string s = "authors"; SqlCommand cmd = new SqlCommand("select * from "+s, sqlconn); cmd.ExecuteReader(); String *s = S"authors"; SqlCommand cmd = new SqlCommand(String::Concat(S"select * from ", s), C++ sqlconn); cmd.ExecuteReader(); 35 Suporte a várias linguagens String s = "authors"; J# SqlCommand cmd = new SqlCommand("select * from "+s, sqlconn); cmd.ExecuteReader(); 36 Suporte a várias linguagens Jscript.NET var s = "authors" var cmd = new SqlCommand("select * from " + s, sqlconn) cmd.ExecuteReader() Perl String *s = S"authors"; SqlCommand cmd = new SqlCommand(String::Concat(S"select * from ", s), sqlconn); cmd.ExecuteReader(); Python s = "authors" cmd =SqlCommand("select * from " + s, sqlconn) cmd.ExecuteReader() 37 Suporte a várias linguagens Cobol ENVIRONMENT DIVISION. CONFIGURATION SECTION. REPOSITORY. CLASS SqlCommand AS "System.Data.SqlClient.SqlCommand" CLASS SqlConnection AS "System.Data.SqlClient.SqlConnection". DATA DIVISION. WORKING-STORAGE SECTION. 01 str PIC X(50). 01 cmd-string PIC X(50). 01 cmd OBJECT REFERENCE SqlCommand. 01 sqlconn OBJECT REFERENCE SqlConnection. PROCEDURE DIVISION. *> Establish the SQL connection here somewhere. MOVE "authors" TO str. STRING "select * from " DELIMITED BY SIZE, str DELIMITED BY " " INTO cmd-string. INVOKE SqlCommand "NEW" USING BY VALUE cmd-string sqlconn RETURNING cmd. INVOKE cmd "ExecuteReader". 38 Suporte a várias linguagens RPG DclFld MyInstObj Type( System.Data.SqlClient.SqlCommand ) DclFld s Type( *string ) s = "authors" MyInstObj = New System.Data.SqlClient.SqlCommand("select * from "+s, sqlconn) MyInstObj.ExecuteReader() Fortran assembly_external(name="System.Data.SqlClient.SqlCommand") sqlcmdcharacter*10 xsqlcmd Cmd x='authors' cmd = sqlcmd("select * from "//x, sqlconn) call cmd.ExecuteReader() end 39 Suporte a várias linguagens APL s←String.New ‘authors’ cmd←SqlCommand.New (‘select * from ‘,s.ToString σ) sqlconn cmd.ExecuteReader Smalltalk |s| := 'authors'. |cmd| := SqlCommand('select * from '+s, sqlconn). cmd.ExecuteReader(). 40 Suporte a várias linguagens Scheme (let* ( (s "authors") (cmd (new-SqlCommand (string-append "select * from " s) sqlconn))) (execute-command cmd)) local s: STRING cmd: SQLCOMMAND Eiffel do s := "authors" create cmd("select * from " + s, sqlconn) cmd.ExecuteReader() end ExecuteReader = invoke System.Data.SqlClient.ExecuteReader(); SqlCommand = create System.Data.SqlClient.SqlCommand(String,\ System.Data.SqlClient.SqlConnection); query = sqlconn -> let{ s = "authors"; } in { cmd <- SqlCommand ("select * from "+s, sqlconn); cmd # ExecuteReader(); }; Mondrian 41 Demo Suporte multilinguagem 42 Standardização do .NET CLI e C# “standardizados” pela ECMA Submissão conjunta com Intel e Hewlett-Packard A 13 de Dezembro de 2001, ECMA General Assembly ractificou as especificações do C# e da “common language infrastructure” (CLI) para standards internacionais. Existem companhias a implementar as especificações ECMA. Por exemplo, a Ximian com o Project Mono (.NET em Linux) Está disponível para download “The Microsoft Shared Source CLI Implementation” para Windows e FreeBSD http://msdn.microsoft.com/net/ecma/ 43 Como saber mais sobre a .NET Framework? .NET Framework SDK (essencial!) CLR, compiladores de linha de comando, debuggers, class libraries, documentação, … Download grátis Size: ~100 MB Visual Studio .NET (opcional) IDE (Ambiente de Desenvolvimento Integrado) Size: ~1.5 GB 44 .NET Compact Framework .NET Framework para dispositivos embebidos 45 Agenda Web Services e Smart Devices A plataforma .NET O Modelo de Programação Sumário 46 .NET em suma A plataforma de desenvolvimento de software da Microsoft para a próxima década Baseada em standards, para múltiplas linguagens e múlplipos dispositivos Baseada na ideia dos Web Services 47 Referências: Sites: http://msdn.microsoft.com/net http://www.microsoft.com/portugal http://www.microsoft.com/portugal/msdn News Groups News.microsoft.com Microsoft.public.pt.vsnet 48 Muito Obrigado ! 49