====== Распределенные системы ====== ===== Лекционный материал ===== Идея курса - рассмотреть процесс перехода от сложной программной системы к простой за счет использования компонентного подхода, затем, к распределенной. Первый переход позволяет реорганизовать систему, сделать подсистемы слабосвязанными, стандартизировать взаимодействие. Второй переход - "ассимиляция" новых ресурсов, как памяти, так и вычислительных. - [[https://www.youtube.com/watch?v=KF8uVqd8nTU&list=PLDmve33tqgovKgP1t5m5Oi7uawof1VSmZ&index=7&ab_channel=%D0%95%D0%B2%D0%B3%D0%B5%D0%BD%D0%B8%D0%B9%D0%A7%D0%B5%D1%80%D0%BA%D0%B0%D1%88%D0%B8%D0%BD|Современные подходы к реализации сложных систем (доклад на семинаре)]] - [[https://youtu.be/IRM4gWdwWWE|Компонентное проектирование на примере Zope: Интерфейсы, Адаптеры]] - [[https://www.youtube.com/watch?v=hwBbitCVHyM&list=PLDmve33tqgovKgP1t5m5Oi7uawof1VSmZ&index=2&ab_channel=%D0%95%D0%B2%D0%B3%D0%B5%D0%BD%D0%B8%D0%B9%D0%A7%D0%B5%D1%80%D0%BA%D0%B0%D1%88%D0%B8%D0%BD|Zope, адаптеры, мультиадаптеры (2023)]] - [[https://www.youtube.com/watch?v=FY-Hm61j31Y&list=PLDmve33tqgovKgP1t5m5Oi7uawof1VSmZ&index=2&ab_channel=%D0%95%D0%B2%D0%B3%D0%B5%D0%BD%D0%B8%D0%B9%D0%A7%D0%B5%D1%80%D0%BA%D0%B0%D1%88%D0%B8%D0%BD|Zope, Подписчики (2023)]] - [[https://www.youtube.com/watch?v=VYbgzzSPmQ8&list=PLDmve33tqgovKgP1t5m5Oi7uawof1VSmZ&index=3&t=76s&ab_channel=%D0%95%D0%B2%D0%B3%D0%B5%D0%BD%D0%B8%D0%B9%D0%A7%D0%B5%D1%80%D0%BA%D0%B0%D1%88%D0%B8%D0%BD|Введение в REST-архитектуру]] - [[https://www.youtube.com/watch?v=ebRYs_1MsbQ&list=PLDmve33tqgovKgP1t5m5Oi7uawof1VSmZ&index=5&t=12s&ab_channel=%D0%95%D0%B2%D0%B3%D0%B5%D0%BD%D0%B8%D0%B9%D0%A7%D0%B5%D1%80%D0%BA%D0%B0%D1%88%D0%B8%D0%BD|Продолжение REST, реализация]] - [[https://www.youtube.com/watch?v=QUOwCP7snGo&list=PLDmve33tqgovKgP1t5m5Oi7uawof1VSmZ&index=5&ab_channel=%D0%95%D0%B2%D0%B3%D0%B5%D0%BD%D0%B8%D0%B9%D0%A7%D0%B5%D1%80%D0%BA%D0%B0%D1%88%D0%B8%D0%BD|REST, реализация клиента]] - [[https://www.youtube.com/watch?v=s1vmVWCKefM&list=PLF-NY6ldwAWqjBkanP1Tl50kDpIYXJBna&index=1&ab_channel=DjangoSchool%7C%D0%9E%D0%BC%D0%B5%D0%BB%D1%8C%D1%87%D0%B5%D0%BD%D0%BA%D0%BE%D0%9C%D0%B8%D1%85%D0%B0%D0%B8%D0%BB|Менеджер задач Celery. Введение. Обзор использованных технологий]] - Задача - разработать proxy-адаптер при помощи REST. - [[https://www.youtube.com/watch?v=9RTZP16rvkQ&list=PLF-NY6ldwAWqjBkanP1Tl50kDpIYXJBna&index=3&t=158s&ab_channel=DjangoSchool%7C%D0%9E%D0%BC%D0%B5%D0%BB%D1%8C%D1%87%D0%B5%D0%BD%D0%BA%D0%BE%D0%9C%D0%B8%D1%85%D0%B0%D0%B8%D0%BB|Celery: настройка системы, создание задачи, конфигурация на запуск различными способами]] - [[https://www.youtube.com/watch?v=BuK6jxqsvOE&list=PLF-NY6ldwAWqjBkanP1Tl50kDpIYXJBna&index=3&ab_channel=DjangoSchool%7C%D0%9E%D0%BC%D0%B5%D0%BB%D1%8C%D1%87%D0%B5%D0%BD%D0%BA%D0%BE%D0%9C%D0%B8%D1%85%D0%B0%D0%B8%D0%BB|Настройка утилиты Flower. Сцепленные задачи и т.п.]] ===== Лабораторные работы ===== Перечень заданий - Реализовать две компоненты, адаптер интерфейса одной к другой, контейнер (компоненту, по примеру из лекций). - Реализовать прокси-адаптер для интерфейса компоненты, хранимой в контейнере. - В контейнере организовать "длительную обработку" хранимых компонент. Варианты систем программирования - Python / Zope (ZTK, не путать с Zope2!) - C# - COM/DCOM + OLE2 - Java EJB - Java Spring framework (Тут не совсем компонентная архитектура, но можно остаться в рамках plug-in-интерфейсов) - Logtalk с использованием композиционного проектирования - Разработайте свой аналог для любимого языка программирования (были попытки для JavaScript) Если будете использовать тестирование - респект и уважуха! И Если есть возможность совместить с другими задачами (по другим предметам, например, Семантический Веб) - уважуха вдвойне.