Creare oggetti transazionali COM+

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Una semplice classe

Proviamo a creare un piccolo esempio con VB6. Per realizzarlo è sufficiente creare un progetto ActiveX DLL, impostare un riferimento alla typelibrary di COM+, definire una classe, attribuire il valore "RequiresNewTransaction" alla sua proprietà MTSTransactionMode, e creare a parte un progetto di prova (un EXE, o una pagina ASP) che istanzi questa classe e ne chiami un metodo che andremo ora a scrivere.

In questo metodo andiamo a fare due o più operazioni su un database di prova (per esempio aggiungiamo un record in una tabella ed un altro record in un'altra tabella). A questo punto invochiamo il metodo setCommit o il metodo setAbort (direttamente dal debug di VB6 per fare prima a confrontare i due comportamenti, oppure con le opportune condizioni di test se vogliamo eseguire il compilato).

Vedremo che le operazioni che abbiamo scritto vengono entrambe eseguite o annullate a seconda di quello che abbiamo richiesto.

Il tutto, faccio notare, senza aver inserito nessun comando esplicito per la gestione della transazione e definirne l'avvio.

Prova con più componenti

Per vedere i veri vantaggi di questo approccio dichiarativo è necessario però sviluppare un progetto con più di un componente. Tipicamente è importante creare un componente del Business Layer che gestisca la logica dell'operazione che vogliamo implementare, e diversi componenti del Data Access Layer che gestiscano le iterazioni elementari con il database.

Aggiungiamo quindi un nuovo metodo al componente creato in precedenza (che diventerà il nostro componente di business layer), e creiamo un nuovo progetto ActiveX dll con almeno un paio di classi (che fungerà da strato DAL per la nostra applicazione). Per ciascuna di queste classi impostiamo l'attributo MTSTransactionMode a requiresTransaction, e definiamo uno o più metodi che compiano operazioni sul database (di nuovo, ad esempio, aggiunta di record a tabelle diverse). Il tutto, faccio ben notare, senza inserire nel codice nessun comando o riferimento alla transazione (nemmeno, questa volta, il comando per il commit o l'abort della transazione). Scriviamo i nostri metodo come se esistessero solo loro.

A questo punto torniamo al metodo creato nell'oggetto di Business Level creato in precedenza, e scriviamo il relativo codice. In particolare, quello che faremo è inserire una serie di chiamate ai metodi degli oggetti DAL appena creati e quindi, alla fine, chiamare nuovamente setComplete o setAbort per indicare cosa vogliamo che venga fatto della transazione.

Eseguiamo il tutto come nell'esempio precedente, e vedremo che tutte le operazioni, anche se eseguite da metodi diversi in classi diverse di progetti diversi (e potrebbero agire addirittura su database diversi) vengono eseguite o annullate.

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC