InfocadWeb
Il tier di presentazione e di integrazione. Contiene tutte le interfacce utente (ASP.NET Web Forms), tutta la superficie SOAP verso l'esterno, e tutte le personalizzazioni per cliente. Gira sotto IIS (le app web) e come eseguibili/servizi (l'integrazione).
Snapshot: commit 9bc7b074e90a2ab2424c1bb4bd4ef82c9f13ba24 (branch develop).
Evidenza: TASK-WEB-001, docs/_generated/inventory-web.json.
Confini di responsabilità
| Fa | Non fa |
|---|---|
UI utente: pagine .aspx e controlli .ascx |
Logica di dominio server-side (sta in InfocadServer) |
Autenticazione dell'utente finale (InfocadAuthenticationModule + SSO) |
Autorizzazione oltre il confine Remoting (non ri-verificata → TD-008) |
Tutta la superficie SOAP/WCF: 46 .asmx + 35 .svc |
Ospitare le BL di dominio (girano nel Windows Service) |
| Import/export e integrazioni per-cliente (loader, EntityLayer, job) | Definire lo schema Oracle |
| Personalizzazioni per cliente (49 librerie di reporting, SSO, ECM) | — |
Come è organizzato: quattro famiglie
flowchart TB
subgraph UI["1 · Applicazioni Web Forms (IIS)"]
CAS["CASSANDRA<br/>shell dominante"]
SUB["sub-web per dominio<br/>PropertyCenterWeb, GlobalWeb…"]
APP["app autonome<br/>ECM · IEM · RequestCenter · DEM"]
end
subgraph SVC["2 · Integrazione"]
IWS["InfocadIntegrationWS<br/>host ASMX/SVC"]
TRI["triadi Process/Queue/<br/>Scheduler · Quartz"]
LOAD["EXELoaders<br/>import ticket"]
end
subgraph CUS["3 · Customizations"]
REP["Reporting.TENANT<br/>49 librerie"]
EXT["ExternalAuth ·<br/>ExternalDocSave"]
end
subgraph BL["4 · Business locale"]
RC["RequestCenter BL<br/>+ 3 varianti DAL"]
end
| Famiglia | Solution | Contenuto |
|---|---|---|
| Applicazioni web | WebMachine.sln (72 progetti) |
29 app Web Forms + 1 website; Global.asax in CASSANDRA, ECM, IEM, InfocadIntegrationWS |
| Integrazione | InfocadIntegration.sln (89) |
InfocadIntegrationWS (host ASMX), triadi Process/Queue/Scheduler, EXELoaders, EntityLayer<X>, ServiceJob.<X> |
| Customizations | Customizations.sln (71) |
Reporting.<TENANT> (49), ExternalAuth.*, ExternalDocSave.*, CustomAuth.* |
| Moduli standalone | ECM.sln, IEM.sln |
build isolata dei due moduli |
CASSANDRA è la shell dominante: 615 .aspx / 1862 .ascx sui ~650/~1900 totali. Le altre app
per .aspx: PropertyCenterWeb 100 · GlobalWeb 76 · ScheduleCenterWeb 65 · CommonWeb 47 ·
RequestCenterWeb 40 (ma 684 .ascx) · ServiceCentoWeb 32 · BookCenterWeb 29 · AccountingWeb 28 ·
DocCenterWeb 26.
Note
Il lavoro di UI è a componenti: la maggior parte della logica di pagina sta nei .ascx, non
negli .aspx. Cercare una funzionalità partendo dalla pagina è spesso la strada sbagliata — vedi
Reference del codice.
RequestCenter: l'eccezione che accede a Oracle da qui
È l'unica business layer significativa che vive nel repo web (il resto della BL è in
InfocadServer). Consumata dai sub-web CASSANDRA e da tutte le Reporting.*. Ha tre DAL Oracle:
| Progetto | Target | Stato |
|---|---|---|
RequestCenter.DAL.Oracle |
VB legacy (ToolsVersion 3.5, solo System.Data) |
probabilmente morto (INFERRED) |
RequestCenter.DAL.OracleODP |
v4.8, Oracle.DataAccess unmanaged |
sorgente canonico dei *DAL.vb |
RequestCenter.DAL.OracleODPXNET |
net8 SDK-style | ricollega gli stessi .vb (<Compile Include=…\RequestCenter.DAL.OracleODP\*.vb Link=…>), Oracle.ManagedDataAccess.Core 23.4.0 |
Come parla con il resto del sistema
- Verso InfocadServer — referenzia 1841 volte le DLL prodotte da InfocadServer nella cartella
condivisa
Assembly/(123 progetti su 149). A runtime carica i*Controllersin-process e quelli aprono il canale .NET Remoting verso il Windows Service. - Verso Oracle — direttamente per
RequestCenter(RequestCenterConnection), i provider Membership/Role (OracleProvidersDB) e i loader di integrazione. - Verso l'esterno — è il perimetro del sistema: SSO SAML/OAuth2, ECM esterni (Alfresco, OpenText), import ticket (OTRS e sistemi cliente), ERP/anagrafiche (SAP).
Dettaglio completo: Interazioni tra i componenti · Integrazioni · API / Servizi.
Autenticazione (tier web)
CASSANDRA/Web.config non dichiara <membership>/<roleManager>: il web autentica con
InfocadAuthenticationModule (httpModule custom) e delega l'SSO a un IAuthManager per-cliente
(ExternalAuth.<Cliente>) o al flusso SAML. I provider Oracle ASP.NET vivono nei config
server-side e nei loader di integrazione. Vedi
Guide per sviluppatori → sicurezza.
Warning
SEC-001 — CASSANDRA/Web.config committa credenziali Oracle in chiaro (mai riportate in questa
documentazione). Vedi Debito tecnico.
Numeri (VERIFIED, conteggio meccanico)
- 149 progetti — 53 C# / 96 VB.NET (il VB.NET è la maggioranza netta).
- Target: v4.8 = 144,
net8.0= 3,netstandard2.0= 1, 1 progetto VB legacy (ToolsVersion 3.5). - 7 solution:
WebMachine.sln(72),Customizations.sln(71),InfocadIntegration.sln(89),ECM.sln(1),IEM.sln(1),ExternalAuth.Interface.sln(1),TESTIWS.sln(Web Site senza projfile). - OutputType: 127 Library · 9 Exe · 9 WinExe. 29 applicazioni Web Forms + 1 website.
- Superficie UI: ~650
.aspx· ~1900.ascx. Superficie servizi: 46.asmx+ 35.svc(CASSANDRA ~67%,InfocadIntegrationWS~31%). - Famiglie per-cliente:
Reporting.<TENANT>49 ·EntityLayer<X>16 ·EXELoaders8 ·ServiceJob.<X>6.
Build e vincoli
- Completa: Windows + Visual Studio 2022 / msbuild + Oracle Client.
- Prerequisito:
Assembly/già popolata da un build di InfocadServer — altrimenti le 1841 reference binarie non risolvono e nulla compila. I due repo devono stare affiancati sotto la stessa cartella padre. - Solution focalizzate:
WebMachine.sln(principale),ECM.sln,IEM.sln,Customizations.sln. - Slice net8:
dotnet buildsuRequestCenterXNET,DataManagerXNET,RequestCenter.DAL.OracleODPXNET. - Nessun test automatico, nessuna CI.
Aggiungere un cliente (pattern, non fork)
Il prodotto si personalizza con progetti paralleli, mai con rami o flag: EntityLayer<Cliente>,
ServiceJob.<Cliente>, TicketLoader<Cliente>, ExternalAuth.<Cliente>, Reporting.<TENANT>.
Tutti raggruppati in Customizations.sln. Vedi
Task di sviluppo comuni.
Dove approfondire
- Interazioni fra i tier: Interazioni
- Superficie servizi: API / Servizi (81 endpoint)
- Codice, pagina per pagina: Reference del codice
- Flussi end-to-end: Flussi
- Integrazioni per-cliente: Integrazioni