Files
mapo-core/MP.SPEC/Data/Refactor_Plan.md
T
2026-06-01 09:44:10 +02:00

4.2 KiB

Piano di Refactoring: Migrazione a FusionCache in MpDataService.cs

Stiamo lavorando sul progetto MP-SPEC.sln, dentro la cartella MP-SPEC (ed i progetti da cui dipende).

Voglio ottimizzare il file Data\MpDataService.cs

Obiettivo

Migrare la logica di caching manuale (Redis + DB) verso l'utilizzo di IFusionCache per implementare un approccio multi-layer (Memory + Redis + DB), standardizzando l'accesso ai dati.

Strategia di Migrazione

  • Metodo Standard: GetOrFetchAsync<T>(string operationName, string cacheKey, Func<Task<T>> fetchFunc, TimeSpan expiration, params string[] tagList).
  • Invalidazione: Utilizzare i tag tramite FlushFusionCacheByTagAsync.

Stato Avanzamento

Fase 1: Analisi e Mapping (Completata)

  • Analisi di MpDataService.cs effettuata.
  • Identificati i metodi con caching manuale (Redis/DB) e quelli già migrati a GetOrFetchAsync.

Fase 2: Refactoring Metodi di Lettura (Cache-aside) (Completata)

Metodi Migrati o Confermati (Pattern corretto per l'uso previsto)

  • AnagEventiGeneralAsync
  • AnagStatiCommAsync
  • AnagTipoArtLvAsync
  • ArticleWithDossierAsync
  • ArticoliCountAsync
  • ArticoliCountSearchAsync
  • ArticoliGetByTipoAsync
  • ArticoliGetSearchAsync
  • ArticoliInKitAsync
  • ConfigGetAllAsync
  • DossiersGetLastFiltAsync
  • ElencoAziendeAsync
  • ElencoGruppiFaseAsync
  • ElencoLinkAsync
  • IstKitFiltAsync
  • ListGiacenzeAsync
  • MacchineGetFiltAsync
  • MacchineRecipeArchiveAsync
  • MacchineRecipeConfAsync
  • MacchineWithFluxAsync
  • MachineWithOdlAsync
  • MachIobConfAsync
  • OdlByBatchAsync (Migrato e rinominato)
  • OdlListGetFiltAsync
  • OperatoriGetFiltAsync
  • ParametriGetFiltAsync
  • PODL_getDictOdlPodlAsync (Gestione manuale L1/L2 con FusionCache)
  • POdlGetByOdlAsync
  • POdlToKitListGetFiltAsync
  • StatoMacchinaAsync
  • TksScoreAsync
  • Traduci (Migrato con GetOrSet su dizionario lingua)
  • WipKitFiltAsync
  • MseGetAllAsync (Migrato e rinominato)
  • OdlByKeyAsync (Migrato e rinominato)
  • TemplateKitDeleteAsync (Migrato con tag invalidazione)
  • TemplateKitUpsertAsync (Migrato con tag invalidazione)
  • WipKitDeleteAsync (Migrato con tag invalidazione)
  • WipKitUpsertAsync (Migrato con tag invalidazione)
  • AnagGruppiDeleteAsync (Migrato con tag invalidazione)
  • AnagGruppiUpsertAsync (Migrato con tag invalidazione)
  • Grp2MaccDeleteAsync (Migrato con tag invalidazione)
  • Grp2MaccInsertAsync (Migrato con tag invalidazione)
  • Grp2OperDeleteAsync (Migrato con tag invalidazione)
  • Grp2OperInsertAsync (Migrato con tag invalidazione)
  • ArticoliDeleteRecord (Migrato con FlushCacheArticoli)
  • ArticoliUpdateRecord (Migrato con FlushCacheArticoli)
  • DossiersDeleteRecordAsync (Migrato con tag invalidazione)
  • DossiersTakeParamsSnapshotLast (Migrato con tag invalidazione)
  • DossiersInsert (Migrato con tag invalidazione)
  • DossiersUpdateValoreAsync (Migrato con tag invalidazione)
  • ElencoRepartiDTO (Migrato)
  • PodlIstKitDeleteAsync (Migrato con tag invalidazione)
  • POdlUpdateRecipe (Migrato con tag invalidazione)
  • POdlUpdateRecord (Migrato con tag invalidazione)
  • POdlGetByKey (Migrato con FusionCache)
  • POdlListByKitParentAsync (Migrato con FusionCache)
  • ActionGetReq (Pattern Redis/Channels corretto)
  • ActionSetReq (Pattern Redis/Channels corretto)
  • DbDedupStatsAsync (Pattern Redis persistente corretto)
  • ProcFLStats (Pattern Redis persistente corretto)
  • RecDbMaintStatAsync (Pattern Redis persistente corretto)

🛠️ Metodi da Migrare (Nessuno)

  • Nessun metodo residuo richiede migrazione a FusionCache.

Fase 4: Verifica (Completata)

  • Verificare la compilazione della soluzione tramite script PowerShell.
  • Controllare che i log (NLog) continuano a riflettere correttamente le operazioni.
  • Verifica coerenza signature (async/task/sync).

Rischi e Mitigazioni

  • Rischio: Discrepanza nelle chiavi di cache tra vecchio e nuovo sistema.
    • Mitigazione: Utilizzare rigorosamente le costanti in Utils.redis... per garantire che le chiavi siano identiche o gestite dal nuovo sistema.
  • Rischio: Errori di serializzazione.
    • Mitigazione: FusionCache gestisce la serializzazione, ma è necessario assicurarsi che i tipi di ritorno siano compatibili con le aspettative dei chiamanti.