user interface process application block

33
User interface User interface process process application block application block Владимир Чалков Владимир Чалков CEO CEO

Upload: aisha

Post on 14-Jan-2016

64 views

Category:

Documents


1 download

DESCRIPTION

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

TRANSCRIPT

Page 1: User interface process application block

User interface User interface process application process application

blockblock

Владимир ЧалковВладимир ЧалковCEOCEO

Page 2: User interface process application block

За какво ще говоримЗа какво ще говорим

Потребителски интерфейс – Потребителски интерфейс – проблеми и решенияпроблеми и решения

Приложение на Приложение на User interface User interface process APprocess AP

Microsoft application blocksMicrosoft application blocks ДемонстрацияДемонстрация

Page 3: User interface process application block

Основни проблемиОсновни проблеми

Пълно отделяне на потребителския Пълно отделяне на потребителския интерфейс от логиката и навигациятаинтерфейс от логиката и навигацията

Запазване на състоянието между Запазване на състоянието между различни компоненти и процесиразлични компоненти и процеси

Използване на един и същи модел в Използване на един и същи модел в различни типове приложенияразлични типове приложения

Създаване на “Създаване на “reusable” reusable” компоненти компоненти за потребителски интерфейсза потребителски интерфейс

Page 4: User interface process application block

Типично поведение при Типично поведение при Event-driven Event-driven технологиитехнологии

(1/2)(1/2) Навигацията се дефинира в Навигацията се дефинира в

OnClick OnClick събитиясъбития Всяка форма знае към коя е Всяка форма знае към коя е

следващатаследващата Навигацията е пръсната из целия Навигацията е пръсната из целия

кодкод Запазването на състоянието е Запазването на състоянието е

пръснато из целия кодпръснато из целия код

Page 5: User interface process application block

Типично поведение при Типично поведение при Event-driven Event-driven

технологиитехнологии(2/2)(2/2)

OnClickOnClick

OnDoubleClickOnDoubleClick

Page 6: User interface process application block

Model-view-controllerModel-view-controller

ModelModel Управлява и обработва Управлява и обработва

данните в приложениетоданните в приложението ViewView

Управлява визуализациятаУправлява визуализацията ControllerController

Управлява Управлява взаимодействието на взаимодействието на потребителя с потребителя с приложениетоприложението

Page 7: User interface process application block

Application blocksApplication blocks Показват как архитектурно се Показват как архитектурно се

подхожда към някои типични проблемиподхожда към някои типични проблеми Разпространяват се заедно със Разпространяват се заедно със

изходния код и могат да се използват изходния код и могат да се използват като основакато основа

Някои блокове:Някои блокове: Data access application blockData access application block Offline application blockOffline application block Configuration management application blockConfiguration management application block User interface process application blockUser interface process application block

Page 8: User interface process application block

User interface process User interface process blockblock

ЦелиЦели:: ““Развързване” на потребителския Развързване” на потребителския

интерфейс и навигациятаинтерфейс и навигацията Управление на състояниетоУправление на състоянието между между

различните компоненти и процесиразличните компоненти и процеси Независим от платформата модел за Независим от платформата модел за

Windows, Web Windows, Web ии мобилни приложениямобилни приложения Компоненти, които могат да се Компоненти, които могат да се

използват между проектиизползват между проекти

Page 9: User interface process application block

Основни функции (1/2)Основни функции (1/2)

Реализация на Реализация на MVCMVC Поддръжка на Поддръжка на Windows Windows и и Web Web

приложенияприложения Възможност за прехвърляне на Възможност за прехвърляне на

сесията между различни сесията между различни приложенияприложения

Използване на един и същи код Използване на един и същи код между различните типове между различните типове приложенияприложения

Page 10: User interface process application block

Основни функции (2/2)Основни функции (2/2)

State persistence providersState persistence providers Трансфер на Трансфер на Web Web сесиисесии Layout Layout мениджъримениджъри

Page 11: User interface process application block

Основни терминиОсновни термини

Navigation graphNavigation graph NavigatorNavigator State persistence providerState persistence provider TaskTask ControllerController

Page 12: User interface process application block

Controller Controller класакласа

Отговаря за общия контрол на Отговаря за общия контрол на потребителския интерфейспотребителския интерфейс

Съдържа методи за навигация, Съдържа методи за навигация, които формите извикваткоито формите извикват

Осигурява връзката с бизнес Осигурява връзката с бизнес компонентитекомпонентите

Осигурява съхраняване на Осигурява съхраняване на състоянието използвайки избрания състоянието използвайки избрания подходподход

Page 13: User interface process application block

НавигаториНавигатори GraphNavigatorGraphNavigator

Предварително дефиниран граф от Предварително дефиниран граф от възможните интерфейстивъзможните интерфейсти

OpenNavigatorOpenNavigator Определяне на навигацията без Определяне на навигацията без

предварително дефиниранепредварително дефиниране UserControlsNavigatorUserControlsNavigator

Навигация в рамките на една формаНавигация в рамките на една форма WizardNavigatorWizardNavigator

Реализация на типичния Реализация на типичния “Wizard” “Wizard” интерфейсинтерфейс

Page 14: User interface process application block

Запазване на Запазване на състояниетосъстоянието

ПроблемиПроблеми Състоянието на един потребителски Състоянието на един потребителски

процес или задача трябва да може да процес или задача трябва да може да се съхранявасе съхранява

Състоянието трябва да може да се Състоянието трябва да може да се съхранява и в дългосрочни носителисъхранява и в дългосрочни носители

Трябва да има нотификация, когато Трябва да има нотификация, когато състоянието се е променилосъстоянието се е променило

Page 15: User interface process application block

Persistence providersPersistence providers

IsolatedStoragePersistenceIsolatedStoragePersistence SecureIsolatedStoragePersistencSecureIsolatedStoragePersistenc

ee SqlServerPersistStateSqlServerPersistState SecureSqlServerPersistStateSecureSqlServerPersistState SessionStatePersistenceSessionStatePersistence MemoryStatePersistenceMemoryStatePersistence

Page 16: User interface process application block

Избор на Избор на persistence persistence providerprovider

Page 17: User interface process application block

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

Дотъп до данните

Бизнес логика

WebFormView

ASP.NET страници

WebFormView

ASP.NET страници

WebFormView

ASP.NET страници

WinFormView

Windows Form

Вашия controller class

ASP.NET страници

WebFormView

ControllerBase

Data

XML файл

ASP.NET странициPersistence Provider

Вашия controller class

ASP.NET страници

State

Ваше състояние

ASP.NET странициUIP Manager

ASP.NET странициКонфигурация

ASP.NET странициView Manager

Page 18: User interface process application block

A user interface processA user interface process

frmListfrmList

frmMainfrmMain

frmPersonfrmPerson

start

end

previous

next

Page 19: User interface process application block

Начин на използване Начин на използване (1/2)(1/2)

Дефинират се всички процеси на Дефинират се всички процеси на потребителския интерфейспотребителския интерфейс

Дефинират се формите, които ще Дефинират се формите, които ще се показватсе показват

Променя се класа, който формите Променя се класа, който формите наследяватнаследяват

Page 20: User interface process application block

Начин на използване Начин на използване (2/2)(2/2)

Създава се Създава се Controller Controller класклас Избира се подходящия навигаторИзбира се подходящия навигатор Създава се конфигурационен Създава се конфигурационен

файл, който описва процеситефайл, който описва процесите

Page 21: User interface process application block

Промени по формитеПромени по формите

public class frmPerson : WindowsFormViewpublic class frmPerson : WindowsFormView{{

……..

private void frmPerson_Load(object sender, private void frmPerson_Load(object sender, EventArgs e)EventArgs e)

{{

this.txtFirst.Text = this.txtFirst.Text = TypeSafeController.CurrentPerson.Firstname;TypeSafeController.CurrentPerson.Firstname;

this.txtLast.Text = this.txtLast.Text = TypeSafeController.CurrentPerson.Lastname;TypeSafeController.CurrentPerson.Lastname;

Page 22: User interface process application block

Controller Controller класа (1/2)класа (1/2)public class MyController : ControllerBasepublic class MyController : ControllerBase{{

public ArrayList PersonList;public ArrayList PersonList;public Person CurrentPersonpublic Person CurrentPerson{{

getget{{

return return (Person)this.Navigator.CurrentState["CurrentPerson"];(Person)this.Navigator.CurrentState["CurrentPerson"];

}}setset{{

this.Navigator.CurrentState["CurrentPerson"]=value;this.Navigator.CurrentState["CurrentPerson"]=value;}}

}}

Page 23: User interface process application block

Controller Controller класа (2/2)класа (2/2)

public void frmListNewButton()public void frmListNewButton(){{

State.NavigateValue = "next";State.NavigateValue = "next";Navigate();Navigate();

}}

public void frmPersonEndButton()public void frmPersonEndButton(){{

State.NavigateValue = "previous";State.NavigateValue = "previous";Navigate();Navigate();

}}

Page 24: User interface process application block

Конфигурационен файл Конфигурационен файл (1/3)(1/3)

<navigationGraph name="MainNavigation" startView=“<navigationGraph name="MainNavigation" startView=“frmMainfrmMain" " state="State" statePersist="IsolatedStoragePersistence"state="State" statePersist="IsolatedStoragePersistence"iViewManager="WindowsFormViewManager">iViewManager="WindowsFormViewManager"><node view='frmList'><node view='frmList'><navigateTo navigateValue="next" view='frmPerson' /><navigateTo navigateValue="next" view='frmPerson' /><navigateTo navigateValue="end" view=<navigateTo navigateValue="end" view=‘frmMain‘frmMain' />' /></node></node><node view='frmPerson'><node view='frmPerson'><navigateTo navigateValue="previous“ view='frmList' /><navigateTo navigateValue="previous“ view='frmList' /></node></node><node view='Form1'><node view='Form1'><navigateTo navigateValue="Start" view='frmList' /><navigateTo navigateValue="Start" view='frmList' /></node></node>

</navigationGraph></navigationGraph>

Page 25: User interface process application block

Конфигурационен файл Конфигурационен файл (2/3)(2/3)

<<objectTypesobjectTypes>><<iViewManageriViewManager name="WindowsFormViewManager" name="WindowsFormViewManager"

type="Microsoft.ApplicationBlocks.UIProcess.WindowsFormViewMatype="Microsoft.ApplicationBlocks.UIProcess.WindowsFormViewManager, Microsoft.ApplicationBlocks.UIProcess, nager, Microsoft.ApplicationBlocks.UIProcess,

Version=1.0.1.0,Culture=neutral,PublicKeyToken=null" Version=1.0.1.0,Culture=neutral,PublicKeyToken=null" />/><<statestate name="State" name="State"

type="Microsoft.ApplicationBlocks.UIProcess.State, type="Microsoft.ApplicationBlocks.UIProcess.State, Microsoft.ApplicationBlocks.UIProcess, Microsoft.ApplicationBlocks.UIProcess, Version=1.0.1.0,Culture=neutral,PublicKeyToken=null" />Version=1.0.1.0,Culture=neutral,PublicKeyToken=null" />

<<controllercontroller name="MyController" name="MyController" type="Crossroad.UIPAB.Common.MyController, type="Crossroad.UIPAB.Common.MyController, Crossroad.UIPAB.Common, Crossroad.UIPAB.Common, Version=1.0.1.5,Culture=neutral,PublicKeyToken=null" />Version=1.0.1.5,Culture=neutral,PublicKeyToken=null" />

<<statePersistenceProviderstatePersistenceProvider name="IsolatedStoragePersistence" name="IsolatedStoragePersistence"

type="Microsoft.ApplicationBlocks.UIProcess.IsolatedStoragePetype="Microsoft.ApplicationBlocks.UIProcess.IsolatedStoragePersistence, rsistence, Microsoft.ApplicationBlocks.UIProcess, Microsoft.ApplicationBlocks.UIProcess, Version=1.0.1.0,Culture=neutral,PublicKeyToken=null" />Version=1.0.1.0,Culture=neutral,PublicKeyToken=null" />

</</objectTypesobjectTypes>>

Page 26: User interface process application block

Конфигурационен файл Конфигурационен файл (3/3)(3/3)

<<viewsviews>><<viewview name="frmPerson" type="Crossroad.UIPAB.UI.frmPerson, name="frmPerson" type="Crossroad.UIPAB.UI.frmPerson, Crossroad.UIPAB.UI, Crossroad.UIPAB.UI, Version=1.0.1.5,Culture=neutral,PublicKeyToken=null"Version=1.0.1.5,Culture=neutral,PublicKeyToken=null"

controller="MyController" stayOpen="false" controller="MyController" stayOpen="false" openModal="true" />openModal="true" /><<viewview name="frmList" type="Crossroad.UIPAB.UI.frmList, name="frmList" type="Crossroad.UIPAB.UI.frmList, Crossroad.UIPAB.UI, Crossroad.UIPAB.UI, Version=1.0.1.5,Culture=neutral,PublicKeyToken=null"Version=1.0.1.5,Culture=neutral,PublicKeyToken=null"

controller="MyController" stayOpen="false" controller="MyController" stayOpen="false" openModal="false" />openModal="false" /><<viewview name="frmMain" type="Crossroad.UIPAB.UI.frmMain, name="frmMain" type="Crossroad.UIPAB.UI.frmMain, Crossroad.UIPAB.UI, Crossroad.UIPAB.UI, Version=1.0.1.5,Culture=neutral,PublicKeyToken=null"Version=1.0.1.5,Culture=neutral,PublicKeyToken=null"

controller="MyController" stayOpen="false" controller="MyController" stayOpen="false" openModal="false" />openModal="false" />

</</viewsviews>>

Page 27: User interface process application block

Стартиране на процесаСтартиране на процеса

{{

UIPManager.NavigateEvent+=newMicrosoft.ApplicationUIPManager.NavigateEvent+=newMicrosoft.ApplicationBlBlocks.UIProcess.UIPManager.NavigateEventHandler(UIPocks.UIProcess.UIPManager.NavigateEventHandler(UIPMM anager_NavigateEvent);anager_NavigateEvent);

UIPManager.RegisterShutdown(this);UIPManager.RegisterShutdown(this);

UIPManager.StartNavigationTask("MainNavigation");UIPManager.StartNavigationTask("MainNavigation");this.Hide();this.Hide();

Page 28: User interface process application block

Навигация във Навигация във формитеформите

private void PersonsList_DoubleClick(object private void PersonsList_DoubleClick(object sender, System.EventArgs e)sender, System.EventArgs e)

{{

if (PersonsList.SelectedIndices.Count>0)if (PersonsList.SelectedIndices.Count>0)

{{

TypeSafeController.CurrentPerson=(Person)TyTypeSafeController.CurrentPerson=(Person)TypeSafeController.PersonList[PersonsList.SpeSafeController.PersonList[PersonsList.SelectedIndices[0]];electedIndices[0]];

TypeSafeController.frmListEdit();TypeSafeController.frmListEdit();

}}

}}

Page 29: User interface process application block

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

Page 30: User interface process application block

Други възможностиДруги възможности

ILayoutManagerILayoutManager Възможност за т.н. Възможност за т.н. Layout ManagerLayout Manager

Кодиране на състояниетоКодиране на състоянието

Page 31: User interface process application block

ОбобщениеОбобщение

Реализира Реализира MVC MVC шаблонашаблона Позволява отделяне на навигацията Позволява отделяне на навигацията

и данните от потребителския и данните от потребителския интерфейсинтерфейс

Предоставя стандартен подход за Предоставя стандартен подход за съхраняване на състояниетосъхраняване на състоянието

Архитектурен подход, който трябва Архитектурен подход, който трябва да се прецени кога е подходящда се прецени кога е подходящ

Page 32: User interface process application block

ВръзкиВръзки

http://www.microsoft.com/patternshttp://www.microsoft.com/patterns http://msdn.microsoft.comhttp://msdn.microsoft.com http://www.gotdotnet.comhttp://www.gotdotnet.com News://News://

microsoft.public.bg.developermicrosoft.public.bg.developer Сървър: Сървър: news.micrsoft.comnews.micrsoft.com

Page 33: User interface process application block

Q & AQ & A