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 |