Разпределено обектно ориентирано програмиране – паралелно и разпределено
Разпределено обектно-ориентирано програмиране
И така, основната разлика между човек и андроид е, че човекът идва със собственото си „Аз“, което не може да се каже за робота.
— Cary G deBessonet, Towards A Sentential 'Reality' for the Android
Необходимостта от създаване на разпределени приложения се дължи на различни причини.
• Необходимите ресурси (напр. бази данни, специализирани процесори, модеми, принтери и др.) се намират на различни компютри. Клиентските обекти (обекти, които издават заявка за услуга) взаимодействат със сървърни обекти (обекти, които отговарят на заявка за услуга), за да получат достъп до тези ресурси.
• Обекти, които се различават по време на разработка, разработчици и местоположение, трябва да си сътрудничат, за да свършат важна работа или да решат належащ проблем.
• Обектите са внедрени в SPMD или MRMP архитектури, проектирани да използват паралелно програмиране, и тези обекти са разположени в различни процеси и на различни компютри.
В обектно-ориентираното приложение работата, извършена от програма, е разделена между няколко обекта. Тези обекти са модели на определено реално лице, реално място, предмет или идея. Изпълнението на обектно-ориентирана програма принуждава нейните обекти да взаимодействат един с друг в съответствие с правилата, заложени в този модел. В разпределено обектно-ориентирано приложение някои взаимодействащи обекти ще бъдат създадени от различни програми, вероятно работещи на различни компютри. В глава 3 се споменава, че всяка изпълнима програма включва един или повече процеси. Всекипроцесът има свои собствени ресурси. Например, всеки процес има своя собствена памет, файлови дескриптори, стеково пространство, идентификатор и т.н. Задачите, изпълнявани в един процес, нямат директен достъп до ресурси, притежавани от друг процес. Ако задачите, изпълнявани в един процес, се нуждаят от информация, съхранена в паметта на друг процес, тогава двата процеса трябва изрично да обменят информация, използвайки файлове, канали, споделена памет, променливи на средата или сокети. Обектите, които принадлежат към различни процеси и трябва да комуникират помежду си, също трябва да използват един от горните методи за явен обмен на информация. Като правило, разработчикът на C++, когато разработва разпределено обектно-ориентирано приложение, е изправен пред необходимостта да реши следните проблеми.
• Декомпозиция на проблема и неговото решение в набор от обекти, някои от които ще принадлежат към различни процеси и ще бъдат разположени на различни компютри.
• Синхронизиране на взаимодействието между локални и отдалечени м и обекти.
• Обработка на грешки и изключения в разпределена среда.