MP.IOC
MAPO IOC: WebApi rest per la gestione delle chiamate dagli applicativi remoti sul campo (IOB-PI su Raspberry Pi e IOB-WIN su PC Windows) che si occupano di comunicare con le varie macchine di processo i dati da trasmettere al MES.
È la nuova implementazione del modulo IO (il precedente era fatto in .NET Framework 4.7.2) su cui si sta dirigendo lo sviluppo della soluzione MES MAPO.
Integra raccolta di informazioni riguardo ai compiti svolti e questi sono ottimizzati per l'impiego di cache e ottimizzazioni varie su ogni strato del progetto.
Sezioni Principali
- Api IOB (
api/IOB) — endpoint principale per comunicazioni da campo (52 metodi) - Benchmark Redis (
api/Bench) — tool di test per debugging Redis - Api Ricette (
api/Recipe) — recupero ricette per PODL - Dashboard Blazor — interfaccia web interattiva
Architettura
Livello Controller (MP.IOC/Controllers/)
| Controller | Routing | Methods | Descrizione |
|---|---|---|---|
IOBController |
api/IOB |
52 | Endpoint principale per IOB-PI/IOB-WIN |
BenchController |
api/Bench |
10 | Test/benchmark Redis |
RecipeController |
api/Recipe |
2 | API ricette (JSON) |
RecipeArchiveController |
api/RecipeArchive |
2 | API archive ricette (file) |
Livello Dati
| Componente | Tipologia | Descrizione |
|---|---|---|
MpDataService |
Singleton | Service di accesso dati principale (~3475 righe) |
MpIocController |
Singleton | 82 metodi EFCore nel progetto MP.Data |
Redis |
2 connessioni | redisConn, redisConnAdmin per dati IOB |
MongoDB |
Via MpMongoController |
Storage ricette |
Livello DbContext
| DbContext | ConnStr | Uso |
|---|---|---|
MoonProContext |
MP.Data |
Tabelle anagrafiche, ODL, produzione, macchine |
MoonPro_UtilsContext |
MP.Utils |
Tabelle utility (VMSFD, MicroStati) |
MoonPro_FluxContext |
MP.Flux |
FluxLog, configurazioni flusso |
Livello DI
Registrato via AddIocDataLayer() in MP.Data/DataServiceCollectionExtensions.cs:
Singleton: IMtcSetupRepository, IMtcSetupService, ProductionRepository, MpIocController, MpDataService, IFusionCacheSerializer
Scoped: IIocRepository, IStatsAggrRepository, IStatsDetailRepository, IIocService, IStatsAggrService, IStatsDetailService
Livello Infrastruttura
- FusionCache — L1 Memory only (1min default), NO Redis backplane
- MessagePipe — Broadcasting real-time tra servizi
- OpenTelemetry — Tracing configurabile (non abilitato in MP.IOC)
- Swagger — Documentazione API in svilup
Refactoring Completati
Nessuno ancora. Il progetto è pronto per il refactoring. Vedi refactor_plan.md per il piano dettagliato.
Refactoring in Corso (Riferimento)
Piano Generale (Vedi refactor_plan.md)
- Fase 1 — Anti-Pattern (Quota completata): Rimuovere
static IConfigurationdai 4 controller - Fase 2 — FusionCache: Abilitare L2/L3 con Redis backplane e migrare i ~100 metodi di caching manuale
- Fase 3 — Repository IoC: Scomporre MpIocController (82 metodi) in 5-7 repository focalizzati
- Fase 4 — Scomposizione MpDataService: Il monolite da 3475 righe suddiviso in servizi tematici
- Fase 5 — Build & Verifica: Validazione finale su tutte le soluzioni
Stato attuale: In attesa di inizio Fase 1.