- •Содержание
- •Repository
- •Средства тестирования и анализа
- •Утилита Workbench Organizer
- •Резюме
- •Резюме
- •Резюме
- •Глава 6.Моделирование сущностей и связей
- •Глава 10. Подпрограммы и функции
- •Создание функций увеличения возможности многократного использования текстов
- •Функциональные группы и функции
- •Чтение единственного элемента таблицы
- •Извлечение единственного поля
- •Получение статистической информации
- •Упорядочение результатов запроса
- •Динамическая выборка данных
- •Использование составных критериев выборки Select-Options
- •Динамическое присвоение имен таблиц
- •Вложенные циклы select
- •Представления, определенные в АВАР/4 Dictionary
- •Размер внутренней таблицы
- •Сортировка элементов внутренней таблицы
- •Вставка нескольких строк
- •Изменение таблиц базы данных с помощью команды update
- •Изменение отдельного элемента
- •Изменение нескольких элементов
- •Удаление элементов таблицы базы данных с помощью команды delete
- •Динамическое задание имен таблиц
- •Резюме
- •Временное хранение
- •Пропуск объектов
- •Использование локальных имен для объектов памяти
- •Очистка содержимого объектов памяти
- •Создание отчета
- •Сравнение двух отчетов, разработанных с использованием разных средств
- •Создание программного текста
- •Обработка данных с помощью событий get
- •Что применять: команду select или Logical Databases
- •Задание составных критериев выборки
- •Порядок обработки событий get
- •Работа с несколькими таблицами
- •Глава 16. Пользовательский интерфейс для создания отчетов
- •Определение параметров для экрана выбора
- •События экрана выбора
- •Повышение производительности программы
- •Резюме
- •Детализация объектов
- •Двойной щелчок мышью: событие at line-selection
- •Определение статуса графического интерфейса
- •Проектирование инструментальной линейки приложения
- •Изменение стандартной инструментальной линейки
- •Положение курсора и скрытая информация
- •Команда hide
- •Команда get cursor
- •Фреймы (кадры)
- •Глава 18. Выполнение программы-отчета
- •Вычисление даты в варианте
- •Описание учебной задачи
- •Создание диалоговой программы
- •Создание экрана
- •Задание фрейма с заголовком
- •Работа с сообщениями
- •Вывод сообщения из программы
- •Логический рабочий блок (LUW)
- •Механизм блокировки системы R/3
- •Глава 22. Расширенные функции графического интерфейса
- •Глава 25. Автоматическая генерация программы
- •Связь между программами
- •Вызов удаленной функции
- •Резюме
- •Удаление связей объектов
- •Резюме
- •Приложения
- •Использование Logical Databases при работе с утилитой АВАР/4 Query
- •Простейшие запросы
- •Получение перечня программных элементов
- •Создание заданий (Tasks) и запросы на изменения (Change Requests)
298 |
|
Глава 27 |
|
|
|
|
|
В данной главе подробно рассматривается механизм вызова удаленных функций — Remote Function Call (RFC), обеспечивающий простой способ связи между прикладными программами с помощью вызовов функций АВАР/4. Использование RFC позволяет разработчику не думать о совместимости протоколов, аппаратных платформ и операционных систем. Механизм RFC работает аналогично механизму удаленного вызова процедур (Remote Procedure Call, RPC), реализованному в других программных средах.
Особенно эффективно RFC применяется в информационных системах компаний, имеющих несколько филиалов, в которых установлены собственные системы. Чтобы сотрудники головного офиса могли получать оперативную информацию, рекомендуется использовать вызов удаленных функций, которые будут извлекать данные из соответствующих локальных баз данных. Механизм RFC обеспечивает два вида вызовов: синхронный (с ожиданием ответа) и асинхронный (при котором выполнение вызывающей программы продолжается, а ответ приходит позднее).
Связь между программами
Связь людей друг с другом поддерживается за счет определенных правил. Если звонит телефон, мы поднимаем трубку, говорим: "Алло", - и ждем ответа, а заканчивая разговор, прощаемся и не кладем трубку до тех пор, пока собеседник тоже скажет нам: "До свидания". Это и есть часть "протокола" телефонного разговора на естественном языке. При передаче файлов тоже можно использовать простые правила связи между двумя программами. Обычно набор правил для установки такой связи включает в себя, во-первых, правила начала передачи программой данных в общий файл, во-вторых, условия, когда другой программе разрешено записывать данные в этот файл, и, наконец, определение программы, которая должна закрыть файл. Правила, регулирующие такого рода связь, называются протоколом. Очевидно, что создать такой протокол непросто, так как в нем должно быть предусмотрено множество ситуаций, в том числе и ошибочных. Кроме того, у разных компьютеров разное внутреннее представление чисел, и в протоколе должна быть отражена эта специфика. Компьютеры могут иметь различные кодовые страницы, т.е. отображаемые символы по-разному интерпретируются на разных машинах, например, один ПК использует английский язык, а другой — немецкий. При разработке протокола следует учитывать все особенности гетерогенной среды.
В сетевых средах поддерживается множество подобных протоколов, однако наиболее популярным, пожалуй, можно считать TCP/IP, используемый в Internet. По сути, это набор протоколов, организующий трафик данных между компьютерами сети. Есть протоколы и более высокого уровня, например CPI-C, который когда-то использовался компанией IBM для связи программ. Изначально он был основой межпрограммной связи в языке АВАР/4; разработчик может применять его и сегодня. Хотя создание собственного протокола очень заманчивая идея, реализовать ее чрезвычайно сложно, а обеспечить последующее сопровождение таких программ еще труднее.
Механизм RFC языка АВАР/4 предоставляет удобный способ программной связи приложений с помощью вызова функций АВАР/4, освобождая разработчика от необходимости исследовать особенности протоколов.
Вызов удаленной функции
Под локальным вызовом функции понимается запуск функции в той же системе и на том же компьютере, где исполняется вызывающая ее программа. Удаленным вызовом называется исполнение вызванной функции в другой системе на другом компьютере сети. Для пользователя никакой разницы между ними нет. Единственное отличие заключается в том, что при вызове функции разработчик должен указать в вызывающей программе дополнительный параметр — destination (пункт назначения или адресат).
Предположим, у туристического агентства появилось множество филиалов и в них используются собственные программы. Тогда каждый вечер из программы, работающей в главном офисе, можно запускать удаленный вызов функции, чтобы обновить информацию в центральной базе данных и создать какие-то отчеты. Ниже приведен пример такого вызова удаленной функции: