Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si assegna per la prima volta un oggetto basato su .NET a un messaggio o a una parte del messaggio, il messaggio mantiene un riferimento all'oggetto.
Per garantire efficienza e scalabilità, il motore di orchestrazione non esegue una "copia completa" dell'oggetto, ovvero non copia l'intero contenuto dell'oggetto nel messaggio.
Se successivamente si assegna l'oggetto a un altro messaggio o parte del messaggio, eventuali modifiche apportate all'originale comportano modifiche al secondo messaggio o alla parte del messaggio. È consigliabile evitare questa procedura, perché i risultati sono imprevedibili.
Se è necessario che il secondo messaggio abbia una copia distinta dell'oggetto, è necessario assegnare la prima parte del messaggio o del messaggio al secondo messaggio o parte del messaggio.
Si consideri l'esempio seguente:
Modo errato:
myMsg1 = myObj; // assign the first message
myMsg2 = myObj; // assign the second message (wrong!)
myMsg2.myInt = 100; // modify the second
myMsg1.myInt = 5;
In questo caso, myMsg2.myInt è stato sovrascritto e ora ha il valore 5.
Modo corretto:
myMsg1 = myObj; // assign the first message
myMsg2 = myMsg1; // assign the second message (right!)
myMsg2.myInt = 100; // modify the second
myMsg1.myInt = 5;
In questo caso, myMsg2.myInt ha ancora il valore 100, come previsto.