Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouLucas Grego Alterado mais de 10 anos atrás
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
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.