0

我不知道使用 RPG 和 C#.NET 来回传递 XML 的最佳实践。本来我打算在QTEMP中使用一个临时物理文件,但似乎应该有更好的方法。临时文件在文件的一条记录中有一行文档。对我来说,这似乎增加了很多实际上不应该需要的额外工作。我正在寻找双向沟通。

一种想法是来回传递 32000 char 参数,但这真的是个好主意吗?如果文档碰巧比这大怎么办?我不认为我会达到这个极限,所以也许我会没事?

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

你怎么认为?

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

4

1 回答 1

2

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

在 QTEMP 中创建文件将不起作用。该库对于每项工作都是独一无二的。换句话说,每个工作都有自己的 QTEMP。您可以使用 DSPJOB 查看作业的 QTEMP,但无法访问 QTEMP。而且我很确定您的 C#.NET 程序不会在与您的 RPG 相同的 iSeries 作业中运行......

RPG确实很好地处理了他的参数。我不知道我头顶的确切最大尺寸,但它是合理的大。所以,你不会有技术问题。但我认为你会有一个发展问题。我尝试使用参数的许多和/或大值来调试程序调用。相信我,在原生 iSeries 调试器 8-(

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

最后,不要忘记 iSeries 确实有 Java。包括 Xalan 在内的 XML 类库可用。也许这就是要走的路。收集 RPG 中的值,使用 Java 创建和发送 XML。Java 和 RPG 可以很好地协同工作。

于 2009-12-01T21:22:55.270 回答