Передача XML туда и обратно с RPG и .NET - PullRequest
0 голосов
/ 01 декабря 2009

Мне не хватает наилучшей практики передачи XML туда-сюда с RPG и C # .NET. Первоначально я собирался использовать временный физический файл в QTEMP, но, похоже, должен быть лучший способ. Временный файл содержит одну строку документа в одной записи файла. Мне кажется, это добавляет много дополнительной работы, которая действительно не нужна. Я ищу двустороннюю связь.

Одна мысль состоит в том, чтобы передавать параметр 32000 символов вперед и назад, но разве это хорошая идея? Что произойдет, если документ окажется больше этого? Я не думаю, что достигну этого предела, так что, возможно, я буду в порядке?

А как насчет создания временного файла IFS? Похоже, что работы больше, чем нужно.

Что ты думаешь?

Очевидно, что и программы RPG, и C # будут читать и обрабатывать документ XML.

1 Ответ

2 голосов
/ 02 декабря 2009

DB2 поддерживает XML в базе данных. Возможно, ваша RPG может быть вставлена ​​в базу данных (нативная программа на iSeries). Ваша программа на C # .NET может использовать ODBC для извлечения из базы данных. Если вы используете возможности XML в DB2, вы не потеряете теги и структуру XML. В противном случае вы всегда можете использовать столбцы CLOB или BLOB таблицы DB2.

Создание файла в QTEMP не будет работать. Эта библиотека уникальна для каждой работы. Другими словами, у каждой работы есть свой QTEMP. Вы можете увидеть QTEMP заданий с помощью DSPJOB, но не можете получить доступ к QTEMP. И я совершенно уверен, что ваша программа на C # .NET не работает в том же задании iSeries, что и ваша RPG ...

RPG справляется со своими параметрами довольно хорошо. Я не знаю точный максимальный размер от макушки, но он достаточно большой. Таким образом, у вас не будет технической проблемы. Но я думаю, что у вас будут проблемы с развитием. Я попытался отладить вызов программы со многими и / или большими значениями параметров. Поверьте, это было неинтересно в отладчике iSeries 8 - (

В моей нынешней работе мы часто используем MQ для связи между программами. MQ доступен на многих платформах и имеет интерфейсы для многих языков. Это обмен сообщениями вместо прямых звонков (отличается от вашего вопроса), но он прекрасно работает. Вы можете поместить любой объект (маленький, большой, XML или двоичный файл) в очередь, и программа на другой стороне (например, ваша программа на C #) получит его точно так же.

Наконец, не забывайте, что в iSeries есть Java. Доступны библиотеки классов для XML, включая Xalan. Может быть, это путь. Соберите значения в RPG, создайте и отправьте XML с Java. Java и RPG отлично работают вместе.

...