.NET e COM: l'unione fa la forza!

di Riccardo Golia, in DotNet,

In questo periodo qua in banca sto affrontando un po' di problematiche relative ai componenti serviced .NET di tipo transazionale. In particolare la chiamata asincrona di un metodo di un componente transazionale tramite MSMQ ricorre al metodo Marshal.BindToMoniker per associare il riferimento univoco (moniker) di un oggetto in ambito COM unmanaged all'equivalente managed (ovvero una interfaccia per la quale è abilitato il queuing).

Dim objCOM As ComMoneyTrans.IMoneyTrans =
DirectCast(Runtime.InteropServices.Marshal.BindToMoniker
("queue:/new:ComMoneyTrans.ASyncMoneyTrans"), ComMoneyTrans.IMoneyTrans)
objCOM.ExecuteMoneyTransaction(sourceAccount, targetAccount, moneyAmount)
objCOM.ExecuteMoneyTransaction(targetAccount, bankAccount, moneyAmount*Percent)
Runtime.InteropServices.Marshal.ReleaseComObject(objCOM)
objCOM = Nothing

Questo fatto mi ha fatto pensare un po'... I meccanismi di marshaling tra ambiente COM e ambiente .NET sono abbastanza complessi, però lasciano molta discrezionalità e molte possibilità agli sviluppatori circa le scelte implementative. Inoltre le potenzialità e i vantaggi di un ambiente come è quello .NET totalmente managed unite alla potenza di COM, nonostante la sua complessità intrinseca (su questo non penso ci siano particolari obiezioni), possono realmente permettere di realizzare soluzioni di una certa consistenza anche in settori in cui la scelta in passato è spesso ricaduta su tecnologie alternative.

Un saluto a tutti.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese