dll in GAC e architetture...

Da un certo periodo, nell'azienda in cui lavoro, sono alle prese con un re-factoring di alcuni componenti installati su dei server.

Trattasi di alcuni assemblies (uno dei quali è anche un servizio) che monitorizzano delle caselle email per salvare eventuali messaggi (e relativi allegati) in raccolte Sharepoint.

Principalmente ne esistono 3 versioni e sono installate CONTEMPORANEAMENTE, perchè ci sono delle differenze nella logica di business a seconda di che casella email viene utilizzata.

La morale della favola comunque è che le funzioni di base sono in comune per tutte, ad esempio:

  • lettura messaggi email
  • spostamento/cancellazione messaggi email
  • inserimento file in document library di Sharepoint

Così ho raggruppato queste funzioni in una libreria (ManagerTool) per centralizzarle, altrimenti ogni assembly aveva un suo funzionamento (con delle leggere quanto fastidiose differenze) e se un messaggio non veniva letto correttamente, bisognava controllare quale versione dell'assembly fosse, aprire il codice, ricordarsi l'architettura particolare di quella versione e debuggarla.

Ora invece se qualcosa non va, il problema è semplicemente nella ManagerTool e, una volta sistemata, è ok per tutti.

Perfetto.

Il problema però è che per ogni assembly avevo aggiunto un reference locale alla dll, con il risultato che ognuno di loro aveva una copia di ManagerTool.dll referenziata.

Non ci vuole molto a capire che, con quell'andazzo, tempo un mese e i problemi si sarebbero ripresentati, sottoforma di duplicazione di n ManagerTool.dll.

La soluzione? Beh...inserire la suddetta dll nella GAC.

Ora tutti gli assemblies finalmente utilizzano la stessa library con le stesse funzioni, direi che la logica è ben centralizzata.

Print | posted @ Friday, March 9, 2007 11:37 AM

Comments have been closed on this topic.