Share via


Flusso di messaggi e adapter SAP

L'adapter Microsoft BizTalk per mySAP Business Suite supporta lo streaming di messaggi tra se stesso e un'applicazione client. Con le operazioni dell'adapter SAP vengono richiamate e le risposte vengono restituite scambiando messaggi SOAP. Un corpo del messaggio SOAP è costituito da nodi XML.

Esistono due tipi di streaming di messaggi supportati dall'adapter:

  • Streaming dei nodi. Nel flusso di nodi è possibile trasmettere un messaggio a un nodo alla volta tra il client e l'adattatore. Ciò significa che l'intero valore di un nodo viene letto in un buffer e quindi inviato al ricevitore.

  • Streaming del valore del nodo. Nel flusso node-value il valore effettivo del nodo può essere trasmesso in blocchi tra il client e l'adattatore. Il flusso node-value è utile per l'invio o la ricezione di IDOC di grandi dimensioni tramite le operazioni SendIdoc o ReceiveIdoc. Ciò è dovuto al fatto che l'intero IDOC è contenuto in un singolo nodo. Anziché un'operazione di invio o ricezione fortemente tipizzata in cui i dati IDOC sono suddivisi in molti nodi.

Importante

Il flusso node-value è supportato solo tra l'adapter e un'applicazione client. L'adattatore SAP non supporta lo streaming end-to-end node-value con il sistema SAP. Ciò è dovuto al fatto che questa funzionalità non è supportata dalla libreria client SAP.

Entrambe queste modalità di streaming si basano sul supporto per lo streaming dei nodi e lo streaming di valori di nodo nei messaggi in WCF. Per questo motivo, lo streaming è strettamente legato al modo in cui i messaggi vengono creati e utilizzati sia dall'adattatore che da un'applicazione client. Un risultato è che il supporto per lo streaming di messaggi non è lo stesso in tutti i modelli di programmazione.

Le sezioni di questo argomento forniscono:

  • Informazioni di base fondamentali sul modo in cui il flusso di messaggi è supportato in WCF e su come viene implementato dall'adapter.

  • Informazioni sul modo in cui il flusso di messaggi è supportato quando si usa l'adattatore in ogni modello di programmazione.

Nozioni fondamentali sul flusso

Il supporto per lo streaming implementato dall'adattatore SAP è una combinazione di:

  • Supporto per lo streaming di messaggi in WCF.

  • Supporto per lo streaming nella libreria client SAP.

  • Il modo in cui i messaggi vengono creati e utilizzati internamente dall'adapter.

Supporto per lo streaming di messaggi in WCF

Il modo in cui WCF supporta lo streaming in un messaggio dipende sia dalla modalità di creazione del messaggio che dalla modalità di utilizzo del messaggio.

  • Un messaggio WCF viene creato usando il metodo Create statico di System.ServiceModel.Channels.Message. Questo metodo include diversi overload che supportano diversi modi per passare il corpo del messaggio. È possibile creare un messaggio WCF passando il corpo del messaggio usando:

    • Un System.Xml. XmlReader o

    • System.ServiceModel.Channels.BodyWriter.

  • È possibile utilizzare un messaggio WCF tramite

    • XmlReader chiamando Message.GetReaderAtBodyContents()o

    • XmlDictionaryWriter chiamando Message.WriteBodyContents(XmlDictionaryWriter).

    Nella tabella seguente viene illustrato il comportamento di WCF per diverse combinazioni di creazione e utilizzo di messaggi.

Messaggio creato con Messaggio utilizzato con Comportamento WCF
XmlBodyWriter XmlDictionaryWriter Il flusso node-value è supportato. WCF invia tramite pipe i due writer per abilitare lo streaming. Sia XmlBodyWriter che XmlDictionaryWriter devono supportare lo streaming di valori di nodo affinché venga eseguito.
XmlBodyWriter XmlReader Il flusso dei nodi è supportato. WCF memorizza internamente nel buffer xmlReader.
XmlReader XmlDictionaryWriter Il flusso dei nodi è supportato. WCF memorizza internamente nel buffer XmlReader e richiama xmlDictionaryWriter.
XmlReader XmlReader Il flusso dei nodi è supportato. WCF memorizza internamente nel buffer xmlReader.

Supporto per lo streaming nella libreria client SAP

La libreria client SAP non supporta lo streaming. Di conseguenza, lo streaming end-to-end node-value non è supportato dalla scheda SAP.

Gestione dei messaggi interni da parte dell'adapter

L'adattatore supporta lo streaming nel modo seguente:

  • L'adapter utilizza il messaggio di richiesta SendIdDoc ricevuto dal client usando un'implementazione personalizzata di XmlDictionaryWriter. Utilizza tutti gli altri messaggi ricevuti dal client usando un XmlReader.

  • L'adapter crea il messaggio di richiesta ReceiveIdoc inviato al client usando un'implementazione personalizzata di XmlBodyWriter. Crea tutti gli altri messaggi inviati al client usando un XmlReader.

Supporto per lo streaming nel modello di canale WCF

Nella tabella seguente vengono fornite informazioni dettagliate sulla modalità di supporto dello streaming nel modello di canale WCF.

Operazione Node Streaming streaming Node-Value Descrizione
Operazioni RFC e BAPI in uscita (dal client alla scheda) Non supportato Non supportato
Operazioni tRFC in uscita (dal client alla scheda) Non supportato Non supportato
Operazione di invio IDOC (fortemente tipizzata) Non supportato Non supportato
Operazione di ricezione IDOC (fortemente tipizzata) Supportato Non supportato
Operazione SendIdoc (stringa) Supportato Supportato L'adapter utilizza un oggetto XmlDictionaryWriter per utilizzare il messaggio di richiesta. Se il client crea il messaggio con bodywriter, si verifica lo streaming del valore del nodo dal client all'adattatore.
Operazione ReceiveIdoc (stringa) Supportato Supportato L'adapter usa bodywriter per creare il messaggio di richiesta. Se il client utilizza il messaggio utilizzando un oggetto XmlDictionaryWriter, si verifica lo streaming del valore del nodo dall'adattatore al client.
Operazioni RFC in ingresso Non supportato Non supportato
Operazioni tRFC in ingresso Non supportato Non supportato

Per informazioni su come implementare lo streaming node-value nel codice per inviare e ricevere IDOC (stringa) flat usando le operazioni SendIdoc e ReceiveIdoc, vedere Stream Flat-File IDOCs in SAP usando il modello di canale WCF.

Supporto streaming nel modello di servizio WCF

Serializzazione e deserializzazione tra la rappresentazione XML di un messaggio e la rappresentazione dell'oggetto codice gestito di tale messaggio richiede la scrittura e la lettura dell'intero messaggio in memoria. Per questo motivo, non è supportato il flusso di nodi né il flusso node-value dal modello di servizio WCF.

Supporto streaming in BizTalk Server

Nella tabella seguente vengono fornite informazioni dettagliate sul modo in cui lo streaming è supportato in BizTalk Server.

Operazione Streaming dei nodi streaming Node-Value Descrizione
Operazioni RFC e BAPI (dal client all'adattatore) Non supportato Non supportato
Operazioni tRFC (dal client all'adattatore) Non supportato Non supportato
Operazione di invio IDOC (fortemente tipizzata) Non supportato Non supportato
Operazione di ricezione IDOC (fortemente tipizzata) Supportato Non supportato
Operazione SendIdoc (stringa) Supportato Supportato L'adattatore WCF-Custom usa BodyWriter per creare il messaggio di richiesta, quindi il flusso node-value è supportato.
Operazione ReceiveIdoc (stringa) Supportato Supportato L'adattatore WCF-Custom usa un oggetto XmlDictionaryWriter per l'utilizzo del messaggio di richiesta, pertanto è supportato il flusso node-value.
Operazioni RFC in ingresso Non supportato Non supportato
Operazioni tRFC in ingresso Non supportato Non supportato

Vedere anche

Sviluppare applicazioni SAP