Table of Contents

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-in ExternalDocSave.*.
  • net8 side-by-side: i progetti *XNET ricollegano 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 CompilationControllerCompilationBL 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.DaoActivateActivator.GetObject), verificato nel flusso FLOW-CEN-001.