Files
Data-Coupler/README.md
T
Alessio Dal Santo 5aa5ff2e65 [CI/CD] Aggiornamento GitHub Actions per branch development con tag latest
- Aggiunto supporto per tag 'latest' anche dal branch development
- Aggiunto manifest multi-platform per development branch
- Aggiornata documentazione README.md e copilot-instructions.md
- Il tag latest ora viene pubblicato da main E development per garantire accesso alle ultime funzionalità
2026-01-23 15:58:40 +01:00

207 lines
6.1 KiB
Markdown

# Data-Coupler
## Panoramica
Data-Coupler è una soluzione integrata per la gestione di connessioni dati e credenziali, composta da tre progetti principali:
- **CredentialManager**: Libreria per la gestione sicura delle credenziali
- **DataConnection**: Libreria per connessioni a database e API REST
- **Data_Coupler**: Applicazione Blazor Server per l'interfaccia utente
## Architettura
### CredentialManager
Libreria responsabile per:
- Gestione sicura delle credenziali (Database, REST API)
- Crittografia dei dati sensibili
- Persistenza su database SQLite
- Validazione delle credenziali
### DataConnection
Libreria per connessioni dati che include:
- Supporto per database: SQL Server, MySQL, PostgreSQL, Oracle, SQLite, DB2, SAP HANA
- Gestione connessioni REST API
- Integrazione con CredentialManager per l'autenticazione
- Factory pattern per la gestione di diversi provider
### Data_Coupler
Applicazione Blazor Server che fornisce:
- Interfaccia web per la gestione delle credenziali
- CRUD completo per credenziali database e REST API
- Test delle connessioni
- Validazione form integrata
## Configurazione
### 1. Database delle Credenziali
L'applicazione utilizza SQLite per memorizzare le credenziali. Il database viene automaticamente creato in:
```
Data_Coupler/wwwroot/data/credentials.db
```
### 2. Registrazione Servizi
Nel `Program.cs` di Data_Coupler:
```csharp
// Add CredentialManager services
builder.Services.AddDataConnectionCredentialManagement("Data Source=wwwroot/data/credentials.db");
```
## Utilizzo
### Gestione Credenziali via Web Interface
1. Avviare l'applicazione Data_Coupler
2. Navigare su `/credentials`
3. Utilizzare l'interfaccia per:
- Aggiungere nuove credenziali (Database/REST API)
- Modificare credenziali esistenti
- Testare le connessioni
- Eliminare credenziali
### Utilizzo Programmatico
```csharp
// Iniettare il servizio
@inject IDataConnectionCredentialService CredentialService
// Ottenere opzioni per connessione database
var dbOptions = await CredentialService.GetDbManagerOptionsAsync("MyDatabase");
// Ottenere opzioni per API REST
var apiOptions = await CredentialService.GetRestServiceOptionsAsync("MyApi");
// Gestire credenziali
var credential = new DatabaseCredential
{
Name = "Test",
DatabaseType = DatabaseType.SqlServer,
Host = "localhost",
Port = 1433,
DatabaseName = "TestDB",
Username = "user",
Password = "password"
};
await CredentialService.SaveDatabaseCredentialAsync(credential);
```
## Struttura dei Progetti
```
Data-Coupler/
├── CredentialManager/ # Gestione credenziali
│ ├── Data/ # DbContext e configurazioni
│ ├── Models/ # Modelli per credenziali
│ └── Services/ # Servizi core
├── DataConnection/ # Connessioni dati
│ ├── CredentialManagement/ # Integrazione con CredentialManager
│ │ ├── Interfaces/ # Interfacce servizi
│ │ ├── Models/ # Extension methods e conversioni
│ │ └── Services/ # Implementazione servizi
│ ├── DB/ # Gestione database
│ └── REST/ # Gestione API REST
└── Data_Coupler/ # Applicazione Blazor
├── Pages/ # Pagine Blazor
│ └── CredentialManagement.razor
├── Shared/ # Componenti condivisi
└── wwwroot/data/ # Database SQLite
```
## Build e Deployment
### Prerequisiti
- .NET 9.0 SDK
- Visual Studio 2022 o VS Code
- Docker (opzionale, per deployment containerizzato)
### Build Locale
```bash
dotnet build Data_Coupler.sln
```
### Esecuzione Locale
```bash
dotnet run --project Data_Coupler/Data_Coupler.csproj
```
L'applicazione sarà disponibile su:
- HTTP: http://localhost:7550
### 🐳 Deployment Docker
**Quick Start con Docker:**
```bash
# Pull e run (immagine pubblica)
docker run -d -p 7550:7550 -v data-coupler-data:/var/lib/Data_Coupler ghcr.io/alessiodalsi/data-coupler:latest
# Con Docker Compose
docker-compose up -d
```
**Build Locale:**
```bash
# Linux
docker build -t data-coupler:local -f Dockerfile .
# Windows
docker build -t data-coupler:local-windows -f Dockerfile.windows .
# Script automatico (PowerShell)
.\build-docker.ps1 -Target all -Test
# Script automatico (Bash)
./build-docker.sh all
```
**Immagini Disponibili:**
- **Linux/Multi-platform**: `ghcr.io/alessiodalsi/data-coupler:latest`
- **Windows**: `ghcr.io/alessiodalsi/data-coupler:latest-windows`
- **Dev**: `ghcr.io/alessiodalsi/data-coupler:dev-latest`
- **Staging**: `ghcr.io/alessiodalsi/data-coupler:staging-latest`
**Note**: Il tag `latest` viene automaticamente aggiornato sia dal branch `main` che dal branch `development` per garantire che le ultime funzionalità siano sempre disponibili.
📚 **Documentazione Docker Completa**: Vedi [DOCKER_DEPLOYMENT.md](DOCKER_DEPLOYMENT.md) e [GITHUB_ACTIONS_SETUP.md](GITHUB_ACTIONS_SETUP.md)
## Caratteristiche di Sicurezza
- **Crittografia**: Le password vengono crittografate prima del salvataggio
- **Validazione**: Validazione completa dei dati in input
- **Isolamento**: Ogni progetto ha responsabilità specifiche
- **Type Safety**: Uso di tipi forti per evitare errori
- **Deletion Sync Sicuro**:
- Disabilitato di default per prevenire eliminazioni accidentali
- Disponibile solo nelle schedulazioni con configurazione esplicita
- Warning chiaro nell'interfaccia utente per operazioni critiche
## Testing
L'applicazione include funzionalità di test per:
- Connessioni database
- Chiamate API REST
- Validazione credenziali
Il testing può essere eseguito direttamente dall'interfaccia web.
## Log e Monitoring
I servizi utilizzano ILogger per tracciare:
- Operazioni CRUD sulle credenziali
- Test di connessione
- Errori e eccezioni
## Contributi
Per contribuire al progetto:
1. Fork del repository
2. Creare un branch per la feature
3. Implementare i cambiamenti
4. Testare thoroughly
5. Creare una Pull Request
## Licenza
[Specificare la licenza del progetto]