Кіріспе

Mac OS-дегі хабарламаларға негізделген процестер аралық байланыс механизмі Apple-дің бағдарламалық хабар алмасу жүйесі болып табылады. Apple оқиғалары – Mac OS-дегі хабарламаларға негізделген процестер аралық байланыс механизмі, ол алғаш рет System 7-де пайда болды және содан бері классикалық Mac OS-тің барлық нұсқаларында және macOS-та қолдау табады. Apple оқиғалары "ашық құжатты ашу" немесе "файлды басып шығару" сияқты "жоғары деңгейдегі" оқиғаларды сипаттайды, ал бұрынғы операциялық жүйелер "түрту" және "перне басу" сияқты әлдеқайда қарапайым оқиғаларды қолдаған. Apple оқиғалары Mac OS скрипт жүйесінің, Open Scripting Architecture (оның негізгі тілі AppleScript) негізін құрайды. Бастапқы нүкте – динамикалық түрде терілген, кеңейтілетін AEDesc деп аталатын дескриптор форматы, ол дерек типін анықтайтын OSType кодынан және типке тәуелді деректер блогынан тұрады. Мысалы, OSType inte коды деректің үлкен ендиан форматындағы төрт байттық бүтін сан екенін көрсетеді. Әртүрлі қарапайым типтер үшін алдын ала анықталған типтік кодтардан басқа, екі алдын ала анықталған құрылымдық дескриптор типі бар: дерек типі reco (жазба) болатын AERecord және тізім типімен (тізім немесе массив) AEList. Олардың ішкі құрылымында рекурсивті түрде тізілген AEDesc-тер бар, ал AERecord әр элементті бірегей жазба өрісі идентификаторымен (OSType) байланыстырады. Apple Event Manager осы құрылымдарды құруға, сондай-ақ олардың мазмұнын алуға және мазмұнының типін сұрауға арналған API шақыруларын ұсынады. Apple Event Manager сонымен қатар AEDesc-ті бір дерек типінен екіншісіне түрлендіретін мәжбүрлеуді (coercion) қолдайды. Стандартты мәжбүрлеулерден басқа, мысалы, бүтін сан мен нақты сан арасында, қолданбалар өздерінің мәжбүрлеуді басқарушы кері шақыруларын орната алады, олар арнайы дерек типтеріне және одан түрлендірулерді басқарады. Apple оқиғасы – бұл оқиғаның мақсатына байланысты өрістері бар AERecord. Сонымен қатар, ол Apple Event Manager-де алдын ала анықталған жиынтықтан атрибуттарды (қазір оқиғаның параметрлері деп аталатын жазба өрістерінен ерекшеленеді) қамтиды. Бұл оқиғаның не істеу керектігін (оқиға класы мен оқиға идентификаторы арқылы), оқиға жіберілетін мақсатты мекенжайды (жергілікті немесе қашықтағы машинадағы процесс болуы мүмкін) және оны өңдеудің басқа да әртүрлі опцияларын анықтайды. Қашықтағы машиналар бастапқыда AppleTalk арқылы қосылуы керек еді, бірақ Mac OS 9 TCP/IP арқылы қосылу опциясын қосты. Apple оқиғасын мақсатты процесске жібергеннен кейін, жіберу процесі Apple оқиғасына жауап алуға таңдай алады. Бұл бастапқы оқиғаның өңделуі туралы мақсаттан қайтарылған әртүрлі ақпараттарды, соның ішінде сәттілік/сәтсіздікті көрсететін қате кодын, бастапқы оқиға сұраған кез келген ақпаратты және/немесе басқа да тиісті ақпаратты қамтуы мүмкін. Apple оқиғалары AppleEvent Object Model негізін құрайды, ол өз кезегінде OSA және AppleScript негізін құрайды. 2016 жылдан бастап Apple Event Manager API-нің ресми іске асырылуы C және оның ұрпақтары, соның ішінде C++ тілінде қол жетімді. Сонымен қатар, Cocoa API арқылы Objective-C және Swift үшін ресми байланыстар ұсынылады. Басқа тілдер үшін де бейресми байланыстар бар (шектеулердің әртүрлі деңгейімен), соның ішінде Perl, UserTalk, Ruby және Python.

Скриптті жасау көпірі

Scripting Bridge — macOS фреймворкі, ол қолданбаларға AppleScript сияқты делдалдық скрипт тілін қолданбай бір-бірімен байланысуға мүмкіндік береді. AppleScript сияқты, Scripting Bridge де қолданбалар арасындағы байланыс үшін Apple оқиғаларын пайдаланады. Scripting Bridge көбінесе Objective-C және PyObjC-ден қолданылады.