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
Download

A Plataforma .NET