- •Розподілені системи
- •Історична довідка
- •Базові терміни та визначення
- •Телекомунікаційні мережі як елемент розподілених систем
- •Модель клієнт–сервер
- •1.3. Особливості розподілених систем
- •Переваги розподілених систем
- •Недоліки розподілених систем
- •Класифікація розподілених систем
- •Характеристики розподілених систем
- •Висновки
- •Запитання для самоконтролю
- •Розподілене середовище
- •Концепції апаратних рішень
- •Архітектура багатопроцесорних систем
- •Системи зі спільною пам’яттю
- •Системи з роздільною пам’яттю
- •Топології багатопроцесорних систем
- •Концепції програмних рішень
- •Та засобів проміжного рівня
- •Операційні системи й розподіленість
- •Проміжне середовище
- •2.5. Поняття розподіленого середовища
- •Розподіл прикладних програм за рівнями
- •Варіанти архітектури клієнт–сервер
- •Програмні компоненти розподілених систем
- •Основи мережної взаємодії
- •2.6. Взаємодія компонент розподіленої системи
- •Концепції взаємодії компонент розподіленої системи
- •Обмін повідомленнями
- •Віддалений виклик процедур
- •Використання віддалених об’єктів
- •Розподілені події
- •Розподілені транзакції
- •Безпека в розподілених системах
- •Опис інтерфейсу програмної компоненти
- •Мова і схеми Extensible Markup Language
- •Soap: мова повідомлень розподіленої системи
- •Wsdl: опис інтерфейсу програмної компоненти
- •Базові технології подання інформації в розподілених системах
- •Вимоги до прикладних програм серверної сторони
- •Висновки
- •Запитання для самоконтролю
- •Рівні протоколів
- •Низькорівневі протоколи
- •Транспортні протоколи
- •Протоколи верхнього рівня
- •Віддалений виклик процедур
- •Виклик локальної процедури та повернення результату
- •Звертання до віддалених об’єктів
- •Розподілені об’єкти
- •Прив’язка клієнта до об’єкта
- •Статичне й динамічне віддалене звертання до методів
- •Передача параметрів
- •1.4 Зв’язок на основі потоків даних
- •Підтримка безперервних середовищ
- •Потік даних
- •Синхронізація потоків даних
- •1.5 Протоколи проміжного рівня
- •Протокол soap
- •Сімейство протоколів xmpp
- •Протокол umsp
- •Висновки
- •Запитання для самоконтролю
- •2. Процеси
- •Потоки виконання. Визначення і структура
- •Стан процесів та потоків виконання
- •Реалізація потоків виконання
- •Потоки виконання в нерозподілених системах
- •Потоки виконання в розподілених системах
- •Багатопотокові клієнти
- •Багатопотокові сервери
- •Інтерфейси користувача
- •Клієнтське програмне забезпечення і прозорість розподілу
- •4.6 Сервери
- •Підходи до побудови серверів прикладного програмного забезпечення
- •Сервери об’єктів
- •Частина 2
- •Представлення додатка розподіленної системи
- •Рівнева організація додатку
- •Рівнева організація, застосування, виділення рівнів
- •Використання рівня Сервісів(Services Layer)
- •Дизайн рівневої структури
- •Вибір стратегії розбиття на рівні
- •Визначення наскрізної функціональності
- •Визначення інтерфейсу між рівнями
- •Вибір стратегії реалізації і впровадження
- •Вибір протоколів взаємодії
- •3. Дизайн Рівню Представлення
- •Дизайн рівня представлення включає наступні кроки:
- •Специфічні проблеми дизайну рівня представлення
- •Кешування
- •Комунікації
- •Композиція
- •Управління виключеннями
- •User Experience(Зручність Використання)
- •Інтерфейс користувача
- •Перевірка даних вводу користувача (Validation)
- •Batching(Пакетування)
- •З'єднання
- •Формат даних
- •Управління виключеннями
- •Реляційне відображення об'єктів(Object Relational Mapping)
- •Процедури, що зберігаються
- •Транзакції
- •Перевірка вводу
- •Типи бізнес-процесів
- •Загальні правила складання сміття:
- •Вибір стратегії визначення виключень
- •Стратегія протоколювання виключень
- •Стратегія повідомлення про виключення
- •Ухвалення рішення про необхідність обробки необроблених виключень
- •Спеціальні питання проектування
- •Аутентифікація
- •Авторизація
- •Кешування
- •Мережева взаємодія
- •Управління конфігурацією
- •Управління виключеннями
- •Протоколювання
- •Управління станом
- •Проблеми, які виникають при проектуванні взаємодії
- •Загальні завдання проектування стратегії зв'язку
- •Обмін файлами
- •Розподілена база даних
- •Виклик видалених процедур
- •Обмін повідомленнями
- •Процедура передачі повідомлення включає 5 основних етапів:
- •Комерційні системи обміну повідомленнями
Перевірка даних вводу користувача (Validation)
Ефективна стратегія перевірки призначеного для користувача введення і да- них має критично важливе значення для безпеки і коректної роботи застосу- вання. Визначте правила валидации призначеного для користувача введення і бізнес-правила, існуючі в шарі представлення. При проектуванні стратегії перевірки призначеного для користувача введення і даних керуйтеся наступ- ними рекомендаціями:
-
Перевірка призначеного для користувача введення повинна проводити- ся в шарі представлення, тоді як перевірка на відповідність бізнес- правилам - у бізнес-шарі. Проте якщо бізнес-шар і шар представлення рознесені фізично, логіка перевірки на відповідність бізнес-правилам повинна дублюватися в шарі представлення для поліпшення зручності використання і зменшення часу відгуку. Цього можна досягти за допо- могою метаданих або шляхом застосування однакових компонентів пра- вил перевірки в обох шарах.
-
Проектуйте стратегію перевірки, керуючись метою обмежити, запобіг- ти умисному введенню некоректних даних. Розглядайте шаблони і біб- ліотеки сторонніх виробників, які можуть допомогти в реалізації переві- рки.
Переконайтеся, що правильно обробляєте помилки валидации і уникайте розкриття конфіденційних даних в повідомленнях про помилки. Крім того, забезпечте протоколювання збоїв при перевірці, що допоможе при виявленні зловмисних дій.
4. Дизайн бізнес-рівню
Зазвичай бізнес рівень включає наступні компоненти:
Application façade. Це необов'язковий компонент, який надає спрощений ін- терфейс для доступу до компонент бізнес-логіки, часто шляхом об'єднання декількох бізнес-операцій в одну, що спрощує використання бізнес-логіки. Використання компонента призводить до уменшению залежностей, оскільки зовнішні клієнтам не треба знати деталей реалізації і взаємозв'язків між біз- нес-компонентами.
Business Logic components. Бізнес-логіка визначається як будь-яка логіка за- стосування, яка пов'язана з пошуком, обробкою, перетворення і управління даними застосувань, застосування бізнес-правила і політики, і забезпечення цілісності і коректності даних. Для максимізації можливості повторного ви- користання, компоненти бізнес-логіки, не повинні містити поведінку або ло- гіку, характерні для конкретного варіанту або сценарію використання . Ком- поненти бізнес-логіки можуть далі підрозділятися на наступні дві категорії:
-
Компоненти управління потоком виконання(Business Workflow) components.Після того, як компоненти призначеного для користувача ін-
терфейсу зібрали необхідні дані від користувача і передали його у бізнес- рівню, застосування може використати ці дані для виконання бізнес- процеса. Багато бізнес-процесів полягають їх декількох кроків, які мають бути виконані в правильному порядку, і можуть взаємодіяти один з одним через " хореографію". Компоненти Business Workflow визначають і коор- динують тривалі, багатоступінчасті процеси, і можуть бути реалізовані за допомогою бізнес-інструментів управління процесами.
-
Компоненти бізнес-суті Бізнес-суті або бізнес-об'єкти інкапсулюють бізнес-дані і логіку, необхідні для представлення об'єктів реального сві- ту.Вони зберігають значення даних і роблять їх доступними за допомогою властивостей, управляють бізнес даними застосування, надають доступ до даних і функціональності. Бізнес суті виконують валидацию даних і пере- вірку бізнес-логіки.
-
Дизайн бізнес-рівню
-
Рекомендації з проектування
-
При проектуванні бізнес-шару необхідно максимально спростити застосу- вання шляхом розділення завдань на різні функціональні області. Наприклад, логіка обробки бізнес-правил, бізнес-процесів і бізнес-сутностей - усі вони представляють різні функціональні області. У рамках кожної області проек- товані компоненти мають бути сфокусовані на рішенні конкретної задачі і не повинні включати код, пов'язаний з іншими функціональними областями.
При проектуванні бізнес-шару дотримуйтеся наступних рекомендацій:
-
Прийняти рішення про необхлдимости окремого рівня бізнес- логіки По можливості завжди створюйте окремий бізнес-шар, це сприяє підвищенню зручності обслуговування застосування. Виключенням мо- жуть бути лише застосування з невеликим числом або взагалі без бізнес- правил(окрім валидации даних).
-
Визначити область відповідальності і споживачів бізнес-рівня. Це допоможе прийняти рішення про те, які завдання повинен виконувати біз- нес-шар, і яким чином надаватиметься доступ до нього. Використайте біз- нес-шар для обробки складних бізнес-правил, перетворення даних, засто- сування політик і валидации. Якщо бізнес-шар використовуватиметься і шаром представлення, і зовнішніми застосуваннями, можна надати бізнес- шар у вигляді сервісу.
-
Уникати змішення компонентів різних типів. необхідно відокреми- ти бізнес-логіку від логіки представлення і доступу до даних і спростити тестування бізнес-функціональності. Також використайте бізнес-шар, щоб
централізувати функції бізнес-логіки і забезпечити можливість повторно- го використання.
-
Зменшити число взаємодій з об'єктами видаленого бізнес рівня . Якщо бізнес-шар розміщується на іншому рівні, фізично окремо від інших шарів і клієнтів, з якими повинен взаємодіяти, розглянете можливість реа- лізації видаленого керованого повідомленнями фасаду застосування або шару сервісів, який об'єднає дрібні операції у більші.
-
Уникати сильної зв'язності при проектуванні рівнів застосовуйте принципи абстракції для максимального послаблення зв'язування. Абст- рагування включає використання загальнодоступних інтерфейсів для спі- лкування з компонентами рівня, абстрактні базові класи, механізм обміну повідомленнями.
-
Кроки по дизайну рівня бізнес-логіки
При проектуванні бізнес-шару також необхідно враховувати технічні вимоги для основних складових цього шару : компонентів бізнес-шару, бізнес- сутностей і компонентів бізнес-процеса.
-
Створіть дизайн бізнес-шару в першому наближенні. Визначте, хто використовуватиме бізнес-шар: шар представлення, шар сервісів або інші застосування. Це визначить тактику методів доступу до бізнес-шару. Далі визначите вимоги безпеки для бізнес-шару, вимоги і стратегію валидации.
-
Спроектуйте компоненти бізнес-шару. При проектуванні і реалізації застосування можуть використовуватися декілька типів компонентів біз- нес-шару. Прикладами таких компонентів є компоненти бізнес-процеса, службові компоненти і допоміжні компоненти.
-
Спроектуйте компоненти бізнес-сутностей. Бізнес-сутності викорис- товуються для розміщення і управління бізнес-даними, використовувани- ми застосуванням. Бізнес суті повинні забезпечувати перевірку даних, що розміщуються по суті. Крім того, бізнес-сутності забезпечують властивос- ті і операції для доступу і ініціалізації даних суті.
-
Спроектуйте компоненти робочого процесу. Існує маса сценаріїв, в яких завдання повинні виконуватися в певному порядку залежно від заве- ршення певних етапів або координуються людиною. Ці вимоги можна ві- добразити в основних сценаріях робочого процесу.
-
Проектування рівню даних
Рівень даних складається з:
Компоненти доступу до даних. Це компоненти, які використовуються як абстракція логіки доступу до сховищ даних. Вони використовуються для то- го, щоб функції доступу до даних були реалізовані і управлявся централізо- ваний.
Агенти сервісів( Service agents). Якщо бізнес-компонент повинен отримати доступ до даних, які надаються зовнішньою службою, можливо, знадобиться розробка коду призначеного спеціально для комунікації з цією конкретною службою. Агенти сервісів використовуються для приховання від застосуван- ня деталей виклику кожного конкретного сервісу і можуть надавати додат- кові функції кеширования офф-лайн підтримка і відображення між формата- ми даних підтримуваними службою і потрібними застосуванням.
-
Кроки з проектування рівню даних Ключові дії розробки рівня сервісу :
-
Створення загального дизайну рівня даних. Визначення обмежень, які накладаються джерелами даних.
-
Вибір типів сутностей. Компоненти доступу до даних мають справу з сутностями, які використовуються для зберігання і маніпуляції даними, потрібними застосуванням. Визначення можливих вимог по валидации даних.
-
Вибір технології доступу до даних. Визначення функціональності, яку потрібно для діставання доступу до даних, і, вибір технології яка задо- вольняє цим вимогам.
-
Проектування компонентів доступу до даних. Необхідно перерахувати усі джерела даних і визначити метод доступу до кожного джерела да- них.
При проектуванні рівня даних необхідно враховувати наступне:
-
Використання механізмів абстракції для реалізації слабо-зв'язних інте- рфейсів доступу до рівня даних(loosely coupled) . Для цієї мети можуть використовуватися компоненти інтерфейсу, такі як шлюз з відомими вхі- дними і вихідними даними, який перетворить запити у формат, зрозумі- лий компонентам рівня даних.
-
Інкапсуляція функціональності доступу до даних усередині рівня да- них. Рівень даних повинен приховувати деталі доступу до джерел даних. Рівень даних відповідає за управління з'єднаннями, генерацію запитів, ві- дображення сутностей застосування на структури джерел даних.
-
Визначення способу відображення сутностей(об'єктів), якими оперує застосування на структури, використовувані джерелами даних.
-
Розгляд можливості консолідації(злиття) даних. Якщо ці застосування доступні через інтерфейс служб, то можливе використання об'єктів для організації даних в узагальнені структури.
-
Визначення способу управління з'єднаннями.
-
Визначення способу управління виключеннями. На рівні даних повинні перехоплюватися і оброблятися виключення пов'язані з джерелами даних і операціями створення /чтения/обновления/удаления данных.
-
Розгляд ризиків безпеки. На рівні даних повинні запобігати спроби крадіжки, псування даних і несанкціонованого доступу до даних.
-
Зменшення числа звернень до зовнішніх джерел даним. Можливість злиття набору команд в єдину операцію доступу до даних.
-
Оптимізація продуктивності і розширюваності.
-
Специфічні проблеми проектування рівню даних
-
Batching(Пакетування)
-
Binary Large Objects(BLOBs)
-
З'єднання
-
Формат даних
-
Управління виключеннями
-
Реляційне відображення об'єктів(Object Relational Mapping)
-
Запити
-
Процедури, що зберігаються
-
Транзакції
-
Перевірка коректності даних(Validation)
-
XML