Вызов веб-сервисов из пакетных программ мэйнфреймов - PullRequest
3 голосов
/ 18 февраля 2011

В настоящее время мы рассматриваем возможность частичной миграции из основного фрейма.

Некоторые функции, написанные в мэйнфрейме Cobol, вызываются из пакетных программ мэйнфреймов.

Мы хотели бы переместитьэти программы cobol от мэйнфрейма.

Если, например, мы перенесли функциональность программы cobol в веб-службу Java или .Net.Можно ли вызвать этот веб-сервис из пакетной программы мэйнфрейма?

Ответы [ 4 ]

2 голосов
/ 22 февраля 2011

В предыдущей жизни я писал процедуры на ассемблере для вызова стека TCP / IP из PL / 1, используя методы, описанные здесь, которые также работают для COBOL:

http://publib.boulder.ibm.com/infocenter/zos/v1r9/index.jsp?topic=/com.ibm.zos.r9.halz002/tcpipapis.htm

К сожалению, я не могу поделиться ими с вами, но они не были слишком сложными.Имейте в виду, что веб-сервис будет заинтересован в ASCII или UTF-8, и ваш COBOL, вероятно, использует EBCDIC, поэтому кто-то должен выполнить перевод.

Как только вы сможете общаться с сокетом,сформулировать ваш веб-запрос с различными заголовками, а затем декодировать результаты ... это не тривиально, но это возможно.Надеюсь, это поможет.

2 голосов
/ 18 февраля 2011

Прежде всего, я не уверен, есть ли способ вызывать веб-сервисы напрямую из Cobol, но у нас была похожая проблема при попытке вызова веб-сервисов из iSeries (AS400) с использованием RPG и CL.

В конце мы написали простую Socket-программу на Java, работающую на сервере, который мы назвали WebServiceBridge, а программа-мост просто взяла данные из программы-сокета и сконструировала вызов веб-сервиса на Java.Результаты, которые мы просто передали через сокет.

Если Cobol борется с веб-сервисами, то это может быть простым решением.Имейте в виду, однако, что ваш мост необходимо будет контролировать, упругим и всегда доступным так же, как вы проектировали бы свои веб-сервисы.

1 голос
/ 21 февраля 2011

[это предполагает, что под «веб-службой» вы подразумеваете HTTP (S) и SOAP]

API для CICS TS 3.1 и выше включает в себя возможность для прикладных программ вызывать веб-службы.Приложения CICS обычно являются интерактивными, но их можно вызывать из существующих пакетных приложений через внешний интерфейс CICS.Этот интерфейс использует запятую CICS, поэтому передаваемые данные должны помещаться в буфер 32K.

Еще один маршрут в CICS - MQSeries (теперь переименованный в WebSphereMQ).В этом случае ваше пакетное приложение поместит данные (без ограничения 32 КБ в этом случае) в очередь, которая определяется как запущенная, монитор запуска автоматически запустит приложение CICS.Приложение CICS будет возвращать ответ веб-службе через очередь ответов.

Если бы вы выполнили одно из этих действий, я бы ожидал, что время на пакетном задании увеличится.Просто для перемещения по сети требуется больше времени для выполнения некоторого кода, чем для локального выполнения этого кода.

0 голосов
/ 13 сентября 2013

Я сделал это. Использование программы на языке c для выполнения вызовов http и программы интерфейса cobol с тетрадью cobol, чтобы она выглядела для приложения как любой другой вызов программы. Все заголовки http преобразуются в ascii и обратно программой c, а полезные данные преобразуются из хоста.

...