Download - FABRIQ - Short - Svetlin Nakov
FABRIQ –FABRIQ – архитектура за архитектура за високопроизводителни високопроизводителни
разпределени изчисления,разпределени изчисления,базирана на съобщениябазирана на съобщения
Светлин НаковСветлин Наков
www.devbg.orgwww.devbg.org
СъдържаниеСъдържаниеСъдържаниеСъдържание
• Web-услуги, WSE, SOA и IndigoWeb-услуги, WSE, SOA и Indigo
• Мрежи от опашкиМрежи от опашки
• Продуктът FABRIQПродуктът FABRIQ• СъобщенияСъобщения
• Обработчици на съобщенияОбработчици на съобщения
• Поточни линии (pipelines)Поточни линии (pipelines)
• Действия и договориДействия и договори
• АдресацияАдресация
• Хостинг на възлитеХостинг на възлите
• СигурностСигурност
• Архитектурни перспективи пред FABRIQАрхитектурни перспективи пред FABRIQ
• Web-услуги, WSE, SOA и IndigoWeb-услуги, WSE, SOA и Indigo
• Мрежи от опашкиМрежи от опашки
• Продуктът FABRIQПродуктът FABRIQ• СъобщенияСъобщения
• Обработчици на съобщенияОбработчици на съобщения
• Поточни линии (pipelines)Поточни линии (pipelines)
• Действия и договориДействия и договори
• АдресацияАдресация
• Хостинг на възлитеХостинг на възлите
• СигурностСигурност
• Архитектурни перспективи пред FABRIQАрхитектурни перспективи пред FABRIQ
Какво е услуга?Какво е услуга?Какво е услуга?Какво е услуга?
• В реалния свят услугата е:В реалния свят услугата е:
• единица работа, извършвана от единица работа, извършвана от доставчик на услугидоставчик на услуги
• предоставя някакъв желан резултат на предоставя някакъв желан резултат на клиента (консуматор на услуги)клиента (консуматор на услуги)
• с ясно дефинирани входни параметри и с ясно дефинирани входни параметри и изходни резултатиизходни резултати
• лесна за използванелесна за използване
• винаги достъпнавинаги достъпна
• има характеристики за качество (цена, има характеристики за качество (цена, време за извършване, ефективноствреме за извършване, ефективност и т.н.)и т.н.)
• В реалния свят услугата е:В реалния свят услугата е:
• единица работа, извършвана от единица работа, извършвана от доставчик на услугидоставчик на услуги
• предоставя някакъв желан резултат на предоставя някакъв желан резултат на клиента (консуматор на услуги)клиента (консуматор на услуги)
• с ясно дефинирани входни параметри и с ясно дефинирани входни параметри и изходни резултатиизходни резултати
• лесна за използванелесна за използване
• винаги достъпнавинаги достъпна
• има характеристики за качество (цена, има характеристики за качество (цена, време за извършване, ефективноствреме за извършване, ефективност и т.н.)и т.н.)
Web-Web-услугиуслугиWeb-Web-услугиуслуги
• Web-Web-услугите моделират услугите от услугите моделират услугите от реалния святреалния свят
• програмни компоненти, достъпни програмни компоненти, достъпни отдалечено през отдалечено през WebWeb
• модел за изпълнение “заявка-отговор”модел за изпълнение “заявка-отговор”• клиентът поръчва, услугата изпълнява клиентът поръчва, услугата изпълнява
поръчката и връща резултатпоръчката и връща резултат• използват отворени стандарти за използват отворени стандарти за
комуникация – комуникация – HTTP, XML HTTP, XML ии SOAP SOAP• сами описват интерфейса си за достъп сами описват интерфейса си за достъп
чрез езика чрез езика WSDLWSDL• могат да бъдат търсени чрез могат да бъдат търсени чрез UDDIUDDI
• Web-Web-услугите моделират услугите от услугите моделират услугите от реалния святреалния свят
• програмни компоненти, достъпни програмни компоненти, достъпни отдалечено през отдалечено през WebWeb
• модел за изпълнение “заявка-отговор”модел за изпълнение “заявка-отговор”• клиентът поръчва, услугата изпълнява клиентът поръчва, услугата изпълнява
поръчката и връща резултатпоръчката и връща резултат• използват отворени стандарти за използват отворени стандарти за
комуникация – комуникация – HTTP, XML HTTP, XML ии SOAP SOAP• сами описват интерфейса си за достъп сами описват интерфейса си за достъп
чрез езика чрез езика WSDLWSDL• могат да бъдат търсени чрез могат да бъдат търсени чрез UDDIUDDI
Web-Web-услугиуслугиWeb-Web-услугиуслуги
• Web-Web-услугите моделират услугите от услугите моделират услугите от реалния святреалния свят
• работят на принципа на обмяна на работят на принципа на обмяна на SOAP SOAP съобщениясъобщения
• съобщенията съдържат структурирана съобщенията съдържат структурирана информация – данни + метаданни информация – данни + метаданни (описание на данните)(описание на данните)
• независими от операционната система, независими от операционната система, платформата и езика за програмиранеплатформата и езика за програмиране
• функционално-независимифункционално-независими, , слабо-слабо-обвързани с клиентаобвързани с клиента
• Web-Web-услугите моделират услугите от услугите моделират услугите от реалния святреалния свят
• работят на принципа на обмяна на работят на принципа на обмяна на SOAP SOAP съобщениясъобщения
• съобщенията съдържат структурирана съобщенията съдържат структурирана информация – данни + метаданни информация – данни + метаданни (описание на данните)(описание на данните)
• независими от операционната система, независими от операционната система, платформата и езика за програмиранеплатформата и езика за програмиране
• функционално-независимифункционално-независими, , слабо-слабо-обвързани с клиентаобвързани с клиента
WSEWSEWSEWSE
• WSE = Web Services Enhancements = WSE = Web Services Enhancements = разширения разширения на на Web-Web-услугитеуслугите
• WSWS-*-* спецификациите са разширенията на спецификациите са разширенията на стандартите за стандартите за Web-Web-услугиуслуги• отворени стандартиотворени стандарти• дефинирани от организациите дефинирани от организациите OASISOASIS и и W3CW3C
• WSE WSE е имплементация на е имплементация на WS-* WS-* стандартите стандартите за за .NET Framework.NET Framework
• WS-AddressingWS-Addressing – стандарт за адресация на услуги – стандарт за адресация на услуги и съобщенияи съобщения
• WS-SecurityWS-Security – осигурява сигурност при – осигурява сигурност при WebWeb--услугите (автентикация, кодиране, подписване)услугите (автентикация, кодиране, подписване)
• WS-PolicyWS-Policy – позволява задаване на изисквания – позволява задаване на изисквания при обмяната на съобщенияпри обмяната на съобщения
• WSE = Web Services Enhancements = WSE = Web Services Enhancements = разширения разширения на на Web-Web-услугитеуслугите
• WSWS-*-* спецификациите са разширенията на спецификациите са разширенията на стандартите за стандартите за Web-Web-услугиуслуги• отворени стандартиотворени стандарти• дефинирани от организациите дефинирани от организациите OASISOASIS и и W3CW3C
• WSE WSE е имплементация на е имплементация на WS-* WS-* стандартите стандартите за за .NET Framework.NET Framework
• WS-AddressingWS-Addressing – стандарт за адресация на услуги – стандарт за адресация на услуги и съобщенияи съобщения
• WS-SecurityWS-Security – осигурява сигурност при – осигурява сигурност при WebWeb--услугите (автентикация, кодиране, подписване)услугите (автентикация, кодиране, подписване)
• WS-PolicyWS-Policy – позволява задаване на изисквания – позволява задаване на изисквания при обмяната на съобщенияпри обмяната на съобщения
SOASOASOASOA
• SOA SOA == Service Service Oriented ArchitectureOriented Architecture = = архитектура, базирана на услугиархитектура, базирана на услуги
• Подход за реализация на разпределени Подход за реализация на разпределени приложения, при койтоприложения, при който• софтуерните компоненти са достъпни софтуерните компоненти са достъпни
като услугикато услуги
• компонентите (услугите) комуникират компонентите (услугите) комуникират чрез стандартни протоколичрез стандартни протоколи
• услугите са слабо-свързани (имат услугите са слабо-свързани (имат минимално количество взаимовръзки)минимално количество взаимовръзки)
• услугите могат да бъдат използвани в услугите могат да бъдат използвани в контекст, неизвестен по време на дизайнаконтекст, неизвестен по време на дизайна
• SOA SOA == Service Service Oriented ArchitectureOriented Architecture = = архитектура, базирана на услугиархитектура, базирана на услуги
• Подход за реализация на разпределени Подход за реализация на разпределени приложения, при койтоприложения, при който• софтуерните компоненти са достъпни софтуерните компоненти са достъпни
като услугикато услуги
• компонентите (услугите) комуникират компонентите (услугите) комуникират чрез стандартни протоколичрез стандартни протоколи
• услугите са слабо-свързани (имат услугите са слабо-свързани (имат минимално количество взаимовръзки)минимално количество взаимовръзки)
• услугите могат да бъдат използвани в услугите могат да бъдат използвани в контекст, неизвестен по време на дизайнаконтекст, неизвестен по време на дизайна
SOASOASOASOA
• При архитектурата, базирана на услугиПри архитектурата, базирана на услуги
• услугите имат стандартизиран интерфейс услугите имат стандартизиран интерфейс за достъпза достъп
• услугите се използват отуслугите се използват от крайни крайни потребителипотребители или от други услугиили от други услуги
• услугите участват в организацията и услугите участват в организацията и изпълнението на бизнес процеситеизпълнението на бизнес процесите
• нови услуги могат да се базират на нови услуги могат да се базират на комбинация от съществуващикомбинация от съществуващи
• Web-Web-услугите, заедно с услугите, заедно с WSE,WSE, са много са много подходящи за реализация на подходящи за реализация на SOASOA
• При архитектурата, базирана на услугиПри архитектурата, базирана на услуги
• услугите имат стандартизиран интерфейс услугите имат стандартизиран интерфейс за достъпза достъп
• услугите се използват отуслугите се използват от крайни крайни потребителипотребители или от други услугиили от други услуги
• услугите участват в организацията и услугите участват в организацията и изпълнението на бизнес процеситеизпълнението на бизнес процесите
• нови услуги могат да се базират на нови услуги могат да се базират на комбинация от съществуващикомбинация от съществуващи
• Web-Web-услугите, заедно с услугите, заедно с WSE,WSE, са много са много подходящи за реализация на подходящи за реализация на SOASOA
IndigoIndigoIndigoIndigo
• Продуктът с кодово название "Продуктът с кодово название "IndigoIndigo"" e e• имплементация на концепциите на имплементация на концепциите на
архитектурата, базирана на услуги (архитектурата, базирана на услуги (SOA)SOA)• application application сървър – изпълнява и сървър – изпълнява и
управлява приложения и услугиуправлява приложения и услуги• middleware middleware продукт, ориентиран към продукт, ориентиран към
управление и интеграция на услугиуправление и интеграция на услуги• поддържа архитектура за разпределени поддържа архитектура за разпределени
приложения, базирани на съобщенияприложения, базирани на съобщения• използва отворени стандарти (използва отворени стандарти (XMLXML, , Web Web
services, …)services, …)
• Ще бъде част от Ще бъде част от Windows LonghornWindows Longhorn
• Продуктът с кодово название "Продуктът с кодово название "IndigoIndigo"" e e• имплементация на концепциите на имплементация на концепциите на
архитектурата, базирана на услуги (архитектурата, базирана на услуги (SOA)SOA)• application application сървър – изпълнява и сървър – изпълнява и
управлява приложения и услугиуправлява приложения и услуги• middleware middleware продукт, ориентиран към продукт, ориентиран към
управление и интеграция на услугиуправление и интеграция на услуги• поддържа архитектура за разпределени поддържа архитектура за разпределени
приложения, базирани на съобщенияприложения, базирани на съобщения• използва отворени стандарти (използва отворени стандарти (XMLXML, , Web Web
services, …)services, …)
• Ще бъде част от Ще бъде част от Windows LonghornWindows Longhorn
Мрежи от опашкиМрежи от опашкиМрежи от опашкиМрежи от опашки
• Мрежите от опашки (Мрежите от опашки (Queuing NetworksQueuing Networks)) описват децентрализиран модел за описват децентрализиран модел за разпределени изчисленияразпределени изчисления
• Имат следната структура:Имат следната структура:• Състоят се от Състоят се от обработващи единициобработващи единици
((Processing UnitsProcessing Units)) с връзки между тяхс връзки между тях• мрежата управлява потока на мрежата управлява потока на
информацията информацията (information workflow)(information workflow)• Обработващите единици се състоят от Обработващите единици се състоят от
верига верига примитивни обработчици примитивни обработчици ((primitive handlers)primitive handlers)
• Примитивните обработчици са най-Примитивните обработчици са най-малките обработващи единицималките обработващи единици
• Мрежите от опашки (Мрежите от опашки (Queuing NetworksQueuing Networks)) описват децентрализиран модел за описват децентрализиран модел за разпределени изчисленияразпределени изчисления
• Имат следната структура:Имат следната структура:• Състоят се от Състоят се от обработващи единициобработващи единици
((Processing UnitsProcessing Units)) с връзки между тяхс връзки между тях• мрежата управлява потока на мрежата управлява потока на
информацията информацията (information workflow)(information workflow)• Обработващите единици се състоят от Обработващите единици се състоят от
верига верига примитивни обработчици примитивни обработчици ((primitive handlers)primitive handlers)
• Примитивните обработчици са най-Примитивните обработчици са най-малките обработващи единицималките обработващи единици
Примитивни обработчициПримитивни обработчициПримитивни обработчициПримитивни обработчици
• Примитивните обработчици саПримитивните обработчици са• елементарни обработващи единициелементарни обработващи единици• преизползваеми (преизползваеми (rreusable)eusable)• извършват малки прости задачки върху извършват малки прости задачки върху
съобщениятасъобщенията• обработват само съобщения, които обработват само съобщения, които
разпознаватразпознават• биват два видабиват два вида
• общи – осигуряват кодиране / декодиране, общи – осигуряват кодиране / декодиране, маршрутизация, трансформация, маршрутизация, трансформация, log-log-ваневане
• специфични – реализират елементи от специфични – реализират елементи от работния процесработния процес
• Примитивните обработчици саПримитивните обработчици са• елементарни обработващи единициелементарни обработващи единици• преизползваеми (преизползваеми (rreusable)eusable)• извършват малки прости задачки върху извършват малки прости задачки върху
съобщениятасъобщенията• обработват само съобщения, които обработват само съобщения, които
разпознаватразпознават• биват два видабиват два вида
• общи – осигуряват кодиране / декодиране, общи – осигуряват кодиране / декодиране, маршрутизация, трансформация, маршрутизация, трансформация, log-log-ваневане
• специфични – реализират елементи от специфични – реализират елементи от работния процесработния процес
Обработващи единициОбработващи единициОбработващи единициОбработващи единици
• Обработващите единици саОбработващите единици са• преизползваеми (преизползваеми (rreusable)eusable)• изпълняват отделни стъпки от изпълняват отделни стъпки от
динамични бизнес процесидинамични бизнес процеси• не са обвързани с местоположението сине са обвързани с местоположението си
• възможности за физическа мобилноствъзможности за физическа мобилност• скалируемост и устойчивост на сривовескалируемост и устойчивост на сривове
• предоставят автономни услугипредоставят автономни услуги• подходящи за автономно-ориентирани подходящи за автономно-ориентирани
изчисленияизчисления• подходящи за агентно-ориентирани подходящи за агентно-ориентирани
изчисленияизчисления
• Обработващите единици саОбработващите единици са• преизползваеми (преизползваеми (rreusable)eusable)• изпълняват отделни стъпки от изпълняват отделни стъпки от
динамични бизнес процесидинамични бизнес процеси• не са обвързани с местоположението сине са обвързани с местоположението си
• възможности за физическа мобилноствъзможности за физическа мобилност• скалируемост и устойчивост на сривовескалируемост и устойчивост на сривове
• предоставят автономни услугипредоставят автономни услуги• подходящи за автономно-ориентирани подходящи за автономно-ориентирани
изчисленияизчисления• подходящи за агентно-ориентирани подходящи за агентно-ориентирани
изчисленияизчисления
Обработващи единициОбработващи единициОбработващи единициОбработващи единици
• Обработващите единици се състоят от Обработващите единици се състоят от примитивни обработчици (примитиви)примитивни обработчици (примитиви)
• Примитивите се подреждат Примитивите се подреждат последователно в "поточни линии"последователно в "поточни линии"
• Съобщенията се обработват чрез Съобщенията се обработват чрез преминаване през поточните линиипреминаване през поточните линии
• Примитивите могат да променят, Примитивите могат да променят, създават и унищожават съобщениясъздават и унищожават съобщения
• Обработващите единици се състоят от Обработващите единици се състоят от примитивни обработчици (примитиви)примитивни обработчици (примитиви)
• Примитивите се подреждат Примитивите се подреждат последователно в "поточни линии"последователно в "поточни линии"
• Съобщенията се обработват чрез Съобщенията се обработват чрез преминаване през поточните линиипреминаване през поточните линии
• Примитивите могат да променят, Примитивите могат да променят, създават и унищожават съобщениясъздават и унищожават съобщения
/net/node1
вход изходпримитивапримитива примитива
Мрежи от опашкиМрежи от опашкиМрежи от опашкиМрежи от опашки
• "Мрежите" са множество свързани една "Мрежите" са множество свързани една с друга поточни линиис друга поточни линии• Всяко съобщение пътува по някакъв път Всяко съобщение пътува по някакъв път
в мрежатав мрежата
• Пътят зависи от самото съобщение – Пътят зависи от самото съобщение – определя се динамично чрез правила за определя се динамично чрез правила за маршрутизациямаршрутизация
• Пътят е поточна линия, съставена от Пътят е поточна линия, съставена от обработващи единици (възли)обработващи единици (възли)
• Инфраструктурата прилича на фабрика:Инфраструктурата прилича на фабрика:• Изделието преминава през поточните Изделието преминава през поточните
линии на отделните цехове (възли)линии на отделните цехове (възли)
• "Мрежите" са множество свързани една "Мрежите" са множество свързани една с друга поточни линиис друга поточни линии• Всяко съобщение пътува по някакъв път Всяко съобщение пътува по някакъв път
в мрежатав мрежата
• Пътят зависи от самото съобщение – Пътят зависи от самото съобщение – определя се динамично чрез правила за определя се динамично чрез правила за маршрутизациямаршрутизация
• Пътят е поточна линия, съставена от Пътят е поточна линия, съставена от обработващи единици (възли)обработващи единици (възли)
• Инфраструктурата прилича на фабрика:Инфраструктурата прилича на фабрика:• Изделието преминава през поточните Изделието преминава през поточните
линии на отделните цехове (възли)линии на отделните цехове (възли)
Мрежи от опашкиМрежи от опашкиМрежи от опашкиМрежи от опашки
Network
Gateway
Gateway
Transform/net/node1Transform/net/node1
Preproc.Balance
/net/node2
Preproc.Balance
/net/node2
Match/net/node3
Match/net/node3
Augment/net/node4Augment
/net/node4
Match/net/node3
Match/net/node3
Какво е Какво е FABRIQ?FABRIQ?Какво е Какво е FABRIQ?FABRIQ?
• FABRIQ FABRIQ ее• архитектураархитектура за разпределени приложенияза разпределени приложения
• базирана набазирана на модела "мрежи от опашки"модела "мрежи от опашки"
• високопроизводителнависокопроизводителна
• силно скалируемасилно скалируема
• Нейната целНейната цел• да илюстрира асинхронния изчислителен да илюстрира асинхронния изчислителен
модел, базиран на съобщения, който ще е модел, базиран на съобщения, който ще е част от продуктачаст от продукта Indigo Indigo
• да помогне на разработчици и софтуерни да помогне на разработчици и софтуерни архитекти да възприемат този моделархитекти да възприемат този модел
• FABRIQ FABRIQ ее• архитектураархитектура за разпределени приложенияза разпределени приложения
• базирана набазирана на модела "мрежи от опашки"модела "мрежи от опашки"
• високопроизводителнависокопроизводителна
• силно скалируемасилно скалируема
• Нейната целНейната цел• да илюстрира асинхронния изчислителен да илюстрира асинхронния изчислителен
модел, базиран на съобщения, който ще е модел, базиран на съобщения, който ще е част от продуктачаст от продукта Indigo Indigo
• да помогне на разработчици и софтуерни да помогне на разработчици и софтуерни архитекти да възприемат този моделархитекти да възприемат този модел
Какво е Какво е FABRIQ?FABRIQ?Какво е Какво е FABRIQ?FABRIQ?
• Реализиран с технологиитеРеализиран с технологиите• .NET Framework.NET Framework и и C#C#
• Web-Web-услугиуслуги
• WSEWSE ( (Web Services Enhancements)Web Services Enhancements)
• Framework Framework с отворен кодс отворен код• добре документиран дизайн и добре документиран дизайн и
архитектураархитектура
• разработен от разработен от newtelligence AGnewtelligence AG, заедно , заедно със специалисти от със специалисти от MicrosoftMicrosoft
• не е продукт на не е продукт на MicrosoftMicrosoft
• Тестван в реални условияТестван в реални условия
• Реализиран с технологиитеРеализиран с технологиите• .NET Framework.NET Framework и и C#C#
• Web-Web-услугиуслуги
• WSEWSE ( (Web Services Enhancements)Web Services Enhancements)
• Framework Framework с отворен кодс отворен код• добре документиран дизайн и добре документиран дизайн и
архитектураархитектура
• разработен от разработен от newtelligence AGnewtelligence AG, заедно , заедно със специалисти от със специалисти от MicrosoftMicrosoft
• не е продукт на не е продукт на MicrosoftMicrosoft
• Тестван в реални условияТестван в реални условия
СъобщенияСъобщенияСъобщенияСъобщения
• Съобщенията пренасят данни за приложениетоСъобщенията пренасят данни за приложението• Форматът зависи от самото приложениеФорматът зависи от самото приложение
• Съобщенията пренасят управляваща Съобщенията пренасят управляваща информацияинформация• параметри за адресацияпараметри за адресация
• настройки за сигурност и надеждностнастройки за сигурност и надеждност
• Инфраструктурата на Инфраструктурата на FABRIQ FABRIQ обработва обработва повечето управляваща информацияповечето управляваща информация• хедърихедъри: : постоянна управляваща информацияпостоянна управляваща информация
• свойства: временна информация в паметтасвойства: временна информация в паметта
• Приложенията обработват главно даннитеПриложенията обработват главно данните• Изключение: кодиране / декодиранеИзключение: кодиране / декодиране
• Съобщенията пренасят данни за приложениетоСъобщенията пренасят данни за приложението• Форматът зависи от самото приложениеФорматът зависи от самото приложение
• Съобщенията пренасят управляваща Съобщенията пренасят управляваща информацияинформация• параметри за адресацияпараметри за адресация
• настройки за сигурност и надеждностнастройки за сигурност и надеждност
• Инфраструктурата на Инфраструктурата на FABRIQ FABRIQ обработва обработва повечето управляваща информацияповечето управляваща информация• хедърихедъри: : постоянна управляваща информацияпостоянна управляваща информация
• свойства: временна информация в паметтасвойства: временна информация в паметта
• Приложенията обработват главно даннитеПриложенията обработват главно данните• Изключение: кодиране / декодиранеИзключение: кодиране / декодиране
MessageMessageMessageMessage
<soap:Envelope xmlns:soap="..."> <soap:Header> <wsu:Timestamp /> <wsa:From /> <wsa:To /> <wsa:ReplyTo /> <wsse:Confidentiality/> <wsse:Integrity /> </soap:Header> <soap:Body> <m:MyData> BE56239CE3E78AC56 717EA08B1EF9...
Ne
two
rkS
tre
am
Ne
two
rkS
tre
am
Ne
two
rkS
tre
am
Ne
two
rkS
tre
am
Te
xtR
ead
erT
ext
Rea
der
Te
xtR
ead
erT
ext
Rea
der
Xm
lRe
ad
erX
mlR
ea
der
Xm
lRe
ad
erX
mlR
ea
der
Header CollectionHeader Collection
Парсване на съобщениятаПарсване на съобщениятаПарсване на съобщениятаПарсване на съобщенията
TimestampTimestamp
FromFrom
ToTo
ReplyToReplyTo
ConfidentialityConfidentiality
IntegrityIntegrity
BodyBody
PropertiesProperties
Конструкторът на съобщението парсва Конструкторът на съобщението парсва хедърите в колекция от хедърихедърите в колекция от хедъри
Конструкторът на съобщението парсва Конструкторът на съобщението парсва хедърите в колекция от хедърихедърите в колекция от хедъри
Парсването спира при достигане на тялото на съобщението. Парсването спира при достигане на тялото на съобщението. Свойството "Свойството "BodyBody"" съдържа съдържа XmlReader XmlReader на позицията на тялото.на позицията на тялото.
Парсването спира при достигане на тялото на съобщението. Парсването спира при достигане на тялото на съобщението. Свойството "Свойството "BodyBody"" съдържа съдържа XmlReader XmlReader на позицията на тялото.на позицията на тялото.
Обработчици на съобщенияОбработчици на съобщенияОбработчици на съобщенияОбработчици на съобщения
• Обработчиците на съобщения Обработчиците на съобщения имплементират примитивиимплементират примитиви
• Обработчиците на съобщения Обработчиците на съобщения имплементират примитивиимплементират примитиви
IMessageHandlerIMessageHandler
ProcessMessage(Message msg)
IMessageHandlerIMessageHandlerIMessageHandlerIMessageHandler MyMessageHandlerMyMessageHandlerMyMessageHandlerMyMessageHandler
IMessageHandlerIMessageHandler
ProcessMessage(Message msg)ProcessMessage(Message msg)
IChainableMessageHandlerIChainableMessageHandler
NextNext
newMsg = this.HandleMessage(msg)newMsg = this.HandleMessage(msg)Next.ProcessMessage(newMsg)Next.ProcessMessage(newMsg)
Поточни линии (Поточни линии (pipelines)pipelines)Поточни линии (Поточни линии (pipelines)pipelines)
HeadHead
IMessageHandlerIMessageHandler
IChainableMessageHandlerIChainableMessageHandler
NextNext
ProcessMessage(Message msg)
TailTail
IMessageHandlerIMessageHandler
IChainableMessageHandlerIChainableMessageHandler
NextNext
ProcessMessage(Message msg)
MyMessageHandlerMyMessageHandler
IMessageHandlerIMessageHandler
IChainableMessageHandlerIChainableMessageHandler
NextNext
ProcessMessage(Message msg)
PipelinePipeline
IMessageHandlerIMessageHandler
IChainableMessageHandlerIChainableMessageHandler
NextNext
ProcessMessage(Message msg)
IMessageHandlerIMessageHandler
ProcessMessage(Message msg)
IMessageHandlerIMessageHandlerIMessageHandlerIMessageHandler
Поточни линии – композицияПоточни линии – композиция Поточни линии – композицияПоточни линии – композиция
HeadHeadHeadHead
IMessageHandlerIMessageHandler
IChainableMessageHandlerIChainableMessageHandler
Next
ProcessMessage(Message msg)
TailTailTailTail
IMessageHandlerIMessageHandler
IChainableMessageHandlerIChainableMessageHandler
Next
ProcessMessage(Message msg)
PipelinePipelinePipelinePipelineIMessageHandlerIMessageHandler
IChainableMessageHandlerIChainableMessageHandler
Next
ProcessMessage(Message msg)
IMessageHandlerIMessageHandler
ProcessMessage(Message msg)
HeadHeadHeadHead
IMessageHandlerIMessageHandler
IChainableMessageHandlerIChainableMessageHandler
Next
ProcessMessage(Message msg)
TailTailTailTail
IMessageHandlerIMessageHandler
IChainableMessageHandlerIChainableMessageHandler
Next
ProcessMessage(Message msg)
MyMessageHandlerMyMessageHandlerMyMessageHandlerMyMessageHandler
IMessageHandlerIMessageHandler
IChainableMessageHandlerIChainableMessageHandler
Next
ProcessMessage(Message msg)
PipelinePipelinePipelinePipelineIMessageHandlerIMessageHandler
IChainableMessageHandlerIChainableMessageHandler
Next
ProcessMessage(Message msg)
Управление на сривоветеУправление на сривоветеУправление на сривоветеУправление на сривовете
• Съединяването на примитиви е добро Съединяването на примитиви е добро ......
... ... докато нещо не се повреди някъде ...докато нещо не се повреди някъде ...
• Управлението на сривове в поточните Управлението на сривове в поточните линии е тежка задачалинии е тежка задача
• Съединяването на примитиви е добро Съединяването на примитиви е добро ......
... ... докато нещо не се повреди някъде ...докато нещо не се повреди някъде ...
• Управлението на сривове в поточните Управлението на сривове в поточните линии е тежка задачалинии е тежка задача
/net/node1
Начало КрайПримитивПримитив Примитив
ДействиеДействие 1, 1, Преобразуване Преобразуване на съобщениетона съобщението
ДействиеДействие 2, 2, Уведомяване на Уведомяване на вътрешна услугавътрешна услуга
Действие 3, Действие 3, Записване в Записване в базата даннибазата данни
Решението: транзакцииРешението: транзакцииРешението: транзакцииРешението: транзакции
• Всеки обработчик включва своя изпълнителВсеки обработчик включва своя изпълнител (worker) (worker) в "лека транзакция" в "лека транзакция" (WorkSet)(WorkSet)
• Изпълнителят държи състоянието на Изпълнителят държи състоянието на съобщението и изпълнява съобщението и изпълнява commit() commit() или или abort()abort()
• Използва се алгоритъм "Използва се алгоритъм "2-Phase-Commit2-Phase-Commit""
• Всеки обработчик включва своя изпълнителВсеки обработчик включва своя изпълнител (worker) (worker) в "лека транзакция" в "лека транзакция" (WorkSet)(WorkSet)
• Изпълнителят държи състоянието на Изпълнителят държи състоянието на съобщението и изпълнява съобщението и изпълнява commit() commit() или или abort()abort()
• Използва се алгоритъм "Използва се алгоритъм "2-Phase-Commit2-Phase-Commit""
/net/node1
Начало КрайПримитивПримитив Примитив
WorkSet
Worker Worker Worker
Леки транзакции
Prepare()Prepare()Commit()Commit()Abort()Abort()
Действия и договориДействия и договориДействия и договориДействия и договори
• ДействияДействия• уникално идентифицируемиуникално идентифицируеми
• състоят се от поточна линия от примитивисъстоят се от поточна линия от примитиви
• свързани с едно или повече входни свързани с едно или повече входни съобщениясъобщения
• аналогично на "метод" от ООПаналогично на "метод" от ООП
• ДоговориДоговори• съглашения за даннитесъглашения за данните
• прецизно дефинират какви данни очаква прецизно дефинират какви данни очаква дадено действиедадено действие
• прецизно дефинират какви данни прецизно дефинират какви данни произвежда като резултат дадено действиепроизвежда като резултат дадено действие
• ДействияДействия• уникално идентифицируемиуникално идентифицируеми
• състоят се от поточна линия от примитивисъстоят се от поточна линия от примитиви
• свързани с едно или повече входни свързани с едно или повече входни съобщениясъобщения
• аналогично на "метод" от ООПаналогично на "метод" от ООП
• ДоговориДоговори• съглашения за даннитесъглашения за данните
• прецизно дефинират какви данни очаква прецизно дефинират какви данни очаква дадено действиедадено действие
• прецизно дефинират какви данни прецизно дефинират какви данни произвежда като резултат дадено действиепроизвежда като резултат дадено действие
Възли и инстанции на възлиВъзли и инстанции на възлиВъзли и инстанции на възлиВъзли и инстанции на възли
• Един "възел" от мрежата представлява една Един "възел" от мрежата представлява една обработваща единица (обработваща единица (processing unitprocessing unit))• има уникална идентификация с има уникална идентификация с URIURI• свързан с логическо име на машина свързан с логическо име на машина (host)(host)
• може да съответства на няколко физически може да съответства на няколко физически машинимашини
• изпълнява се в отделен "изпълнява се в отделен "AApplication domainpplication domain""• може да се спира / пуска независимоможе да се спира / пуска независимо
• Възелът е еднопосочна асинхронна услугаВъзелът е еднопосочна асинхронна услуга• Може да пренася съобщения и да им отговаря Може да пренася съобщения и да им отговаря
((forward forward ии reply-to reply-to))• не се поддържа отговор към източникане се поддържа отговор към източника
• "Инстанция на възел" е възел по време на "Инстанция на възел" е възел по време на работа (работа (runtimeruntime))
• Един "възел" от мрежата представлява една Един "възел" от мрежата представлява една обработваща единица (обработваща единица (processing unitprocessing unit))• има уникална идентификация с има уникална идентификация с URIURI• свързан с логическо име на машина свързан с логическо име на машина (host)(host)
• може да съответства на няколко физически може да съответства на няколко физически машинимашини
• изпълнява се в отделен "изпълнява се в отделен "AApplication domainpplication domain""• може да се спира / пуска независимоможе да се спира / пуска независимо
• Възелът е еднопосочна асинхронна услугаВъзелът е еднопосочна асинхронна услуга• Може да пренася съобщения и да им отговаря Може да пренася съобщения и да им отговаря
((forward forward ии reply-to reply-to))• не се поддържа отговор към източникане се поддържа отговор към източника
• "Инстанция на възел" е възел по време на "Инстанция на възел" е възел по време на работа (работа (runtimeruntime))
АдресацияАдресацияАдресацияАдресация
• Всеки възел има уникален Всеки възел има уникален URIURI адрес и един адрес и един или няколко или няколко URLURL адреса: адреса:• Логически адресЛогически адрес::
• fabriq://network/nodefabriq://network/node
• Транспортно-зависим адрес:Транспортно-зависим адрес:• http://machine/network/nodehttp://machine/network/node
• msmq://machine/network/nodemsmq://machine/network/node
• ЛогическиЛогически: : използва се за абстрактно използва се за абстрактно конфигуриране на мрежитеконфигуриране на мрежите
• Транспортно-зависим: използва се за Транспортно-зависим: използва се за маршрутизация по време на работамаршрутизация по време на работа
• Адресирането използва Адресирането използва WS-AddressingWS-Addressing
• Всеки възел има уникален Всеки възел има уникален URIURI адрес и един адрес и един или няколко или няколко URLURL адреса: адреса:• Логически адресЛогически адрес::
• fabriq://network/nodefabriq://network/node
• Транспортно-зависим адрес:Транспортно-зависим адрес:• http://machine/network/nodehttp://machine/network/node
• msmq://machine/network/nodemsmq://machine/network/node
• ЛогическиЛогически: : използва се за абстрактно използва се за абстрактно конфигуриране на мрежитеконфигуриране на мрежите
• Транспортно-зависим: използва се за Транспортно-зависим: използва се за маршрутизация по време на работамаршрутизация по време на работа
• Адресирането използва Адресирането използва WS-AddressingWS-Addressing
WS-AddressingWS-AddressingWS-AddressingWS-Addressing
ServiceAServiceA
ClientClient
ServiceBServiceB
Gateway
GatewayGateway
ServiceCServiceC
Dyn. RouterDyn.
Router
<wsa:To>uri:ServiceB</wsa:To> <wsa:Recipient> <wsa:Address> uri:Client </wsa:Address> <wsp:Policy /></wsa:Recipient> <wsa:ReplyTo> <wsa:Address> uri:Client </wsa:Address> <wsp:Policy /> </wsa:ReplyTo>
<wsa:Recipient> <wsa:Address> uri:Client </wsa:Address> <wsp:Policy /></wsa:Recipient>
<wsa:FaultTo> <wsa:Address> uri:ServiceB </wsa:Address> <wsp:Policy /></wsa:FaultTo>
ToTo
ToTo
ToToReplyToReplyTo
FaultToFaultTo
RecipientRecipient
FaultToFaultTo
WS-AddressingWS-PolicyWS-AddressingWS-Policy
Адресация въвАдресация във FABRIQ FABRIQАдресация въвАдресация във FABRIQ FABRIQ
• Всеки възел може да има изходно съобщениеВсеки възел може да има изходно съобщение• Ако няма, той е крайна точка (Ако няма, той е крайна точка (endpoint)endpoint)
• Изходните съобщения се маршрутизират към Изходните съобщения се маршрутизират към следващия възелследващия възел• Използва се "действието" на изходното Използва се "действието" на изходното
съобщениесъобщение (wsa:Action) (wsa:Action) и/или логическия и/или логическия получател получател (wsa:To)(wsa:To)
• Много маршрути могат да са подходящиМного маршрути могат да са подходящи
• Съобщението се изпраща към всеки от тяхСъобщението се изпраща към всеки от тях
• Маршрути и получателиМаршрути и получатели• Получателите са приоритетизираниПолучателите са приоритетизирани
• Инфраструктурата опитва да изпрати Инфраструктурата опитва да изпрати съобщенията към получателите им според съобщенията към получателите им според приоритета (приоритета (""pprimary" rimary" ии "backup" "backup"))..
• Всеки възел може да има изходно съобщениеВсеки възел може да има изходно съобщение• Ако няма, той е крайна точка (Ако няма, той е крайна точка (endpoint)endpoint)
• Изходните съобщения се маршрутизират към Изходните съобщения се маршрутизират към следващия възелследващия възел• Използва се "действието" на изходното Използва се "действието" на изходното
съобщениесъобщение (wsa:Action) (wsa:Action) и/или логическия и/или логическия получател получател (wsa:To)(wsa:To)
• Много маршрути могат да са подходящиМного маршрути могат да са подходящи
• Съобщението се изпраща към всеки от тяхСъобщението се изпраща към всеки от тях
• Маршрути и получателиМаршрути и получатели• Получателите са приоритетизираниПолучателите са приоритетизирани
• Инфраструктурата опитва да изпрати Инфраструктурата опитва да изпрати съобщенията към получателите им според съобщенията към получателите им според приоритета (приоритета (""pprimary" rimary" ии "backup" "backup"))..
Адресация въвАдресация във FABRIQ FABRIQАдресация въвАдресация във FABRIQ FABRIQ
/net/node1/net/
node1
to: /net/node2
МаршрутиМаршрутиМаршрутиМаршрути
to: /net/node3
action: actionA
action: actionBto: /net/node4
http://..
msmq: //...
ПолучателиПолучателиПолучателиПолучатели
В един В един FABRIQ FABRIQ възелвъзелВ един В един FABRIQ FABRIQ възелвъзел
/net/node1
Начало КрайПримитивПримитив
Pipeline
Gate-keeper
RouterSender
PortQueue
Listener
Проверка на
сигурността
Проверка на
сигурността
Избор на маршрут
Избор на маршрут
ИзпращанеИзпращане
Модел на процеситеМодел на процеситеМодел на процеситеМодел на процесите
• FABRIQ FABRIQ се хоства все хоства в Enterprise Enterprise ServicesServices
• Надежден модел на процеситеНадежден модел на процесите
• Start/Stop, Pause/ResumeStart/Stop, Pause/Resume
• Пулинг, рециклиранеПулинг, рециклиране
• Стартиране при начално зареждане, Стартиране при начално зареждане, стартиране като услугастартиране като услуга
• Може да се настройва потребителят, под Може да се настройва потребителят, под който се изпълнява процесакойто се изпълнява процеса
• Интеграция с транспортните услуги отИнтеграция с транспортните услуги от Enterprise ServicesEnterprise Services
• Не е необходимНе е необходим Internet Internet Information Server Information Server
• FABRIQ FABRIQ се хоства все хоства в Enterprise Enterprise ServicesServices
• Надежден модел на процеситеНадежден модел на процесите
• Start/Stop, Pause/ResumeStart/Stop, Pause/Resume
• Пулинг, рециклиранеПулинг, рециклиране
• Стартиране при начално зареждане, Стартиране при начално зареждане, стартиране като услугастартиране като услуга
• Може да се настройва потребителят, под Може да се настройва потребителят, под който се изпълнява процесакойто се изпълнява процеса
• Интеграция с транспортните услуги отИнтеграция с транспортните услуги от Enterprise ServicesEnterprise Services
• Не е необходимНе е необходим Internet Internet Information Server Information Server
Сигурността въвСигурността във FABRIQ FABRIQСигурността въвСигурността във FABRIQ FABRIQ
• Използва се инфраструктурата за Използва се инфраструктурата за сигурност на сигурност на WSE 2.0WSE 2.0
• Microsoft Web Service Enhancements Microsoft Web Service Enhancements
• Използва сеИзползва се OASIS WS-Security, WS-Policy OASIS WS-Security, WS-Policy
• Ограничения на Ограничения на WSE 2.0WSE 2.0
• Не се поддържат динамични политикиНе се поддържат динамични политики
• Политиките се описват във файловеПолитиките се описват във файлове
• Конфигурация за всеки Конфигурация за всеки AppDomainAppDomain
• Използва се инфраструктурата за Използва се инфраструктурата за сигурност на сигурност на WSE 2.0WSE 2.0
• Microsoft Web Service Enhancements Microsoft Web Service Enhancements
• Използва сеИзползва се OASIS WS-Security, WS-Policy OASIS WS-Security, WS-Policy
• Ограничения на Ограничения на WSE 2.0WSE 2.0
• Не се поддържат динамични политикиНе се поддържат динамични политики
• Политиките се описват във файловеПолитиките се описват във файлове
• Конфигурация за всеки Конфигурация за всеки AppDomainAppDomain
<soap:Envelope> <soap:Header> … </soap:Header> <soap:Body> … </soap:Body></soap:Envelope>
<soap:Envelope> <soap:Header> … </soap:Header> <soap:Body> … </soap:Body></soap:Envelope>
Политики и договориПолитики и договориПолитики и договориПолитики и договори
Край (endpoint)
Край (endpoint)
XML схемаXML схема
WSDLWSDL
политикаполитика
Договор за услугатаДоговор за услугата
Договор за съобщениетоДоговор за съобщението
управлявауправлява
управлявауправлява
Политика – правила за услугите:- Изисквания: "Ти трябва ... "- Възможности: "Аз мога …" - Предпочитания: "Предпочитам ... "
WS-PolicyWS-PolicyAssertionsWS-PolicyAttachment
Договор – съдържание и функция на съобщенията:- Схеми: дефинират типовете- WSDL: дефинира действията
W3C XML SchemaWSDL 1.1 / 1.2
Мрежите на Мрежите на FABRIQFABRIQМрежите на Мрежите на FABRIQFABRIQ
• Възлите се свързват с логически или Възлите се свързват с логически или физически имена на машинифизически имена на машини• Адресацията се базира на тези именаАдресацията се базира на тези имена
• Конфигурирането на Конфигурирането на FABRIQ FABRIQ клъстер става със клъстер става със специално съобщениеспециално съобщение• Конфигурирането е функция на самата мрежаКонфигурирането е функция на самата мрежа
• Всяка машина хоства няколко възела от Всяка машина хоства няколко възела от мрежата, описани в конфигурациятамрежата, описани в конфигурацията• Кодът може да се зарежда динамичноКодът може да се зарежда динамично
• Възлите се свързват с логически или Възлите се свързват с логически или физически имена на машинифизически имена на машини• Адресацията се базира на тези именаАдресацията се базира на тези имена
• Конфигурирането на Конфигурирането на FABRIQ FABRIQ клъстер става със клъстер става със специално съобщениеспециално съобщение• Конфигурирането е функция на самата мрежаКонфигурирането е функция на самата мрежа
• Всяка машина хоства няколко възела от Всяка машина хоства няколко възела от мрежата, описани в конфигурациятамрежата, описани в конфигурацията• Кодът може да се зарежда динамичноКодът може да се зарежда динамично
Архитектурни перспективиАрхитектурни перспективиАрхитектурни перспективиАрхитектурни перспективи
• Архитектурно Архитектурно FABRIQ FABRIQ много прилича на много прилича на "Indigo""Indigo"::• подобен модел на съобщениятаподобен модел на съобщенията
• подобен модел на поточните линии (подобен модел на поточните линии (pipelines)pipelines)
• адресиране, базирано на адресиране, базирано на WS-AddressingWS-Addressing
• сигурност, базирана на сигурност, базирана на WS-PolicyWS-Policy
• Архитектурна стратегияАрхитектурна стратегия::• синхронизиране с новостите и промените от синхронизиране с новостите и промените от
""Indigo BetaIndigo Beta" (когато излезе)" (когато излезе)
• заместване на заместване на FABRIQ FABRIQ инфраструктурата с инфраструктурата с IndigoIndigo
• миграция на миграция на FABRIQ FABRIQ приложенията към приложенията към IndigoIndigo
• Архитектурно Архитектурно FABRIQ FABRIQ много прилича на много прилича на "Indigo""Indigo"::• подобен модел на съобщениятаподобен модел на съобщенията
• подобен модел на поточните линии (подобен модел на поточните линии (pipelines)pipelines)
• адресиране, базирано на адресиране, базирано на WS-AddressingWS-Addressing
• сигурност, базирана на сигурност, базирана на WS-PolicyWS-Policy
• Архитектурна стратегияАрхитектурна стратегия::• синхронизиране с новостите и промените от синхронизиране с новостите и промените от
""Indigo BetaIndigo Beta" (когато излезе)" (когато излезе)
• заместване на заместване на FABRIQ FABRIQ инфраструктурата с инфраструктурата с IndigoIndigo
• миграция на миграция на FABRIQ FABRIQ приложенията към приложенията към IndigoIndigo
РесурсиРесурси за за FABRIQFABRIQРесурсиРесурси за за FABRIQFABRIQ
• Страницата на проекта в Страницата на проекта в GotDotNet:GotDotNet: http://workspaces.gotdotnet.com/fabriqhttp://workspaces.gotdotnet.com/fabriq
• Личният дневник Личният дневник (blog) (blog) на на Clemens Vasters:Clemens Vasters: http://staff.newtelligence.net/clemensvhttp://staff.newtelligence.net/clemensv
• Личният дневник Личният дневник (blog) (blog) на на Arvindra Sehmi:Arvindra Sehmi: http://www.thearchitectexchange.com/asehmihttp://www.thearchitectexchange.com/asehmi
• Страницата на проекта в Страницата на проекта в GotDotNet:GotDotNet: http://workspaces.gotdotnet.com/fabriqhttp://workspaces.gotdotnet.com/fabriq
• Личният дневник Личният дневник (blog) (blog) на на Clemens Vasters:Clemens Vasters: http://staff.newtelligence.net/clemensvhttp://staff.newtelligence.net/clemensv
• Личният дневник Личният дневник (blog) (blog) на на Arvindra Sehmi:Arvindra Sehmi: http://www.thearchitectexchange.com/asehmihttp://www.thearchitectexchange.com/asehmi
FABRIQFABRIQFABRIQFABRIQ
Въпроси?Въпроси?Въпроси?Въпроси?