2.8 KiB
2.8 KiB
Piano di Refactoring: Migrazione a FusionCache in 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
FlushCacheByTagsAsync.
Stato Avanzamento
Fase 1: Analisi e Mapping (Completata)
Fase 2: Refactoring Metodi di Lettura (Cache-aside)
✅ Completati (Migrati con GetOrFetchAsync)
ActionGetReqAnagEventiGeneralAsyncAnagStatiCommAsyncAnagTipoArtLvAsyncArticleWithDossierAsyncArticoliGetByTipoAsyncArticoliGetSearchAsyncConfigGetAllAsyncDossiersGetLastFiltAsyncElencoAziendeAsyncElencoGruppiFaseAsyncElencoLinkAsyncFluxLogGetLastFiltAsyncFluxLogParetoAsyncOperatoriGetFiltAsyncPOdlGetByOdlAsyncPOdlListGetFiltAsyncTksScoreAsyncWipKitFiltAsyncMacchineRecipeArchiveAsyncMacchineRecipeConfAsync
⏳ In corso / Da Migrare
AnagEventiGetByMacchAnagKeyValGetAllConfigGetAll(Sincrono)ConfigTryGet(Sincrono)ConfigTryGetAsyncDbDedupStatsElencoRepartiDTOExpiryReloadParamGetIobInfoListPODL_ByCodArtMacchineGetFiltMachIobConfMachIobConfValMseGetAllOdlByBatchOdlGetCurrentAsyncOdlListGetFiltOperatoriGetFilt(Sincrono)ParametriGetFiltPOdlGetByKeyPOdlListByKitParentProcFLStatsStatoMacchinaTagConfGetKeyVocabolarioGetAll
Fase 3: Refactoring Metodi di Scrittura e Invalidazione
AnagGruppiDeleteAnagGruppiUpsertArticoliDeleteRecordArticoliUpdateRecordConfigResetCacheDossiersDeleteRecordDossiersTakeParamsSnapshotLastIstKitDeleteIstKitInsertByWKSIstKitUpsertPodlIstKitDeletePOdlDoSetupPOdlUpdateRecipePOdlUpdateRecordRecipeSetByPODLTemplateKitDeleteTemplateKitUpsert
Fase 4: Verifica
- Verificare la compilazione della soluzione tramite script PowerShell.
- Controllare che i log (NLog) continuino a riflettere correttamente le operazioni.
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.
- Mitigazione: Utilizzare rigorosamente le costanti in
- Rischio: Errori di serializzazione.
- Mitigazione:
FusionCachegestisce la serializzazione, ma è necessario assicurarsi che i tipi di ritorno siano compatibili con le aspettative dei chiamanti.
- Mitigazione: