1 / 52

Composite Applicatin Guidance

Composite Applicatin Guidance. P ara Windows Presentation Foundation. Vasco Oliveira. Team Leader, Microfil. Agenda. O que é o Prism? Modularidade Composição UI Padrões de Apresentação Referências. Prism – Porquê?. Problemáticas: Aplicações cliente são um desafio

licia
Download Presentation

Composite Applicatin Guidance

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. 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

  4. Prism – "What's in the box"? • Prism 1.0 – WPF • LançadoemJulho de 2008 • Prism 2.0 – WPF e Silverlight • Q1 2009 – (Actualmentena Drop 10) • Prism – Composite Client Application Guidance para WPF e Silverlight • Libraries • Reference Implementations (RI) • Documentação • Quick-Starts e How-To’s • Comunidade – CodePlex

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

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

  7. Bootstrapper

  8. Bootstrapper • Responsável pela inicialização • Fases: • Configuração • Regiões • Shell • Módulo

  9. Container

  10. Container • CAL suporta vários DI Containers • IContainerFacade • Implementação Unity • UnityContainerAdapter

  11. Módulos

  12. Módulos – O que são? • Assemblies daaplicação • Colecção de componentesrelacionados • Serviços, UI, Acesso a dados • Unidade de desenvolvimento • Desenvolvimentoindependente • Testes independentes

  13. Módulos - Carregamento • ModuleLoader - Catalogo de Modulos • Loading estático, porconfiguração, dinâmico • Inicializaçãoem background ou On-Demand Module Loader

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

  15. Módulos –Loading estático public class MyBootstrapper : UnityBootstrapper { ... protected override IModuleEnumeratorGetModuleEnumerator() { return new StaticModuleEnumerator() .AddModule(typeof(SomeModule)) .AddModule(typeof(AnotherModule), "SomeModule") .AddModule(typeof(YetAnotherModule), "AnotherModule","SomeModule"); } } LocalizaMódulos Retornamódulos Referenciadosestáticamente Module Type Dependências

  16. Módulos - Inicialização public class SomeModule : IModule public SomeModule(SomeDependencymyDependency) {...} public void Initialize() { RegisterViewsAndServices(); //Show views here; } } Dependênciainjectada Lógica de Inicialização

  17. demo Dividirumaaplicaçãoemmódulosporconfiguração

  18. Módulos –Loading Dinâmico public class MyBootstrapper : UnityBootstrapper { ... protected override IModuleEnumeratorGetModuleEnumerator() { • return new DirectoryLookupModuleEnumerator(@".\Modules"); } } “Hot folder”

  19. demo Loadingdinâmico de módulos

  20. Composição do UI

  21. Regiões • Shell – Janela “Host” daaplicação • Regions – Áreasdefinidasparainjecção de Views • Views – UI e lógica de apresentação IPortfolioPresentationModelpresentationModel = …; IRegionmainRegion =regionManager.Regions[ "MainRegion"]; mainRegion.Add( presentationModel.View ); <ItemsControl RegionManager.RegionName= "MainRegion"> Region <ContentControlRegionManager.RegionName= “DetailsRegion” /> Region Region

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

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

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

  25. demo Compondo o UI com Regions e Views

  26. Commands

  27. Commands Composite Command Submit All OrderDetails OrderDetails OrderDetails Submit Submit Submit Delegate Commands

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

  29. CompositeCommands - Registar public class OrderDetailsPresenter : IOrderDetailsPresenter { private ICommandorderSubmitCommand; public OrderDetailsPresenter(...) { orderSubmitCommand = … // Register the command Commands.SubmitOrdersCommand.RegisterCommand(orderSubmitCommand); } } Registar command comofilho

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

  31. demo Usando Commands paralidar com eventos no UI

  32. Events

  33. Event Aggregation EventAggregator Service OrderReceived Recebe Publica Subscreve OrderModule OrderManager OrderService OrderListPresenter

  34. Event Aggregation – O evento... public class OrderReceivedEvent : CompositeEvent<Order>> {} Separapublisher e subscriber

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

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

  37. Event Aggregation - Publicar public class OrderService : IOrderService { public OrderService(IEventAggregatoreventAggregator) {...} private void OrderReceived(Order) { // Publicar EventAggregator.GetEvent<OrderReceivedEvent>(). Publish(Order); } } Publicar o evento

  38. demo Publicar e subscrevereventos

  39. Patterns de Apresentação

  40. Patterns de Apresentação • Prism 1.0 • Supervising Controller • Presentation Model • Prism 2.0 • Mais e melhoresguias de Patterns • “Model-View-ViewModel” • Model Presentation State (Nãoestado de UI) • Thin Views – Data Templates • ViewModel Commands • ViewModel Attached Property View Presenter Model View Presentation Model Model

  41. Onde encontrar? • www.microsoft.com/compositewpf • www.codeplex.com/compositewpf

  42. Deixem-se envolver... • www.codeplex.com/compositewpfcontrib

  43. Patrocinadores

  44. Q&A

  45. SubscriçõesMSDN • 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

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

  47. Subscreva a MSDN Flash • Convide Amigos a seguirem o seu exemplo… • … e ganhe livros!! MSDN Flash www.microsoft.com/portugal/msdn/msdnflash

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

  49. [BI] Resort • GASP • GetCertified GetVirtual Mundo Móvel PocketPT PontoNetPT • UC’ed ScrumPT ZoomIn Espaço COMUNIDADES Um ponto de encontro especial !!!

More Related