390 likes | 506 Views
Plataforma de desenvolvimento. Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br). Centro de Informática – 19/07/2005. Windows Longhorn. Nova versão do sistema operacional windows Grande mudança desde o windows 95 e o modelo de computação de 32 bits Criado em .NET
E N D
Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br) Centro de Informática – 19/07/2005
Windows Longhorn • Nova versão do sistema operacional windows • Grande mudança desde o windows 95 e o modelo de computação de 32 bits • Criado em .NET • Primeiro SO feito parcialmente em código gerenciado
WinFX Windows3.0 Serviços Componentes Richness .NET Framework “Whidbey” APIs MFC COM Win32 Win16 Windows Longhorn • Evolução do sistema operacional Windows. • Evolução da concepção do software.
Roteiro da apresentação • Plataforma de desenvolvimento (SDK) • WinFX • WinFS (Armazenamento) • Avalon (Apresentação) • XAML • Indigo (Comunicação)
Plataforma de desenvolvimento WinFX Win32 .NETFramework SDK
Plataforma de desenvolvimento • Componentes • Nova 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
Roteiro da apresentação • Plataforma de desenvolvimento (SDK) • WinFX • WinFS (Armazenamento) • Avalon (Apresentação) • XAML • Indigo (Comunicação)
WinFX - Win Effects • Funcionalidades do SO acessíveis através de uma API de código gerenciado orientado a objetos • Sucessora da API Win32 • Não roda em cima da Win32 • WinFX está para .NET assim como Win32 está para C++.
TM WinFX Apresentação Armazenamento Comunicação WinFS Indigo Avalon Serviços básicos do sistema operacional Base
WinFX Passado Código feito em C Codigo .NET Win32 API Código feito em .NET .NET Class Library Interoperabilidade custa caro! Presente Codigo .NET WinFX
WinFX – Uma API extensa • APIs para acesso a funcionalidades de baixo nível • Mais funcionalidades de alto nivel para aumentar produtividade
Roteiro da apresentação • Plataforma de desenvolvimento (SDK) • WinFX • WinFS (Armazenamento) • Avalon (Apresentação) • XAML • Indigo (Comunicação)
WinFS - Windows File System • Novo sistema de arquivos utilizado no longhorn • Motivação • Grande volume de dados • Desktops no futuro terão hds em tera bytes • Dificuldade de achar documentos • Pesquisa indica que de 15-30% do tempo do funcionário são gastas com buscas e 50% delas falham. [IDC] • Dificuldade de relacionar dados • Dificuldade de achar documentos de um determinado autor Segundo [WinFS101]
WinFS • Um sistema de arquivos totalmente novo? Não! • Construido sobre o NTFS • Totalmente 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
WinFS • API orientada a objetos • Utiliza uma linguagem denominada OPATH • SQL • Utiliza T-SQL • Dim personItem As Person • For 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')
Roteiro da apresentação • Plataforma de desenvolvimento (SDK) • WinFX • WinFS (Armazenamento) • Avalon (Apresentação) • XAML • Indigo (Comunicação)
Avalon • Subsistema 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 interface • Linguagem declarativa
Avalon • O motor do Avalon é criado sobre o DirectX • Motor 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ção • Declarativa (Designers) • Procedural (Programadores)
Avalon • Melhor da Web, Melhor do Windows • Web • Implantação e atualização simples e fácil gerenciamento • Flow layout • Modelo declarativo • Windows • Não restrição de funcionalidade (drag and drop) • Integração com desktop • Bom suporte offline (Smart Clients) • Escalabilidade e Performance
XAML • Linguagem declarativa baseada em XML para definir interface gráfica • Separação de apresentação e código permite que o designer trabalhe na IU enquando que o desenvolvedor trabalhe na lógica
XAML • Exemplo <Window xmlns="http://schemas.microsoft.com/2003/xaml"> <Button>Hello World</Button> </Window>
XAML • Elementos 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?? • Inline • Codebehind <Canvas xmlns="http://schemas.microsoft.com/2003/xaml"> <Button Canvas.Left="10" Canvas.Top="10" Width="90px" Height="32px">Click Me</Button> </Canvas> 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"; Codigo procedural no longhorn Funcionalidade idêntica feita em XAML
XAML • Inline <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>
XAML • Codebehind <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) { // ... } }
Roteiro da apresentação • Plataforma de desenvolvimento (SDK) • WinFX • WinFS (Armazenamento) • Avalon (Apresentação) • XAML • Indigo (Comunicação)
O que é o Indigo? • É um conjunto de tecnologias para criar aplicações distribuídas e de grande porte. • Baseado em orientação a serviços • Implementa SOAP e outras tecnologias • Interoperabilidade inclusive com aplicações não-Microsoft
Orientação a serviços [Chappell] • Um serviço é um programa que interage com outros através de mensagens. • Fronteiras bem definidas • Autonomia • Apenas esquemas e contratos compartilhados • Baseados 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.
Enterprise Services WSE ASMX Remoting MSMQ Indigo [INDIGO] Interoperabilidade SOA Comunicação .NET – .NET Enfileiramento de Mensagens Transações Distribuídas, etc Protocolos WS-*
Referências • Microsoft Longhorn http://msdn.microsoft.com/Longhorn/ • [IDC] http://www.idc.com • Introduction - Windows 2000 Graphics API Black Book - http://graphicsbb.itgo.com/intro.html • Revolutionary 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.aspx • CLI201: 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
Referências • Windows 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.aspx • Introduction To WinFX http://www.deepwinfx.com/Articles/IntroductionToWinFX.aspx • Introduction to Win32 http://www.functionx.com/win32/Lesson01.htm • Introduction to XAML http://www.longhorncorner.com/UploadFile/mahesh/XAMLIntro03282005195730PM/XAMLIntro.aspx?ArticleID=ed4b789e-7b95-4e25-8860-c0f7f3511d7b&PagePath=/UploadFile/mahesh/XAMLIntro03282005195730PM/XAMLIntro.aspx • Avalon November 2004 Community Technology Preview http://msdn.microsoft.com/Longhorn/understanding/pillars/avalon/avnov04ctp/default.aspx • WinFS Data Model http://www.longhorncorner.com/UploadFile/jrodriguez/WinFSDataModel03072005041249AM/WinFSDataModel.aspx?ArticleID=5ddee374-f09a-45b9-a9b8-cd22ef5d0897
Plataforma de desenvolvimento Ricardo Cavalcanti (roc3@cin.ufpe.br) Sérgio Clemente (sscf@cin.ufpe.br)
Avalon Avalon • Application Model • Composable component architecture • Layout engine • Two-way transformable data binding • Rich visual styling and theming • Browser hosting • Graphics Model • 2D & 3D Graphics • Imaging • Text • Video and audio • Animation • Document Model • Fixed, flow and adaptive layouts • Advanced typography • Container services • Rights management Application Model Document Model Graphics Model Tools and Languages Element Services Media Integration Layer Composition and Rendering DirectX .NET Framework
5 6 7 2 1 3 4 WinFS • Sistema de arquivos NTFS • Motor relacional sqlserver • Serviços base de um sistema de arquivos, importação/exportação. • Fornece o relacionamento entre itens • Definição de itens complexos • Serviços de notificação, sicronização, etc. • API para acesso as funcionalidades
XAML • Elementos raiz possíveis • Window (Windows/Web) • Canvas • Paineis
XAML • Necessita ou não ser compilado • Caso não contenha código, pode ser aberto no browser • Caso contenha código, precisa ser compilado
XAML • Processo de compilação Arquivo de projeto do longhorn (Application1.proj) Arquivo XAML (Form1.xaml) Code behind (Form1.xaml.cs) Build (msbuild.exe) Executável (Aplication1.exe)
TM Queuing Eventing Routing WinFX Apresentação Armazenamento Comunicação Communication Windows Forms Windows Forms Avalon Avalon WinFS WinFS Indigo Indigo ASP.NET ADO.NET Collaboration Document UI Media Object T/SQL XML Service Models Schemas Messaging Services Connectivity Services Controls Interop Engine Desktop Window Manager Adaptive UI Engine Desktop Services People and Groups ObjectSpaces People Group Channels (Datagram, Reliable, Peer, …) Policy Engine Synchronization(WinFS, Win32..) Calendar Media Page/SiteComposition Presentation Object Manager Desktop Composition Engine Application Services DataSet Collaboration History Document … Channel Security Transport Channels (IPC, HTTP, TCP…) Data Model Media Services InfoAgent (PreferenceRules..) Message Encoder SQL XML Real-Time Activities Items Animation andComposition MediaProcessing Capture and Sourcing Designer Services Personalization and Profiling Services System Services Relationships FileSystem Services (MetaDataHandlers..) Communications Manager (Port) Transaction Framework Providers Signaling Hardware Rendering Software Rendering and Sinks Controls Membership and Security Services Extensions Federation Serviços básicos do sistema operacional CLR Base Class Libraries Network Class Library Memory Manager Code Execution Loader Security Serialization Application Deployment Engine (Click-Once) Network Services Demand Activation and Protocol Health Hosting Layer PNRP Native WiFi SIP TCP Listener UDP Listener IPC Listener Transactions Storage Identity & Security System Management Services (Event Logs, Tracing, Probes, Auto Update, Admin) GDI/GDI+ Window Manager Global Audio Engine Direct 3DGraphics Virtual Shadow Copy Service File Replication Service Virtual Disk Service Lightweight Transactions TransactionCoordinator Internet Connection Firewall Graphics drivers DDI Input Manager Audio Drivers DirectX Graphics Mini port Protocols Redirectors Distributed File System Filter Manager Cache Manager KernelTransactionManager LoggingService Filter Engine TCP, UDP IPV4, IPV6 IPSEC QOS HTTP Listener Transacted NTFS Universal Data Format FAT 16/32 Plug andPlay MemoryManager PowerManager ConfigManager Process Manager SecurityReference Monitor LPCFacility IO Manager Device Drivers Kernel Mode 802.3 802.11 .. Kernel SCSI/FC Hardware Abstraction Layer