Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Р. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР4.pdf
Скачиваний:
503
Добавлен:
17.02.2016
Размер:
29.74 Mб
Скачать

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 (пункт назначения или адресат).

Предположим, у туристического агентства появилось множество филиалов и в них используются собственные программы. Тогда каждый вечер из программы, работающей в главном офисе, можно запускать удаленный вызов функции, чтобы обновить информацию в центральной базе данных и создать какие-то отчеты. Ниже приведен пример такого вызова удаленной функции: