Ноу Інти, лекція, взаємодія компонент розподіленої системи
2.5. розподілені події
При розробці програмного забезпечення досить часто виникає потреба отримувати сповіщення про будь-які події, що виникають асинхронно, тобто в деякі довільні моменти часу. У розподілених системах так само може виникнути необхідність використання таких повідомлень, одержуваних від віддаленої системи. Можна виділити два підходи до обробки подій - тісно пов'язані і слабо пов'язані події. При тісно пов'язаному подію відбувається пряме повідомлення одного боку іншою стороною. Хоча цей метод можна використовувати, наприклад, разом з односпрямованим асинхронним викликом, йому властивий ряд недоліків, що обмежують його застосування в розподілених системах:
- обидві компоненти системи повинні виконуватися одночасно;
- для повідомлення кількох компонент про одну подію, яка надсилає повідомлення стороною повинні використовуватися механізми для ведення списку одержувачів подій;
- утруднена фільтрація або протоколювання подій.
Мал. 2.8. Передплатники і видавці слабосвязанних подій
При використанні слабосвязанних подій передплатники, видавці і менеджер подій можуть розташовуватися на різних комп'ютерах. Сама подія може бути реалізовано як, наприклад, виклик менеджером подій деякого зареєстрованого методу віддаленого об'єкта.
2.6. розподілені транзакції
Транзакція - послідовність операцій з будь-якими даними, яка або успішно виконується повністю, або не виконується взагалі. У разі неможливості успішно виконати всі дії відбувається повернення до первинних значень всіх змінених протягом транзакції даних (відкат транзакції). Транзакція має володіти такими якостями.
- Атомарність. Транзакція виконується за принципом "все або нічого".
- Узгодженість. Після успішного завершення або відкоту транзакції всі дані знаходяться в узгодженому стані, їх логічна цілісність не порушена.
- Ізоляція. Для об'єктів поза транзакції не видно проміжні стани, які можуть приймати змінні в транзакції дані. З точки зору "зовнішніх" об'єктів, до успішного завершення транзакції вони повинні мати той же стан, в якому знаходилися до її початку.
- Постійність. У разі успішності транзакції зроблені зміни повинні мати постійний характер (тобто збережені в енергонезалежній пам'яті).
Мал. 2.9. розподілена транзакція
Транзакції є основою додатків, що працюють з базами даних, проте в розподіленої системі може бути недостатньо використання тільки транзакцій систем управління базами даних. Наприклад, в розподіленої системі в транзакції може брати участь кілька розподілених компонент. працюючих з декількома незалежними базами даних (рис. 2.9).
Розподіленої називається транзакція. охоплює операції декількох взаємодіючих компонент розподіленої системи. Кожна з цих компонент може працювати з будь-якими СУБД або іншими службами, наприклад, використовувати черги повідомлень. або навіть працювати з файлами. При відкат транзакції всі ці операції повинні бути скасовані. Для цього необхідно виконання двох умов:
- проміжна середовище повинне підтримувати управління розподіленими між декількома компонентами транзакціями;
- компоненти розподіленої системи не повинні працювати з будь-якими службами або ресурсами, які не можуть брати участь в транзакції.
Розподілені транзакції є найважливішим елементом підтримки цілісності даних в розподіленої системі. Тому для більш широкого їх застосування проміжна середовище може містити механізми. які при необхідності (і певних витратах часу на написання коду) дозволять використовувати в розподілених транзакцій зовнішні служби, які не підтримують транзакції. Такий механізм називається компенсує менеджером ресурсу (compensating resource manager). Компенсація в даному випадку означає повернення ресурсу до початкового стану при відкат транзакції.
В даний час відбувається формування і стандартизація ще одного поняття, пов'язаного з підтримкою цілісності даних - господарської діяльності (business activity) стосовно до розподілених систем. Діяльність зазвичай є відображенням деякого реального процесу, наприклад, покупки в магазині: від оформлення замовлення до підтвердження доставки кур'єром. Діяльність може включати в себе транзакції (оформлення замовлення покупця, замовлення товару у постачальника, і так далі - до підтвердження доставки покупцем). На відміну від транзакції, час життя якої передбачається коротким, діяльність може тривати протягом дуже довгого часу (наприклад, місяця). Діяльність може підтримувати скасування зроблених змін (наприклад, оформлення повернення товару постачальника при відмові покупця) шляхом використання компенсуючих завдань.
2.7. Безпека в розподілених системах
Для забезпечення безпеки розподіленої системи проміжна середовище повинне забезпечувати підтримку трьох загальновідомих функцій, необхідних для створення безпечних систем.
Функції забезпечення безпеки можуть забезпечуватися транспортним протоколом, використовуваним проміжним середовищем, самим середовищем, або ними обома в сукупності.
2.8. Проміжні середовища в Microsoft .NET Framework
Поняття проміжного середовища, що забезпечує сервіси високого рівня для інкапсуляції віддаленого взаємодії, з'явилося в середині 90-х років, коли з'ясувалося, що для створення розподілених систем необхідна деяка незалежна від програми та операційного середовища "прошарок". Середа CLR так само може розглядатися як деяка "проміжна" середовище для виконання програм на керованому коді. Тому закономірно використовувати. NET Framework в якості основи для створення розподілених додатків.
На даний момент в. NET Framework Class Library є підтримка чотирьох проміжних середовищ для побудови розподілених систем. Далі вони перераховані в порядку дати випуску проміжної середовища.
- Середа Microsoft Message Queuing (MSMQ) підтримує обмін повідомленнями між програмними компонентами на основі черг.
- Середа Microsoft Enterprise Services заснована на розробленій раніше фірмою Microsoft середовищі COM +, яка дозволяє використовувати віддалені об'єкти і розподілені транзакції в локальній мережі.
- Середа ASP .NET Web Services дозволяє організувати віддалений виклик на основі загальноприйнятих стандартів, які базуються на мові XML.
- Середа .NET Remoting була розроблена як універсальна проміжна середовище для використання віддалених об'єктів.
У версії. NET Framework 3.0 передбачається ввести технологію WCF (Windows Communication Foundation), що об'єднує всі згадані технології побудови розподілених систем. Крім зазначених технологій, додатки на. NET Framework можуть використовувати, наприклад, віддалені виклики на основі стандарту XML- RPC при підключенні додаткових бібліотек.