1 plataforma de desenvolvimento ricardo cavalcanti ([email protected]) sérgio clemente...

38
1 Plataforma de desenvolvimento Ricardo Cavalcanti ([email protected]) Sérgio Clemente ([email protected]) Centro de Informática – 19/07/2

Upload: sandra-medina-cabreira

Post on 07-Apr-2016

214 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

1

Plataforma de desenvolvimento

Ricardo Cavalcanti ([email protected])Sérgio Clemente ([email protected])

Centro de Informática – 19/07/2005

Page 2: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

2

Windows LonghornNova versão do sistema operacional windowsGrande mudança desde o windows 95 e o modelo de computação de 32 bitsCriado em .NET

Primeiro SO feito parcialmente em código gerenciado

Page 3: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

3

Windows LonghornEvolução do sistema operacional Windows.Evolução da concepção do software.

Ric

hnes

sR

ichn

ess

Win16Win16 Win32Win32COMCOM

MFCMFC

Componentes

ComponentesServiçosServiços

APIsAPIsWindows

3.0

WinFXWinFX

.NET Framework “Whidbey”

Page 4: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

4

Roteiro da apresentaçãoPlataforma de desenvolvimento (SDK)Plataforma de desenvolvimento (SDK)WinFX

WinFS (Armazenamento)Avalon (Apresentação)

XAMLIndigo (Comunicação)

Page 5: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

5

Plataforma de desenvolvimento

Win32 .NETFramework

WinFX

SDK

Page 6: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

6

Plataforma de desenvolvimento

ComponentesNova api (WinFX)Antiga api (Win32)Contém ferramentas envolvidas na fase de desenvolvimento do software

Compilador, runtime, etc.Semelhante ao JDK ou ao .NET Framework

Page 7: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

7

Roteiro da apresentaçãoPlataforma de desenvolvimento (SDK)WinFX

WinFS (Armazenamento)Avalon (Apresentação)

XAMLIndigo (Comunicação)

Page 8: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

8

WinFX - Win EffectsFuncionalidades do SO acessíveis através de uma API de código gerenciado orientado a objetosSucessora da API Win32

Não roda em cima da Win32WinFX está para .NET assim como Win32 está para C++.

Page 9: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

9

WinFXTM

Apresentação Armazenamento Comunicação

Serviços básicos do sistema operacional

AvalonAvalon WinFSWinFS IndigoIndigo

BaseBase

Page 10: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

10

WinFX

Codigo .NETCodigo .NET Win32 APIWin32 API

Codigo .NETCodigo .NET WinFXWinFX

PassadoPassado

PresentePresente

Código feito em CCódigo feito em C

Interoperabilidade Interoperabilidade custa caro!custa caro!

Page 11: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

11

WinFX – Uma API extensa.Net Framework 1.0 Longhorn

(build beta)Assemblies 39 172

4.4x

Namespaces 121 4383.6x

Types 3,889 13,595  3.5x

Membros implementados

32,523 93,217  2.9x

•APIs para acesso a funcionalidades de baixo nível•Mais funcionalidades de alto nivel para aumentar produtividade

Page 12: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

12

Roteiro da apresentaçãoPlataforma de desenvolvimento (SDK)WinFX

WinFS (Armazenamento)Avalon (Apresentação)

XAMLIndigo (Comunicação)

Page 13: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

13

WinFS - Windows File System

Novo sistema de arquivos utilizado no longhornMotivação

Grande volume de dadosDesktops no futuro terão hds em tera bytes

Dificuldade de achar documentosPesquisa indica que de 15-30% do tempo do funcionário são gastas com buscas e 50% delas falham. [IDC]

Dificuldade de relacionar dadosDificuldade de achar documentos de um determinado autor

Segundo [WinFS101]Segundo [WinFS101]

Page 14: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

14

WinFSUm sistema de arquivos totalmente novo? Não!

Construido sobre o NTFSTotalmente compatível com o sistema de arquivos atual

Utiliza uma base de dados relacional para armazenar metadados dos arquivos

Procurar documentos word cujo nome do autor é ‘Smith’Possibilidade de relacionar fotos com pessoas, documentos com pessoas, etc

Page 15: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

15

WinFSAPI orientada a objetos

Utiliza uma linguagem denominada OPATH

SQLUtiliza T-SQL

Dim personItem As PersonFor Each personItem In Person.FindAll(context, "PersonalNames.Surname=’Smith’") ...Next

select p._Item from [System.Storage.Contacts.Store].[Person] p where exists (select * from unnest (p.PersonalNames) n where n.Surname=‘Smith')

Page 16: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

16

Roteiro da apresentaçãoPlataforma de desenvolvimento (SDK)WinFX

WinFS (Armazenamento)Avalon (Apresentação)

XAMLIndigo (Comunicação)

Page 17: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

17

AvalonSubsistema para apresentação do longhorn

Sucessor do GDI / GDI+ (motor de desenho do windows)

Integração de IU para aplicativos, documentos e conteúdos multimídia

Interfaces independentes do destino (web ou desktop)

Uso de XAML para definição da interfaceLinguagem declarativa

Page 18: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

18

AvalonO motor do Avalon é criado sobre o DirectXMotor utiliza figuras em formato vetorial

Utilizando o poder da placa de vídeo (que passa grande parte do seu tempo ociosa)

Dois modelos de programaçãoDeclarativa (Designers)Procedural (Programadores)

Page 19: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

19

AvalonMelhor da Web, Melhor do Windows

WebImplantação e atualização simples e fácil gerenciamentoFlow layoutModelo declarativo

WindowsNão restrição de funcionalidade (drag and drop)Integração com desktopBom suporte offline (Smart Clients)Escalabilidade e Performance

Page 20: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

20

XAMLLinguagem declarativa baseada em XML para definir interface gráficaSeparação de apresentação e código permite que o designer trabalhe na IU enquando que o desenvolvedor trabalhe na lógica

Page 21: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

21

XAMLExemplo<Window xmlns="http://schemas.microsoft.com/2003/xaml"> <Button>Hello World</Button></Window>

Page 22: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

22

XAMLElementos do XML estão associados a classes

Atributos dos elementos estão associados a propriedades dos objetos

Tudo muito simples, mas onde colocar o código para os eventos??

InlineCodebehind

Button btn = new Button();btn.Width = new Length(90);btn.Height = new Length(32);Canvas.SetTop(btn, new Length(10));Canvas.SetLeft(btn, new Length(10));btn.Content = "Click Me";

<Canvas xmlns="http://schemas.microsoft.com/2003/xaml"> <Button Canvas.Left="10" Canvas.Top="10" Width="90px" Height="32px">Click Me</Button></Canvas>

Codigo procedural no longhornFuncionalidade idêntica feita em XAML

Page 23: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

23

XAMLInline

<DockPanel><Button ID="btn1" Height="50" Width="200" Background="Red"

Foreground="White" FontFamily="Times New Roman" FontSize="14" Content="Red Button" Click="ButtonClickMethod"/>

<x:Code><![CDATA[void ButtonClickMethod(object sender, EventArgs e){ btn1.Background = Brushes.Green; MessageBox.Show("Red Button clicked");} ]]></x:Code> </DockPanel>

Page 24: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

24

XAMLCodebehind<Window xmlns="http://schemas.microsoft.com/2003/xaml" xmlns:def="Definition" def:Class="Form1" def:CodeBehind="Form1.xaml.cs" Text="Form1" Visible="True" ><Button Width="90px" Height="25px" Click="Click">Click Me</Button></Window>

public partial class Form1 : Window{ private void Click(object sender, MouseButtonEventArgs e) {

// ... }}

Page 25: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

25

Roteiro da apresentaçãoPlataforma de desenvolvimento (SDK)WinFX

WinFS (Armazenamento)Avalon (Apresentação)

XAMLIndigo (Comunicação)

Page 26: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

26

O que é o Indigo?É um conjunto de tecnologias para criar aplicações distribuídas e de grande porte.Baseado em orientação a serviçosImplementa SOAP e outras tecnologiasInteroperabilidade inclusive com aplicações não-Microsoft

Page 27: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

27

Orientação a serviços [Chappell]

Um serviço é um programa que interage com outros através de mensagens.

Fronteiras bem definidasAutonomiaApenas esquemas e contratos compartilhadosBaseados em políticas (WS-Policy-based)

Um cliente é um programa que torna os serviços usáveis por pessoas.Um sistema conectado é uma coleção de serviços interconectados.

Page 28: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

28

Indigo [INDIGO]

Protocolos WS-*Protocolos WS-*InteroperabilidadInteroperabilidad

eeSOASOA

Transações Transações Distribuídas, Distribuídas,

etcetc

Enfileiramento Enfileiramento de Mensagensde Mensagens

Comunicação .Comunicação .NET – .NETNET – .NET

WSEWSEASMXASMX RemotingRemoting EnterprisEnterprisee

ServicesServicesMSMQMSMQ

Page 29: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

29

Dúvidas?

Page 30: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

30

ReferênciasMicrosoft Longhorn http://msdn.microsoft.com/Longhorn/[IDC] http://www.idc.comIntroduction - Windows 2000 Graphics API Black Book - http://graphicsbb.itgo.com/intro.htmlRevolutionary File Storage System Lets Users Search and Manage Files Based on Content - http://msdn.microsoft.com/longhorn/default.aspx?pull=/msdnmag/issues/04/01/WinFS/default.aspxCLI201: WinFS Overview: The New Storage Subsystem In Longhorn[WinFS 101] WinFS 101: Introducing the New Windows File System http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwinfs/html/winfs03112004.asp[INDIGO] Longhorn Developer Corner: Indigohttp://msdn.microsoft.com/Longhorn/Indigo/default.aspx[Chappell] Chappell, David. Introducing Indigo: An Early Look. Disponível em http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.as:px?pull=/library/en-us/dnlong/html/introindigov1-0.asp

Page 31: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

31

ReferênciasWindows Longhorn Developer Center http://www.c-sharpcorner.com/Longhorn/A First Look at Writing and Deploying Apps in the Next Generation of Windows http://msdn.microsoft.com/longhorn/understanding/pillars/fundamentals/default.aspx?pull=/msdnmag/issues/04/01/DevelopingAppsforLonghorn/default.aspxIntroduction To WinFX http://www.deepwinfx.com/Articles/IntroductionToWinFX.aspxIntroduction to Win32 http://www.functionx.com/win32/Lesson01.htmIntroduction to XAML http://www.longhorncorner.com/UploadFile/mahesh/XAMLIntro03282005195730PM/XAMLIntro.aspx?ArticleID=ed4b789e-7b95-4e25-8860-c0f7f3511d7b&PagePath=/UploadFile/mahesh/XAMLIntro03282005195730PM/XAMLIntro.aspxAvalon November 2004 Community Technology Preview http://msdn.microsoft.com/Longhorn/understanding/pillars/avalon/avnov04ctp/default.aspxWinFS Data Model http://www.longhorncorner.com/UploadFile/jrodriguez/WinFSDataModel03072005041249AM/WinFSDataModel.aspx?ArticleID=5ddee374-f09a-45b9-a9b8-cd22ef5d0897

Page 32: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

32

Plataforma de desenvolviment

o

Ricardo Cavalcanti ([email protected])Sérgio Clemente ([email protected])

Page 33: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

33

AvalonApplication Model

Composable component architectureLayout engineTwo-way transformable data bindingRich visual styling and themingBrowser hosting

Graphics Model2D & 3D GraphicsImagingTextVideo and audioAnimation

Document ModelFixed, flow and adaptive layoutsAdvanced typographyContainer servicesRights management

Media IntegrationLayer

Element Services

Appl

icatio

nM

odel

Docu

men

tM

odel

Grap

hics

Mod

el

Composition and Rendering

.NET Framework

DirectX

AvalonAvalon

Tool

s and

Lan

guag

es

Page 34: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

34

WinFS

1

2

5

3

6

1. Sistema de arquivos NTFS

2. Motor relacional sqlserver

3. Serviços base de um sistema de arquivos, importação/exportação.

4. Fornece o relacionamento entre itens

5. Definição de itens complexos

6. Serviços de notificação, sicronização, etc.

7. API para acesso as funcionalidades

7

4

Page 35: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

35

XAMLElementos raiz possíveis

Window (Windows/Web)CanvasPaineis

Page 36: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

36

XAMLNecessita ou não ser compilado

Caso não contenha código, pode ser aberto no browserCaso contenha código, precisa ser compilado

Page 37: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

37

XAMLProcesso de compilação

Arquivo XAML(Form1.xaml)

Code behind(Form1.xaml.cs)

Arquivo de projeto do longhorn

(Application1.proj)

Executável(Aplication1.exe)

Build (msbuild.exe)

Page 38: 1 Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente

38

WinFX

CommunicationAvalon WinFS IndigoWindows

FormsASP.NET

ObjectSpaces

DataSet

SQL XML

Providers

Framew

ork

ServicesSchemas

Data Model

ADO.NET

Connectivity

Synchronization(WinFS, Win32..)

InfoAgent(PreferenceRules..)

FileSystem Services(MetaDataHandlers..)

Calendar Media

Document …

Items

Relationships

ExtensionsCommunications Manager (Port)

Messaging Services

Transport Channels(IPC, HTTP, TCP…)

Channels (Datagram, Reliable, Peer, …)

Policy Engine

MessageEncoder

ChannelSecurity

Queuing

Eventing

Routing

Transaction

Desktop Services

Desktop WindowManager

Presentation Object Manager

Desktop Composition Engine

Animation andComposition

Media Services

Hardware Rendering

MediaProcessing

Capture and Sourcing

Software Renderingand Sinks

Adaptive UIEngine

Page/SiteComposition

Personalization andProfiling Services

Membership and Security Services

Designer Services

Controls Interop Engine

Controls

Windows Forms

ApplicationServices

People Group

Collaboration

People andGroups

CollaborationHistory

Real-TimeActivities

SignalingFederation

System Services

Transactions Storage

Protocols

Network Services

Kernel M

ode

Base Class Libraries

Memory Manager

Hosting Layer

Code Execution Loader Security Serialization

LightweightTransactions

TransactionCoordinator

KernelTransactionManager

LoggingService

Kernel

Hardware Abstraction Layer

ProcessManager

SecurityReference Monitor

LPCFacility

MemoryManager

PowerManager

ConfigManager

Plug andPlay

TransactedNTFS

Cache ManagerUniversal

Data Format

FilterEngine

TCP, UDPIPV4, IPV6 IPSEC QOS HTTP

Listener

Internet Connection Firewall

Demand Activation and Protocol Health

PNRP NativeWiFi SIP TCP

ListenerUDP Listener

IPC Listener

Network Class Library

GDI/GDI+ WindowManager

GlobalAudio Engine

Direct 3DGraphics

Graphics drivers

DDI InputManager

AudioDrivers

DirectX GraphicsMini port

Redirectors

SCSI/FC 802.3 802.11 ..

Device Drivers

ManagementServices

(Event Logs,Tracing,Probes,

Auto Update,Admin)

IO Manager

Application DeploymentEngine (Click-Once)

Identity &SecuritySystem

FAT 16/32

FilterManager

DistributedFile System

Virtual ShadowCopy Service

File ReplicationService

Virtual DiskService

Models

ServiceObject T/SQL XMLDocument UI Media

CLR

Apresentação Armazenamento Comunicação

Serviços básicos do sistema operacional

Avalon WinFS Indigo

TM