代码之家  ›  专栏  ›  技术社区  ›  Mike Wills

使用RPG和.NET来回传递XML

  •  0
  • Mike Wills  · 技术社区  · 15 年前

    在这里,我对使用RPG和C.NET来回传递XML的最佳实践感到茫然。最初,我打算在qtemp中使用一个临时物理文件,但似乎应该有更好的方法。临时文件在文件的一个记录中有一行文档。对我来说,这似乎增加了很多不需要的额外工作。我在找一个双向交流。

    一种想法是来回传递一个32000字符的参数,但这真的是一个好主意吗?如果文档恰好大于该值,会发生什么?我不认为我会达到那个极限,所以也许我会好起来?

    创建一个临时IFS文件怎么样?这似乎比需要做的工作还要多。

    你有什么想法?

    显然,RPG和C程序都将读取和处理XML文档。

    1 回复  |  直到 15 年前
        1
  •  2
  •   robertnl    15 年前

    DB2支持数据库中的XML。也许您的RPG可以插入数据库(iSeries上的本机程序)。C.NET程序可以使用ODBC从数据库中检索。如果您使用DB2的XML可能性,那么就不会失去标记和XML结构。否则,您可以始终使用DB2表的CLOB或BLOB列。

    在qtemp中创建文件将不起作用。那个图书馆对每项工作都是独一无二的。换句话说,每个工作都有自己的时间。使用dspjob可以看到作业的qtemp,但不能访问qtemp。我很肯定你的c.NET程序不会和你的RPG在同一个iSeries作业中运行…

    RPG的参数处理得很好。我不知道从头顶算起的最大尺寸,但它相当大。所以,您不会遇到技术问题。但我认为你会有一个发展问题。我尝试用许多和/或大的参数值调试程序调用。相信我,在本机的iSeries调试器8中这可不是什么乐趣。-(

    在我目前的工作中,我们经常使用MQ在程序之间进行通信。MQ在许多平台上都可用,它具有多种语言的接口。它是信息传递而不是直拨电话(与你的问题不同),但效果很好。您可以将任何对象(小的、大的、XML或二进制文件)放入队列,而另一端的程序(例如您的C程序)将接收到完全相同的对象。

    最后,不要忘记iScice在Java上有Java。包含xalan的XML类库可用。也许这就是该走的路。在RPG中收集值,用Java创建和发送XML。Java和RPG一起工作很好。