1 / 33

User interface process application block

User interface process application block. Владимир Чалков CEO. За какво ще говорим. Потребителски интерфейс – проблеми и решения Приложение на User interface process AP Microsoft application blocks Демонстрация. Основни проблеми.

aisha
Download Presentation

User interface process application block

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. User interface process application block Владимир Чалков CEO

  2. За какво ще говорим • Потребителски интерфейс – проблеми и решения • Приложение на User interface process AP • Microsoft application blocks • Демонстрация

  3. Основни проблеми • Пълно отделяне на потребителския интерфейс от логиката и навигацията • Запазване на състоянието между различни компоненти и процеси • Използване на един и същи модел в различни типове приложения • Създаване на “reusable” компоненти за потребителски интерфейс

  4. Типично поведение при Event-driven технологии (1/2) • Навигацията се дефинира в OnClick събития • Всяка форма знае към коя е следващата • Навигацията е пръсната из целия код • Запазването на състоянието е пръснато из целия код

  5. Типично поведение при Event-driven технологии(2/2) OnClick OnDoubleClick

  6. Model-view-controller • Model • Управлява и обработва данните в приложението • View • Управлява визуализацията • Controller • Управлява взаимодействието на потребителя с приложението

  7. Application blocks • Показват как архитектурно се подхожда към някои типични проблеми • Разпространяват се заедно със изходния код и могат да се използват като основа • Някои блокове: • Data access application block • Offline application block • Configuration management application block • User interface process application block

  8. User interface process block • Цели: • “Развързване” на потребителския интерфейс и навигацията • Управление на състояниетомежду различните компоненти и процеси • Независим от платформата модел за Windows, Web имобилни приложения • Компоненти, които могат да се използват между проекти

  9. Основни функции (1/2) • Реализация на MVC • Поддръжка на Windows и Web приложения • Възможност за прехвърляне на сесията между различни приложения • Използване на един и същи код между различните типове приложения

  10. Основни функции (2/2) • State persistence providers • Трансфер на Web сесии • Layout мениджъри

  11. Основни термини • Navigation graph • Navigator • State persistence provider • Task • Controller

  12. Controller класа • Отговаря за общия контрол на потребителския интерфейс • Съдържа методи за навигация, които формите извикват • Осигурява връзката с бизнес компонентите • Осигурява съхраняване на състоянието използвайки избрания подход

  13. Навигатори • GraphNavigator • Предварително дефиниран граф от възможните интерфейсти • OpenNavigator • Определяне на навигацията без предварително дефиниране • UserControlsNavigator • Навигация в рамките на една форма • WizardNavigator • Реализация на типичния “Wizard” интерфейс

  14. Запазване на състоянието • Проблеми • Състоянието на един потребителски процес или задача трябва да може да се съхранява • Състоянието трябва да може да се съхранява и в дългосрочни носители • Трябва да има нотификация, когато състоянието се е променило

  15. Persistence providers • IsolatedStoragePersistence • SecureIsolatedStoragePersistence • SqlServerPersistState • SecureSqlServerPersistState • SessionStatePersistence • MemoryStatePersistence

  16. Избор на persistence provider

  17. Общата картина

  18. A user interface process frmMain start end previous frmList frmPerson next

  19. Начин на използване (1/2) • Дефинират се всички процеси на потребителския интерфейс • Дефинират се формите, които ще се показват • Променя се класа, който формите наследяват

  20. Начин на използване (2/2) • Създава се Controller клас • Избира се подходящия навигатор • Създава се конфигурационен файл, който описва процесите

  21. Промени по формите public class frmPerson : WindowsFormView { …. private void frmPerson_Load(object sender, EventArgs e) { this.txtFirst.Text = TypeSafeController.CurrentPerson.Firstname; this.txtLast.Text = TypeSafeController.CurrentPerson.Lastname;

  22. Controller класа (1/2) public class MyController : ControllerBase { public ArrayList PersonList; public Person CurrentPerson { get { return (Person)this.Navigator.CurrentState["CurrentPerson"]; } set { this.Navigator.CurrentState["CurrentPerson"]=value; } }

  23. Controller класа (2/2) public void frmListNewButton() { State.NavigateValue = "next"; Navigate(); } public void frmPersonEndButton() { State.NavigateValue = "previous"; Navigate(); }

  24. Конфигурационен файл (1/3) <navigationGraph name="MainNavigation" startView=“frmMain" state="State" statePersist="IsolatedStoragePersistence" iViewManager="WindowsFormViewManager"> <node view='frmList'> <navigateTo navigateValue="next" view='frmPerson' /> <navigateTo navigateValue="end" view=‘frmMain' /> </node> <node view='frmPerson'> <navigateTo navigateValue="previous“ view='frmList' /> </node> <node view='Form1'> <navigateTo navigateValue="Start" view='frmList' /> </node> </navigationGraph>

  25. Конфигурационен файл (2/3) <objectTypes> <iViewManager name="WindowsFormViewManager" type="Microsoft.ApplicationBlocks.UIProcess.WindowsFormViewManager, Microsoft.ApplicationBlocks.UIProcess, Version=1.0.1.0,Culture=neutral,PublicKeyToken=null" /> <state name="State" type="Microsoft.ApplicationBlocks.UIProcess.State, Microsoft.ApplicationBlocks.UIProcess, Version=1.0.1.0,Culture=neutral,PublicKeyToken=null" /> <controller name="MyController" type="Crossroad.UIPAB.Common.MyController, Crossroad.UIPAB.Common, Version=1.0.1.5,Culture=neutral,PublicKeyToken=null" /> <statePersistenceProvider name="IsolatedStoragePersistence" type="Microsoft.ApplicationBlocks.UIProcess.IsolatedStoragePersistence, Microsoft.ApplicationBlocks.UIProcess, Version=1.0.1.0,Culture=neutral,PublicKeyToken=null" /> </objectTypes>

  26. Конфигурационен файл (3/3) <views> <view name="frmPerson" type="Crossroad.UIPAB.UI.frmPerson, Crossroad.UIPAB.UI, Version=1.0.1.5,Culture=neutral,PublicKeyToken=null" controller="MyController" stayOpen="false" openModal="true" /> <view name="frmList" type="Crossroad.UIPAB.UI.frmList, Crossroad.UIPAB.UI, Version=1.0.1.5,Culture=neutral,PublicKeyToken=null" controller="MyController" stayOpen="false" openModal="false" /> <view name="frmMain" type="Crossroad.UIPAB.UI.frmMain, Crossroad.UIPAB.UI, Version=1.0.1.5,Culture=neutral,PublicKeyToken=null" controller="MyController" stayOpen="false" openModal="false" /> </views>

  27. Стартиране на процеса { UIPManager.NavigateEvent+=newMicrosoft.ApplicationBl ocks.UIProcess.UIPManager.NavigateEventHandler(UIPM anager_NavigateEvent); UIPManager.RegisterShutdown(this); UIPManager.StartNavigationTask("MainNavigation"); this.Hide();

  28. Навигация във формите private void PersonsList_DoubleClick(object sender, System.EventArgs e) { if (PersonsList.SelectedIndices.Count>0) { TypeSafeController.CurrentPerson=(Person)TypeSafeController.PersonList[PersonsList.SelectedIndices[0]]; TypeSafeController.frmListEdit(); } }

  29. Демонстрация

  30. Други възможности • ILayoutManager • Възможност за т.н. Layout Manager • Кодиране на състоянието

  31. Обобщение • Реализира MVC шаблона • Позволява отделяне на навигацията и данните от потребителския интерфейс • Предоставя стандартен подход за съхраняване на състоянието • Архитектурен подход, който трябва да се прецени кога е подходящ

  32. Връзки • http://www.microsoft.com/patterns • http://msdn.microsoft.com • http://www.gotdotnet.com • News://microsoft.public.bg.developer • Сървър: news.micrsoft.com

  33. Q & A

More Related