Architettura (recupero)
Note
Diagrammi a livelli (C4-like) resi con Mermaid. Confidenza indicata per blocco. Vedi anche CONF-001 sulla superficie WCF/SOAP.
C4 — System Context (SUPPORTED)
flowchart TB
user["Utenti applicativi<br/>(facility, help desk, tecnici, contabilità)"]
op["Operatori / Deployer Descor"]
subgraph Infocad["Piattaforma Infocad"]
web["InfocadWeb<br/>ASP.NET Web Forms"]
srv["InfocadServer<br/>Windows Services + WCF sottile"]
integ["InfocadIntegration<br/>ASMX host, loader, scheduler"]
end
ora[("Oracle<br/>INFOCAD / REQUESTCENTER / DEM / ASPNET")]
ext["Sistemi esterni<br/>Alfresco, Opentext, SSO SAML, OTRS, sistemi cliente"]
user --> web
op --> srv
web --> ora
srv --> ora
integ --> ora
web -. "SSO / SAML" .-> ext
integ -. "doc save / ticket import" .-> ext
web -. ".NET Remoting<br/>+ binari condivisi" .-> srv
Important
Rettifica a CLM-000008 (2026-07-24). L'integrazione Web↔Server non è prevalentemente
mediata dal database: sono tre canali distinti e verificati — cartella di binari condivisa
Assembly/ (build time, 1841 reference), .NET Remoting (runtime, 188 endpoint .rem /
231 registrazioni) e il database Oracle condiviso (dati). Non è WCF.
Dettaglio: Interazioni tra i componenti.
C4 — Container (VERIFIED salvo note)
flowchart TB
subgraph WEB["InfocadWeb (149 progetti · 144 v4.8 + 3 net8 XNET)"]
cass["Cassandra (shell)<br/>615 aspx / 1862 ascx"]
subwebs["Sub-web CASSANDRA<br/>RequestCenterWeb, PropertyCenterWeb, GlobalWeb…"]
rc["RequestCenter (BL condivisa)"]
rcdal["RequestCenter.DAL.OracleODP<br/>(+ *XNET net8)"]
iws["InfocadIntegrationWS<br/>19 .asmx + 6 .svc"]
authmod["InfocadAuthenticationModule<br/>+ ExternalAuth SSO"]
end
subgraph SRV["InfocadServer (159 progetti · 139 v4.8 + 20 net8 XNET)"]
winsvc["Windows Services:<br/>InfocadServer, IEMServer, ECMServer"]
dom["Slice per-dominio<br/>SharedObjects·Interface·DAL·BL·Controllers"]
dal["DAL: Execute*StoredProcedure<br/>(238 file, ~2700 siti)"]
quartz["JobScheduler (Quartz.NET)"]
wcf["EnergyService (WCF sottile)"]
connsvc["ConnectionsService<br/>(riscrive .exe.config al deploy)"]
end
ora[("Oracle service dev")]
cass --> subwebs --> rc --> rcdal --> ora
authmod --> ora
iws --> ora
winsvc --> dom --> dal --> ora
quartz --> dal
wcf --> dal
connsvc -. "membership/role + connection strings" .-> winsvc
Note
CONF-001 (RESOLVED, 2026-07-21): l'intera superficie SOAP/WCF (46 .asmx + 35 .svc) è in
InfocadWeb — famiglia CASSANDRA ~67% + InfocadIntegrationWS ~31%, mix ASMX+WCF (WCF dominante
per operazioni). In InfocadServer il WCF è sottile: EnergyService (3 [ServiceContract])
self-hosted via ServiceHost.Open() (non IIS). Dettaglio: API/Servizi.
Pattern architetturali (VERIFIED)
- Slice verticale per dominio (InfocadServer):
<Domain>{SharedObjects, Interface, DAL, BL, Controllers}(+Manager,Service,Server). Conteggi layer: Interface 27, SharedObjects 26, Controllers 23, DAL 20, BL 18, Manager 12. - Data access senza ORM: stored procedure Oracle invocate per nome tramite wrapper DAL (
ExecuteNonQueryStoredProcedure~1310,ExecuteQueryStoredProcedure~942,ExecuteReaderStoredProcedure~440). - Web Forms component-based: forte uso di
.ascx(1913) come mattoni UI. - Personalizzazione per-cliente via progetti dedicati:
EntityLayer<Cliente>,ServiceJob.<Cliente>,TicketLoader<Cliente>,ExternalAuth.<Cliente>,Reporting.<Tenant>(49 librerie), plug-inExternalDocSave.*. - net8 side-by-side: i progetti
*XNETricollegano il sorgente legacy (<Compile Include=..\..*.vb Link=…>) verso net8, senza duplicarlo (RDR, vedi Decisioni).
Concerns trasversali
| Concern | Meccanismo | Confidenza |
|---|---|---|
| Autenticazione | Oracle Membership/Role (tier servizi) · InfocadAuthenticationModule + ExternalAuth SSO (web) · OpenIddict/EF Core (ASPNET) |
SUPPORTED |
| Configurazione | app.config/Web.config per progetto; connection string riscritte al deploy da ConnectionsService |
VERIFIED |
| Logging | Descor.Infrastructure.LogManager (IJobLogger) |
SUPPORTED |
| Scheduling / batch | Quartz.NET (JobScheduler) + triadi Process/Queue/Scheduler in InfocadIntegration |
VERIFIED |
| Documentale | provider pluggabili ExternalDocSave.{Alfresco,Opentext,Docs} |
VERIFIED |
| Transazioni | da tracciare a livello DAL/SP (flussi) | UNKNOWN |
| Integrazione Web↔Server | i *Controllers di InfocadServer sono attivati dal tier web e raggiungono le BL via .NET Remoting (Activator.GetObject, SettingsManager.CHANNEL) — es. Census CompilationController→CompilationBL |
SUPPORTED |
Note
Aggiornamento a CLM-000008: oltre all'integrazione mediata dal DB Oracle condiviso, esiste un
canale .NET Remoting tra il tier web e le business layer di InfocadServer (pattern
Controller.DaoActivate → Activator.GetObject), verificato nel flusso FLOW-CEN-001.