posts - 644, comments - 2003, trackbacks - 137

My Links

News

Raffaele Rialdi website

Su questo sito si trovano i miei articoli, esempi, snippet, tools, etc.

Archives

Post Categories

Image Galleries

Blogs

Links

Indigo, transparency e comunicazioni all'interno di un appdomain

Al termine della giornata dopo una chiaccherata con Dario, ho fatto una domanda in merito alle ottimizzazioni possibili per un dialog tra un client ed un server Indigo nello stesso appdomain.

In COM eravamo abituati bene e, quando oggetti client e server stavano all'interno dello stesso apartment godevano della notevole ottimizzazione di avere un accesso diretto, tramite puntatore, come se l'infrastruttura COM non esistesse e fosse stato allocata una normale classe C++.

Nella mia domanda ho subito premesso che questo con Indigo non è possibile by design, in quanto oggetti e servizi sono due cose molto diverse, tanto che in Indigo un metodo privato di un oggetto si può esporre in un servizio. Come ho già detto nel precedente post questo ha molto senso per me e lo condivido pienamente.

Fatto sta però che mi sarei aspettato di vedere una sorta di ottimizzazione sotto le spoglie di un binding analogo a NetTcpBinding o NetNamedPipeBinding che in maniera trasparente al client permettesse una sorta di via preferenziale e che non compromettesse le performance nell'accesso locale.

David mi ha risposto che questo è un problema che non dovrebbe essere indirizzato nella prima versione di Indigo ma che è stato ovviamente preso in considerazione dal team di Don Box. Al momento l'unica ottimizzazione, dice David, è che le comunicazioni tra processi nella stessa macchina vengono effettuate tramite named pipes invece di tcp o http e questo è già un buon passo perchè evita la notevole latenza del redirector di rete.

In conclusione la natura SOA di Indigo gli impedirà di sostituirsi a Remoting che rimmarrà vivo e vegeto a lungo.
Paradossalmente invece i WS asmx come li conosciamo oggi, saranno interamente sostituibili visto che convivono già con alcuni concetti di SOA.

Print | posted on mercoledì 23 marzo 2005 14:12 | Filed Under [ .NET [Italiano] ]

Feedback

Gravatar

# re: Indigo, transparency e comunicazioni all'interno di un appdomain

Oltre alla named pipe aggiungerei la serializzazione binaria affinchè si possano raggiungere il massimo di performance con Indigo (che sappia io).
23/03/2005 17:16 | Pierre Greborio
Gravatar

# re: Indigo, transparency e comunicazioni all'interno di un appdomain

Certo Pierre, la serializzazione binaria non l'ho ripetuta perchè l'avevo già citata nel primo post.
Il vero cambio di direzione rispetto a quanto avevo sentito alla PDC'03 è il fatto che non c'è una ottimizzazione specifica per la comunicazione in-process in-appdomain.
Il che implica che:
- Indigo non sostituisce il modello COM
- Indigo non sostituisce il modello Remoting
Ciò che è COM dovrai portarlo a diventare componente dotnet e/o remoting.
Ciò che è remoting non può essere sempre sostituito da Indigo.
Mi sembra che sia un grosso punto da tenere in grossa considerazione prima di pensare di portare tutto dentro SOA.
23/03/2005 17:25 | Raffaele Rialdi
Gravatar

# re: Indigo, transparency e comunicazioni all'interno di un appdomain

Per la comunicazine in-process in-appdomain suggerirei sempre la componente .NET. Del resto usando Indigo (ma anche remoting e web services) come facade la riusabilità del codice rimarrebbe comunque mantenuta.

Per le comunicazioni che escono dal processo allora ha senso (a parer mio) usare Indigo. Poi, vedremo se le cose cambieranno da qui a quando uscirà la versione definitiva ;-)
24/03/2005 01:25 | Pierre Greborio
Gravatar

# re: Indigo, transparency e comunicazioni all'interno di un appdomain

Pierre, su questo non posso concordare.
La facade (se così possiamo chiamarla) è per forza di cose diversa tra componente e servizio. Tanto è vero che [OperationalContract] può essere applicato anche ad un metodo _privato_ della classe.
Il fatto è che, anche in-process in-appdomain puoi usare i componenti dotnet perdi una cosa fondamentale: la trasparenza.
La perdi per due motivi:
- sia perchè i componenti non sono servizi (e questo rende irrecuperabile il concetto di trasparenza anche in future versioni di Indigo).
- sia perchè al momento non ci sono ottimizzazioni (a quanto dice David) per trattare il caso specifico in cui un servizio debba essere usato dallo stesso appdomain che lo contiene.
Trattare il caso speciale in modo diverso (e quindi scrivere una facade per chi vive all'interno dell'appdomain) è architetturalmente un cataclisma.

Diverso è per remoting che non espone (di suo, anche se poi puoi farlo tu) dei servizi ma dei componenti. Per questo dico che Remoting è insostituibile in certi scenari.
Spero di aver chiarito meglio il concetto ...
24/03/2005 10:47 | Raffaele Rialdi
Gravatar

# re: Indigo, transparency e comunicazioni all'interno di un appdomain

Concordo Dario, e vista l'infrastruttura di remoting credo che sia più che fattibile la costruzione di un componente di load balancing.
03/04/2005 02:51 | Raffaele Rialdi
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET