1. Въведение
1.1. Какво е COM
1.2. Някои често срещани термини
1.3. IUnknown
1.4. IDispatch и двойнствени интерфейси
2. Strawberry prolog като COM клиент
2.1. Жизнен цикъл на COM обект
2.2. Комуникация от клиента към сървъра
2.3. Комуникация от сървъра към клиента
2.4. Работа с оле сървъри
3. Strawberry prolog като COM сървър
3.1. Server
3.2. IStrawberrySvr
3.3. _IStrawberrySvrEvents:
4. Съветникът Object Browser
5. Примери
5.1. Работа с бази от данни
5.2. Media Player
5.3. Работа с XML
6. Какво може да бъде добавено
7. Библиография
Резюме:
Компонентния обектен модел (Component Object browser – COM) е неразделна част от съвременния Windows свят. Той е водещата „стандартна за индустрията“ софтуерна архитектура. При нея има програмно „разделение на труда“ между разработчиците на windows- базирани решения - създатели на използваеми модули и потребители, които ги вграждат в своите приложения. В края на миналия век от първия тип бяха C++ програмисти, запознати със заплетеността на COM теорията, а от втория VBA програмисти („Microsoft Excel – един по добър Visual Basic от Visual Basic“ [1]). В съвремието това разделение е заличено – възможно e да се напише COM компонент и COM клиент дори на VBScript. Съвсем естествено е желанието на пролог програмистите да могат да се възползват от тази утвърдена технология, а не да се принуждават да изучават и използват други езици.
Тази дипломна работа ще опише какви промени бяха направени в Strawberry prolog версия 2.6, за да имаме като резултат пролог програми използващи COM компоненти, както и външни приложения, ползващи пролог програми през COM.
Самата технология както и съпътстващата я терминология непрекъснато се променят (включително и в самия код на Microsoft). Основно ще използвам термините, добили популярност през годините – като водещи ще са понятията от C++ ( тук както и на всякъде по-надолу под C++ имам предвид Microsoft Visual C++ версия 7.0). Те ще бъдат съгласувани с октомврийската версия на MSDN библиотеката [3], а съответните български означения ще са съгласувани с [7]. Понятията от пролог са спрямо версия 2.5 на Strawberry prolog [6].