A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Composite Applicatin Guidance Para Windows Presentation Foundation Vasco Oliveira Team Leader, Microfil.

Apresentações semelhantes


Apresentação em tema: "Composite Applicatin Guidance Para Windows Presentation Foundation Vasco Oliveira Team Leader, Microfil."— Transcrição da apresentação:

1

2 Composite Applicatin Guidance Para Windows Presentation Foundation Vasco Oliveira Team Leader, Microfil

3 Agenda O que é o Prism? Modularidade Composição UI Padrões de Apresentação Referências

4 Prism – Porquê? Problemáticas: –Aplicações cliente são um desafio –Como as tornar dinâmicas, customizáveis, extensíveis e fácilmente testáveis? Solução: –Segmentar a aplicação –Gerir interdependências –Compôr a aplicação dinâmicamente Prism - Patterns For Composite Client Apps

5 Prism – "What's in the box"? Prism 1.0 – WPF –Lançado em Julho de 2008 Prism 2.0 – WPF e Silverlight –Q1 2009 – (Actualmente na Drop 10) Prism – Composite Client Application Guidance para WPF e Silverlight –Libraries –Reference Implementations (RI) –Documentação –Quick-Starts e How-Tos –Comunidade – CodePlex

6 File -> Open -> CWPF\Source\StockTraderRI\StockTraderRI.sln Abrir o Visual Studio In the box: Reference Implementation

7 Compor UI - Regiões Composite Application Guidance: Conceitos Bootstrapper DI/IoC Containers Módulos Shell e View Eventos e Comandos Bootstrapper DI/IoC Containers Módulos Shell e View Eventos e Comandos

8 Bootstrapper

9 Bootstrapper Responsável pela inicialização Fases: –Configuração –Regiões –Shell –Módulo

10 Container

11 Container CAL suporta vários DI Containers –IContainerFacade Implementação Unity –UnityContainerAdapter

12 Módulos

13 Módulos – O que são? Assemblies da aplicação –Colecção de componentes relacionados –Serviços, UI, Acesso a dados Unidade de desenvolvimento –Desenvolvimento independente –Testes independentes

14 Módulos - Carregamento ModuleLoader - Catalogo de Modulos Loading estático, por configuração, dinâmico Inicialização em background ou On-Demand Module Loader

15 Módulos Critérios de segmentação: –Funcionalidades específicas –Sub-sistemas –Serviços –Sistemas Line of Business Separação de equipas

16 Módulos – Loading estático public class MyBootstrapper : UnityBootstrapper {... protected override IModuleEnumerator GetModuleEnumerator() { return new StaticModuleEnumerator().AddModule(typeof(SomeModule)).AddModule(typeof(AnotherModule), "SomeModule").AddModule(typeof(YetAnotherModule), "AnotherModule","SomeModule"); } DependênciasDependências Module Type Localiza Módulos Retorna módulos Referenciados estáticamente Retorna módulos Referenciados estáticamente

17 Módulos - Inicialização public class SomeModule : IModule public SomeModule(SomeDependency myDependency) {...} public void Initialize() { RegisterViewsAndServices(); //Show views here; } Dependência injectada Lógica de Inicialização

18 Dividir uma aplicação em módulos por configuração demo

19 Módulos – Loading Dinâmico public class MyBootstrapper : UnityBootstrapper {... protected override IModuleEnumerator GetModuleEnumerator() { return new DirectoryLookupModuleEnumerator(@".\Modules"); } Hot folder

20 Loading dinâmico de módulos demo

21 Composição do UI

22 Regiões Shell – Janela Host da aplicação Regions – Áreas definidas para injecção de Views Views – UI e lógica de apresentação Region IPortfolioPresentationModel presentationModel = …; IRegion mainRegion = regionManager.Regions[ "MainRegion" ]; mainRegion.Add( presentationModel.View ); IPortfolioPresentationModel presentationModel = …; IRegion mainRegion = regionManager.Regions[ "MainRegion" ]; mainRegion.Add( presentationModel.View ); <ItemsControl RegionManager.RegionName= "MainRegion"> <ItemsControl RegionManager.RegionName= "MainRegion">

23 Regiões – Registo MyShell.xaml RegionName attached property Maior parte das vezes, Regions são ItemsControls <TabControl x:Name="OrderTab" ItemContainerStyle="..." CAL:RegionManager.RegionName="OrderRegion" />

24 Regiões – Exibição public class MyModule : IModule { public void Initialize (IRegionManager manager) { RegisterViewsAndServices(); IRegion orderRegion = manager.GetRegion("OrderRegion"); var myOrderView = new OrderView(myOrder); orderRegion.Add(myOrderView); } RegionManager é necessário Inicialização da View Obtenção da Região View é exibida

25 Regiões – Templating ("WPF way") public class MyModule : IModule { public void Initialize(IRegionManager manager) { RegisterViewsAndServices(); IRegion orderRegion = manager.GetRegion("OrderRegion"); orderRegion.Add(myOrder); } Objecto é adicionado directamente

26 Compondo o UI com Regions e Views demo

27 Commands

28 Commands SubmitSubmit OrderDetails SubmitSubmit SubmitSubmit Delegate Commands Composite Command Submit All

29 Commands - Binding <Button Name="SubmitAllToolbarButton" Command="{x:Static inf:Commands.SubmitOrdersCommand}"> Submit All </StackPanel Atribuir Command

30 public class OrderDetailsPresenter : IOrderDetailsPresenter { private ICommand orderSubmitCommand; public OrderDetailsPresenter(...) { orderSubmitCommand = … // Register the command Commands.SubmitOrdersCommand.RegisterCommand(orderSubmitCommand) ; } CompositeCommands - Registar Registar command como filho

31 Commands - Handling public class OrderDetailsPresenter : IOrderDetailsPresenter { private ICommand orderSubmitCommand; public OrderDetailsPresenter (IOrderDetailsView view, { orderSubmitCommand = new DelegateCommand(Submit, CanSubmit); // Register the command Commands.SubmitOrdersCommand.RegisterCommand(orderSubmitCommand); } public void Submit(object params) {...} public bool CanSubmit(object params) {...} } Tratar Execute e CanExecute

32 Usando Commands para lidar com eventos no UI demo

33 Events

34 Event Aggregation EventAggregatorServiceEventAggregatorService OrderReceivedOrderReceived OrderManagerOrderManager OrderListPresenterOrderListPresenter SubscreveSubscreve OrderModuleOrderModule OrderServiceOrderService PublicaPublica RecebeRecebe

35 Event Aggregation – O evento... public class OrderReceivedEvent : CompositeEvent > {} Separa publisher e subscriber

36 Event Aggregation – Subscrição... public class SomePresenter { public OrderListPresenter(IEventAggregator eventAggregator) { //subscribing to the event eventAggregator.GetEvent (). Subscribe(OnOrderReceived, ThreadOption.UIThread); } private void OnOrderReceived(Order order) {... } Contentor de eventos Obter o evento Subscrever o evento Referenciar o thread correcto

37 Event Aggregation – Subscrição... (2) public class SomePresenter { public OrderListPresenter(IEventAggregator eventAggregator) { // Subscrever evento eventAggregator.GetEvent (). Subscribe(OnOrderReceived, ThreadOption.UIThread, false, o=>o.Priority == Priority.High); ); } private void OnOrderReceived(Order order) {... } Manter subscriber activo Predicado de filtragem de eventos

38 Event Aggregation - Publicar public class OrderService : IOrderService { public OrderService(IEventAggregator eventAggregator) {...} private void OrderReceived(Order) { // Publicar EventAggregator.GetEvent (). Publish(Order); } Publicar o evento

39 Publicar e subscrever eventos demo

40 Patterns de Apresentação

41 Prism 1.0 –Supervising Controller –Presentation Model Prism 2.0 –Mais e melhores guias de Patterns –Model-View-ViewModel –Model Presentation State (Não estado de UI) –Thin Views – Data Templates –ViewModel Commands –ViewModel Attached Property PresenterPresenter ModelModel ViewView PresentationModelPresentationModel ModelModel ViewView

42 Onde encontrar? www.microsoft.com/compositewpf www.codeplex.com/compositewpf www.microsoft.com/compositewpf www.codeplex.com/compositewpf

43 Deixem-se envolver... www.codeplex.com/compositewpfcontrib

44

45 Q&A

46 Software em versão completa para avaliação Suporte técnico 24x7 para incidentes Acesso antecipado às versões beta Microsoft Office Software Assurance formação gratuita ….e muito mais. www.microsoft.com/portugal/msdn/subscricoes Subscrições MSDN

47 www.microsoft.com/learning/mcp/offers/secondshot Certificações Microsoft

48 MSDN Flash www.microsoft.com/portugal/msdn/msdnflash

49 www.microsoft.com/portugal/msdn/webcasts4share Participe nos próximos ciclos Traga Amigos a assistir e … …ganhe uma Xbox, trolleys e livros Webcasts

50 [BI] Resort GASP GetCertified GetVirtual Mundo Móvel PocketPT PontoNetPT UCed ScrumPT ZoomIn Espaço COMUNIDADES Um ponto de encontro especial !!!

51 Questionário A sua opinião é importante! Complete o questionário de avaliação e devolva-o no balcão da recepção.

52 Instituto Superior Técnico Campus do Taguspark


Carregar ppt "Composite Applicatin Guidance Para Windows Presentation Foundation Vasco Oliveira Team Leader, Microfil."

Apresentações semelhantes


Anúncios Google