38
FABRIQ – FABRIQ – архитектура за архитектура за високопроизводителни високопроизводителни разпределени разпределени изчисления, изчисления, базирана на съобщения базирана на съобщения Светлин Наков www.devbg.org

FABRIQ - Short - Svetlin Nakov

Embed Size (px)

Citation preview

Page 1: FABRIQ - Short - Svetlin Nakov

FABRIQ –FABRIQ – архитектура за архитектура за високопроизводителни високопроизводителни

разпределени изчисления,разпределени изчисления,базирана на съобщениябазирана на съобщения

Светлин НаковСветлин Наков

www.devbg.orgwww.devbg.org

Page 2: FABRIQ - Short - Svetlin Nakov

СъдържаниеСъдържаниеСъдържаниеСъдържание

• 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

Page 3: FABRIQ - Short - Svetlin Nakov

Какво е услуга?Какво е услуга?Какво е услуга?Какво е услуга?

• В реалния свят услугата е:В реалния свят услугата е:

• единица работа, извършвана от единица работа, извършвана от доставчик на услугидоставчик на услуги

• предоставя някакъв желан резултат на предоставя някакъв желан резултат на клиента (консуматор на услуги)клиента (консуматор на услуги)

• с ясно дефинирани входни параметри и с ясно дефинирани входни параметри и изходни резултатиизходни резултати

• лесна за използванелесна за използване

• винаги достъпнавинаги достъпна

• има характеристики за качество (цена, има характеристики за качество (цена, време за извършване, ефективноствреме за извършване, ефективност и т.н.)и т.н.)

• В реалния свят услугата е:В реалния свят услугата е:

• единица работа, извършвана от единица работа, извършвана от доставчик на услугидоставчик на услуги

• предоставя някакъв желан резултат на предоставя някакъв желан резултат на клиента (консуматор на услуги)клиента (консуматор на услуги)

• с ясно дефинирани входни параметри и с ясно дефинирани входни параметри и изходни резултатиизходни резултати

• лесна за използванелесна за използване

• винаги достъпнавинаги достъпна

• има характеристики за качество (цена, има характеристики за качество (цена, време за извършване, ефективноствреме за извършване, ефективност и т.н.)и т.н.)

Page 4: FABRIQ - Short - Svetlin Nakov

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

Page 5: FABRIQ - Short - Svetlin Nakov

Web-Web-услугиуслугиWeb-Web-услугиуслуги

• Web-Web-услугите моделират услугите от услугите моделират услугите от реалния святреалния свят

• работят на принципа на обмяна на работят на принципа на обмяна на SOAP SOAP съобщениясъобщения

• съобщенията съдържат структурирана съобщенията съдържат структурирана информация – данни + метаданни информация – данни + метаданни (описание на данните)(описание на данните)

• независими от операционната система, независими от операционната система, платформата и езика за програмиранеплатформата и езика за програмиране

• функционално-независимифункционално-независими, , слабо-слабо-обвързани с клиентаобвързани с клиента

• Web-Web-услугите моделират услугите от услугите моделират услугите от реалния святреалния свят

• работят на принципа на обмяна на работят на принципа на обмяна на SOAP SOAP съобщениясъобщения

• съобщенията съдържат структурирана съобщенията съдържат структурирана информация – данни + метаданни информация – данни + метаданни (описание на данните)(описание на данните)

• независими от операционната система, независими от операционната система, платформата и езика за програмиранеплатформата и езика за програмиране

• функционално-независимифункционално-независими, , слабо-слабо-обвързани с клиентаобвързани с клиента

Page 6: FABRIQ - Short - Svetlin Nakov

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 – позволява задаване на изисквания – позволява задаване на изисквания при обмяната на съобщенияпри обмяната на съобщения

Page 7: FABRIQ - Short - Svetlin Nakov

SOASOASOASOA

• SOA SOA == Service Service Oriented ArchitectureOriented Architecture = = архитектура, базирана на услугиархитектура, базирана на услуги

• Подход за реализация на разпределени Подход за реализация на разпределени приложения, при койтоприложения, при който• софтуерните компоненти са достъпни софтуерните компоненти са достъпни

като услугикато услуги

• компонентите (услугите) комуникират компонентите (услугите) комуникират чрез стандартни протоколичрез стандартни протоколи

• услугите са слабо-свързани (имат услугите са слабо-свързани (имат минимално количество взаимовръзки)минимално количество взаимовръзки)

• услугите могат да бъдат използвани в услугите могат да бъдат използвани в контекст, неизвестен по време на дизайнаконтекст, неизвестен по време на дизайна

• SOA SOA == Service Service Oriented ArchitectureOriented Architecture = = архитектура, базирана на услугиархитектура, базирана на услуги

• Подход за реализация на разпределени Подход за реализация на разпределени приложения, при койтоприложения, при който• софтуерните компоненти са достъпни софтуерните компоненти са достъпни

като услугикато услуги

• компонентите (услугите) комуникират компонентите (услугите) комуникират чрез стандартни протоколичрез стандартни протоколи

• услугите са слабо-свързани (имат услугите са слабо-свързани (имат минимално количество взаимовръзки)минимално количество взаимовръзки)

• услугите могат да бъдат използвани в услугите могат да бъдат използвани в контекст, неизвестен по време на дизайнаконтекст, неизвестен по време на дизайна

Page 8: FABRIQ - Short - Svetlin Nakov

SOASOASOASOA

• При архитектурата, базирана на услугиПри архитектурата, базирана на услуги

• услугите имат стандартизиран интерфейс услугите имат стандартизиран интерфейс за достъпза достъп

• услугите се използват отуслугите се използват от крайни крайни потребителипотребители или от други услугиили от други услуги

• услугите участват в организацията и услугите участват в организацията и изпълнението на бизнес процеситеизпълнението на бизнес процесите

• нови услуги могат да се базират на нови услуги могат да се базират на комбинация от съществуващикомбинация от съществуващи

• Web-Web-услугите, заедно с услугите, заедно с WSE,WSE, са много са много подходящи за реализация на подходящи за реализация на SOASOA

• При архитектурата, базирана на услугиПри архитектурата, базирана на услуги

• услугите имат стандартизиран интерфейс услугите имат стандартизиран интерфейс за достъпза достъп

• услугите се използват отуслугите се използват от крайни крайни потребителипотребители или от други услугиили от други услуги

• услугите участват в организацията и услугите участват в организацията и изпълнението на бизнес процеситеизпълнението на бизнес процесите

• нови услуги могат да се базират на нови услуги могат да се базират на комбинация от съществуващикомбинация от съществуващи

• Web-Web-услугите, заедно с услугите, заедно с WSE,WSE, са много са много подходящи за реализация на подходящи за реализация на SOASOA

Page 9: FABRIQ - Short - Svetlin Nakov

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

Page 10: FABRIQ - Short - Svetlin Nakov

Мрежи от опашкиМрежи от опашкиМрежи от опашкиМрежи от опашки

• Мрежите от опашки (Мрежите от опашки (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)

• Примитивните обработчици са най-Примитивните обработчици са най-малките обработващи единицималките обработващи единици

Page 11: FABRIQ - Short - Svetlin Nakov

Примитивни обработчициПримитивни обработчициПримитивни обработчициПримитивни обработчици

• Примитивните обработчици саПримитивните обработчици са• елементарни обработващи единициелементарни обработващи единици• преизползваеми (преизползваеми (rreusable)eusable)• извършват малки прости задачки върху извършват малки прости задачки върху

съобщениятасъобщенията• обработват само съобщения, които обработват само съобщения, които

разпознаватразпознават• биват два видабиват два вида

• общи – осигуряват кодиране / декодиране, общи – осигуряват кодиране / декодиране, маршрутизация, трансформация, маршрутизация, трансформация, log-log-ваневане

• специфични – реализират елементи от специфични – реализират елементи от работния процесработния процес

• Примитивните обработчици саПримитивните обработчици са• елементарни обработващи единициелементарни обработващи единици• преизползваеми (преизползваеми (rreusable)eusable)• извършват малки прости задачки върху извършват малки прости задачки върху

съобщениятасъобщенията• обработват само съобщения, които обработват само съобщения, които

разпознаватразпознават• биват два видабиват два вида

• общи – осигуряват кодиране / декодиране, общи – осигуряват кодиране / декодиране, маршрутизация, трансформация, маршрутизация, трансформация, log-log-ваневане

• специфични – реализират елементи от специфични – реализират елементи от работния процесработния процес

Page 12: FABRIQ - Short - Svetlin Nakov

Обработващи единициОбработващи единициОбработващи единициОбработващи единици

• Обработващите единици саОбработващите единици са• преизползваеми (преизползваеми (rreusable)eusable)• изпълняват отделни стъпки от изпълняват отделни стъпки от

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

• възможности за физическа мобилноствъзможности за физическа мобилност• скалируемост и устойчивост на сривовескалируемост и устойчивост на сривове

• предоставят автономни услугипредоставят автономни услуги• подходящи за автономно-ориентирани подходящи за автономно-ориентирани

изчисленияизчисления• подходящи за агентно-ориентирани подходящи за агентно-ориентирани

изчисленияизчисления

• Обработващите единици саОбработващите единици са• преизползваеми (преизползваеми (rreusable)eusable)• изпълняват отделни стъпки от изпълняват отделни стъпки от

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

• възможности за физическа мобилноствъзможности за физическа мобилност• скалируемост и устойчивост на сривовескалируемост и устойчивост на сривове

• предоставят автономни услугипредоставят автономни услуги• подходящи за автономно-ориентирани подходящи за автономно-ориентирани

изчисленияизчисления• подходящи за агентно-ориентирани подходящи за агентно-ориентирани

изчисленияизчисления

Page 13: FABRIQ - Short - Svetlin Nakov

Обработващи единициОбработващи единициОбработващи единициОбработващи единици

• Обработващите единици се състоят от Обработващите единици се състоят от примитивни обработчици (примитиви)примитивни обработчици (примитиви)

• Примитивите се подреждат Примитивите се подреждат последователно в "поточни линии"последователно в "поточни линии"

• Съобщенията се обработват чрез Съобщенията се обработват чрез преминаване през поточните линиипреминаване през поточните линии

• Примитивите могат да променят, Примитивите могат да променят, създават и унищожават съобщениясъздават и унищожават съобщения

• Обработващите единици се състоят от Обработващите единици се състоят от примитивни обработчици (примитиви)примитивни обработчици (примитиви)

• Примитивите се подреждат Примитивите се подреждат последователно в "поточни линии"последователно в "поточни линии"

• Съобщенията се обработват чрез Съобщенията се обработват чрез преминаване през поточните линиипреминаване през поточните линии

• Примитивите могат да променят, Примитивите могат да променят, създават и унищожават съобщениясъздават и унищожават съобщения

/net/node1

вход изходпримитивапримитива примитива

Page 14: FABRIQ - Short - Svetlin Nakov

Мрежи от опашкиМрежи от опашкиМрежи от опашкиМрежи от опашки

• "Мрежите" са множество свързани една "Мрежите" са множество свързани една с друга поточни линиис друга поточни линии• Всяко съобщение пътува по някакъв път Всяко съобщение пътува по някакъв път

в мрежатав мрежата

• Пътят зависи от самото съобщение – Пътят зависи от самото съобщение – определя се динамично чрез правила за определя се динамично чрез правила за маршрутизациямаршрутизация

• Пътят е поточна линия, съставена от Пътят е поточна линия, съставена от обработващи единици (възли)обработващи единици (възли)

• Инфраструктурата прилича на фабрика:Инфраструктурата прилича на фабрика:• Изделието преминава през поточните Изделието преминава през поточните

линии на отделните цехове (възли)линии на отделните цехове (възли)

• "Мрежите" са множество свързани една "Мрежите" са множество свързани една с друга поточни линиис друга поточни линии• Всяко съобщение пътува по някакъв път Всяко съобщение пътува по някакъв път

в мрежатав мрежата

• Пътят зависи от самото съобщение – Пътят зависи от самото съобщение – определя се динамично чрез правила за определя се динамично чрез правила за маршрутизациямаршрутизация

• Пътят е поточна линия, съставена от Пътят е поточна линия, съставена от обработващи единици (възли)обработващи единици (възли)

• Инфраструктурата прилича на фабрика:Инфраструктурата прилича на фабрика:• Изделието преминава през поточните Изделието преминава през поточните

линии на отделните цехове (възли)линии на отделните цехове (възли)

Page 15: FABRIQ - Short - Svetlin Nakov

Мрежи от опашкиМрежи от опашкиМрежи от опашкиМрежи от опашки

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

Page 16: FABRIQ - Short - Svetlin Nakov

Какво е Какво е FABRIQ?FABRIQ?Какво е Какво е FABRIQ?FABRIQ?

• FABRIQ FABRIQ ее• архитектураархитектура за разпределени приложенияза разпределени приложения

• базирана набазирана на модела "мрежи от опашки"модела "мрежи от опашки"

• високопроизводителнависокопроизводителна

• силно скалируемасилно скалируема

• Нейната целНейната цел• да илюстрира асинхронния изчислителен да илюстрира асинхронния изчислителен

модел, базиран на съобщения, който ще е модел, базиран на съобщения, който ще е част от продуктачаст от продукта Indigo Indigo

• да помогне на разработчици и софтуерни да помогне на разработчици и софтуерни архитекти да възприемат този моделархитекти да възприемат този модел

• FABRIQ FABRIQ ее• архитектураархитектура за разпределени приложенияза разпределени приложения

• базирана набазирана на модела "мрежи от опашки"модела "мрежи от опашки"

• високопроизводителнависокопроизводителна

• силно скалируемасилно скалируема

• Нейната целНейната цел• да илюстрира асинхронния изчислителен да илюстрира асинхронния изчислителен

модел, базиран на съобщения, който ще е модел, базиран на съобщения, който ще е част от продуктачаст от продукта Indigo Indigo

• да помогне на разработчици и софтуерни да помогне на разработчици и софтуерни архитекти да възприемат този моделархитекти да възприемат този модел

Page 17: FABRIQ - Short - Svetlin Nakov

Какво е Какво е 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

• Тестван в реални условияТестван в реални условия

Page 18: FABRIQ - Short - Svetlin Nakov

СъобщенияСъобщенияСъобщенияСъобщения

• Съобщенията пренасят данни за приложениетоСъобщенията пренасят данни за приложението• Форматът зависи от самото приложениеФорматът зависи от самото приложение

• Съобщенията пренасят управляваща Съобщенията пренасят управляваща информацияинформация• параметри за адресацияпараметри за адресация

• настройки за сигурност и надеждностнастройки за сигурност и надеждност

• Инфраструктурата на Инфраструктурата на FABRIQ FABRIQ обработва обработва повечето управляваща информацияповечето управляваща информация• хедърихедъри: : постоянна управляваща информацияпостоянна управляваща информация

• свойства: временна информация в паметтасвойства: временна информация в паметта

• Приложенията обработват главно даннитеПриложенията обработват главно данните• Изключение: кодиране / декодиранеИзключение: кодиране / декодиране

• Съобщенията пренасят данни за приложениетоСъобщенията пренасят данни за приложението• Форматът зависи от самото приложениеФорматът зависи от самото приложение

• Съобщенията пренасят управляваща Съобщенията пренасят управляваща информацияинформация• параметри за адресацияпараметри за адресация

• настройки за сигурност и надеждностнастройки за сигурност и надеждност

• Инфраструктурата на Инфраструктурата на FABRIQ FABRIQ обработва обработва повечето управляваща информацияповечето управляваща информация• хедърихедъри: : постоянна управляваща информацияпостоянна управляваща информация

• свойства: временна информация в паметтасвойства: временна информация в паметта

• Приложенията обработват главно даннитеПриложенията обработват главно данните• Изключение: кодиране / декодиранеИзключение: кодиране / декодиране

Page 19: FABRIQ - Short - Svetlin Nakov

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 на позицията на тялото.на позицията на тялото.

Page 20: FABRIQ - Short - Svetlin Nakov

Обработчици на съобщенияОбработчици на съобщенияОбработчици на съобщенияОбработчици на съобщения

• Обработчиците на съобщения Обработчиците на съобщения имплементират примитивиимплементират примитиви

• Обработчиците на съобщения Обработчиците на съобщения имплементират примитивиимплементират примитиви

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)

Page 21: FABRIQ - Short - Svetlin Nakov

Поточни линии (Поточни линии (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

Page 22: FABRIQ - Short - Svetlin Nakov

Поточни линии – композицияПоточни линии – композиция Поточни линии – композицияПоточни линии – композиция

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)

Page 23: FABRIQ - Short - Svetlin Nakov

Управление на сривоветеУправление на сривоветеУправление на сривоветеУправление на сривовете

• Съединяването на примитиви е добро Съединяването на примитиви е добро ......

... ... докато нещо не се повреди някъде ...докато нещо не се повреди някъде ...

• Управлението на сривове в поточните Управлението на сривове в поточните линии е тежка задачалинии е тежка задача

• Съединяването на примитиви е добро Съединяването на примитиви е добро ......

... ... докато нещо не се повреди някъде ...докато нещо не се повреди някъде ...

• Управлението на сривове в поточните Управлението на сривове в поточните линии е тежка задачалинии е тежка задача

/net/node1

Начало КрайПримитивПримитив Примитив

ДействиеДействие 1, 1, Преобразуване Преобразуване на съобщениетона съобщението

ДействиеДействие 2, 2, Уведомяване на Уведомяване на вътрешна услугавътрешна услуга

Действие 3, Действие 3, Записване в Записване в базата даннибазата данни

Page 24: FABRIQ - Short - Svetlin Nakov

Решението: транзакцииРешението: транзакцииРешението: транзакцииРешението: транзакции

• Всеки обработчик включва своя изпълнителВсеки обработчик включва своя изпълнител (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()

Page 25: FABRIQ - Short - Svetlin Nakov

Действия и договориДействия и договориДействия и договориДействия и договори

• ДействияДействия• уникално идентифицируемиуникално идентифицируеми

• състоят се от поточна линия от примитивисъстоят се от поточна линия от примитиви

• свързани с едно или повече входни свързани с едно или повече входни съобщениясъобщения

• аналогично на "метод" от ООПаналогично на "метод" от ООП

• ДоговориДоговори• съглашения за даннитесъглашения за данните

• прецизно дефинират какви данни очаква прецизно дефинират какви данни очаква дадено действиедадено действие

• прецизно дефинират какви данни прецизно дефинират какви данни произвежда като резултат дадено действиепроизвежда като резултат дадено действие

• ДействияДействия• уникално идентифицируемиуникално идентифицируеми

• състоят се от поточна линия от примитивисъстоят се от поточна линия от примитиви

• свързани с едно или повече входни свързани с едно или повече входни съобщениясъобщения

• аналогично на "метод" от ООПаналогично на "метод" от ООП

• ДоговориДоговори• съглашения за даннитесъглашения за данните

• прецизно дефинират какви данни очаква прецизно дефинират какви данни очаква дадено действиедадено действие

• прецизно дефинират какви данни прецизно дефинират какви данни произвежда като резултат дадено действиепроизвежда като резултат дадено действие

Page 26: FABRIQ - Short - Svetlin Nakov

Възли и инстанции на възлиВъзли и инстанции на възлиВъзли и инстанции на възлиВъзли и инстанции на възли

• Един "възел" от мрежата представлява една Един "възел" от мрежата представлява една обработваща единица (обработваща единица (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))

Page 27: FABRIQ - Short - Svetlin Nakov

АдресацияАдресацияАдресацияАдресация

• Всеки възел има уникален Всеки възел има уникален 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

Page 28: FABRIQ - Short - Svetlin Nakov

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

Page 29: FABRIQ - Short - Svetlin Nakov

Адресация въвАдресация във 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"))..

Page 30: FABRIQ - Short - Svetlin Nakov

Адресация въвАдресация във FABRIQ FABRIQАдресация въвАдресация във FABRIQ FABRIQ

/net/node1/net/

node1

to: /net/node2

МаршрутиМаршрутиМаршрутиМаршрути

to: /net/node3

action: actionA

action: actionBto: /net/node4

http://..

msmq: //...

ПолучателиПолучателиПолучателиПолучатели

Page 31: FABRIQ - Short - Svetlin Nakov

В един В един FABRIQ FABRIQ възелвъзелВ един В един FABRIQ FABRIQ възелвъзел

/net/node1

Начало КрайПримитивПримитив

Pipeline

Gate-keeper

RouterSender

PortQueue

Listener

Проверка на

сигурността

Проверка на

сигурността

Избор на маршрут

Избор на маршрут

ИзпращанеИзпращане

Page 32: FABRIQ - Short - Svetlin Nakov

Модел на процеситеМодел на процеситеМодел на процеситеМодел на процесите

• 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

Page 33: FABRIQ - Short - Svetlin Nakov

Сигурността въвСигурността във 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

Page 34: FABRIQ - Short - Svetlin Nakov

<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

Page 35: FABRIQ - Short - Svetlin Nakov

Мрежите на Мрежите на FABRIQFABRIQМрежите на Мрежите на FABRIQFABRIQ

• Възлите се свързват с логически или Възлите се свързват с логически или физически имена на машинифизически имена на машини• Адресацията се базира на тези именаАдресацията се базира на тези имена

• Конфигурирането на Конфигурирането на FABRIQ FABRIQ клъстер става със клъстер става със специално съобщениеспециално съобщение• Конфигурирането е функция на самата мрежаКонфигурирането е функция на самата мрежа

• Всяка машина хоства няколко възела от Всяка машина хоства няколко възела от мрежата, описани в конфигурациятамрежата, описани в конфигурацията• Кодът може да се зарежда динамичноКодът може да се зарежда динамично

• Възлите се свързват с логически или Възлите се свързват с логически или физически имена на машинифизически имена на машини• Адресацията се базира на тези именаАдресацията се базира на тези имена

• Конфигурирането на Конфигурирането на FABRIQ FABRIQ клъстер става със клъстер става със специално съобщениеспециално съобщение• Конфигурирането е функция на самата мрежаКонфигурирането е функция на самата мрежа

• Всяка машина хоства няколко възела от Всяка машина хоства няколко възела от мрежата, описани в конфигурациятамрежата, описани в конфигурацията• Кодът може да се зарежда динамичноКодът може да се зарежда динамично

Page 36: FABRIQ - Short - Svetlin Nakov

Архитектурни перспективиАрхитектурни перспективиАрхитектурни перспективиАрхитектурни перспективи

• Архитектурно Архитектурно 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

Page 37: FABRIQ - Short - Svetlin Nakov

РесурсиРесурси за за 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

Page 38: FABRIQ - Short - Svetlin Nakov

FABRIQFABRIQFABRIQFABRIQ

Въпроси?Въпроси?Въпроси?Въпроси?