Pergunta

Eu estou em uma perda aqui de uma melhor prática para passar de volta XML e para trás com RPG e C # .NET. Originalmente, eu ia usar um arquivo físico temporário no QTEMP, mas parece ser a de que deve haver uma maneira melhor. O arquivo temporário tem uma linha do documento em um registro do arquivo. Para mim, isso parece acrescentar um monte de trabalho extra que realmente não deve ser necessário. Estou à procura de uma comunicação de duas vias.

Um pensamento é para passar um parâmetro de volta 32000 carvão e para a frente, mas é que realmente uma boa idéia? O que acontece se o documento passa a ser maior do que isso? Eu não acho que eu teria atingido esse limite, então talvez eu ficaria bem?

O que sobre a criação de um arquivo IFS temporário? Isso parece mais trabalho do que é necessário também.

Quais são seus pensamentos?

Obviamente, tanto o RPG e programas de C # serão leitura e processamento do documento XML.

Foi útil?

Solução

O DB2 suporta XML no banco de dados. Talvez o seu RPG pode inserir no banco de dados (programa nativo do iSeries). Seu programa C # .NET pode usar ODBC para recuperar do banco de dados. Se você usar as possibilidades XML de DB2, então você não vai perder as tags e estrutura xml. Caso contrário, você sempre pode usar os CLOB ou BLOB colunas de uma tabela DB2.

Criando o arquivo em QTEMP não vai funcionar. Essa biblioteca é única para cada trabalho. Em outras palavras, cada trabalho tem seu próprio QTEMP. Você pode ver o QTEMP de empregos com DSPJOB, mas você não pode acessar o QTEMP. E estou certo de que o seu C # .NET programa não executar no mesmo emprego iSeries como seu RPG ...

RPG fazer lidar com seus parâmetros muito bem. Eu não sei o tamanho máximo exato do topo da minha cabeça, mas é grande razoável. Assim, você não terá um problema técnico. Mas eu acho que você vai ter um problema de desenvolvimento. Eu tentei chamada do programa de depuração com muitos, e / ou grandes valores para os parâmetros. Acredite em mim, que não foi divertido nas iSeries nativas depurador 8 - (

No meu trabalho atual fazemos uso MQ muito a comunicação entre programas. MQ está disponível em muitas plataformas e tem interfaces para muitas línguas. É de mensagens em vez de chamadas diretas (diferente, então a sua pergunta), mas ele funciona muito bem. Você pode colocar qualquer objeto (pequeno, grande, XML ou arquivo binário) para a fila e o programa em (por exemplo, o seu programa C #) do outro lado vai recebê-lo exatamente o mesmo.

Por fim, não se esqueça que as iSeries têm Java a bordo. bibliotecas de classes para XML, incluindo Xalan estão disponíveis. Talvez seja o caminho a percorrer. Reúna os valores em RPG, criar e enviar o XML com Java. Java e RPG funciona bem juntos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top