Infraestructura
IZ-CentralForms se encuentra actualmente en ambiente local de desarrollo. La aplicación está preparada para ejecutarse localmente como ASP.NET Core Web API y para una futura publicación en Windows Server con IIS, SQL Server real y SMTP externo.
Esta página documenta la infraestructura actual, la infraestructura objetivo y las condiciones mínimas para pasar de local a QA, staging o producción.
Estado actual
Sección titulada «Estado actual»| Elemento | Configuración actual |
|---|---|
| API | ASP.NET Core Web API net10.0 |
| Ejecución | Perfiles locales http y https |
| URLs locales | http://localhost:5273 / https://localhost:7122 |
| Ambiente | Development |
| Base de datos | SQL Server LocalDB: (localdb)\MSSQLLocalDB |
| Swagger | Habilitado en desarrollo |
| Email local | SMTP localhost:1025 |
| SDK JS | Servido desde wwwroot/sdk/centralforms.js |
| Ejemplo SDK | wwwroot/examples/contacto.html |
| Seed demo | Activo en desarrollo |
| Producción | No desplegada todavía |
Modelo local
Sección titulada «Modelo local»El ambiente local usa la siguiente composición:
ASP.NET Core local+ SQL Server LocalDB+ Swagger+ SDK estático desde wwwroot+ SMTP local / Mailpit| Servicio local | Uso |
|---|---|
| API local | Ejecutar y probar CentralForms.Api. |
| SQL Server LocalDB | Persistir formularios, submissions, tokens CSRF e integration logs en desarrollo. |
| Swagger | Probar endpoints manualmente. |
| SDK JS | Validar integración desde HTML local. |
| SMTP local | Probar envío de correos sin usar un proveedor real. |
Modelo objetivo para servidor
Sección titulada «Modelo objetivo para servidor»Para QA, staging o producción, el modelo recomendado es:
Windows Server+ IIS+ .NET Hosting Bundle+ SQL Server real+ SMTP externo+ HTTPS| Componente | Requisito |
|---|---|
| Sistema operativo | Windows Server |
| Hosting | IIS con Application Pool dedicado |
| Runtime | .NET Hosting Bundle compatible con net10.0 |
| Base de datos | SQL Server Express, Standard o Enterprise |
| Configuración | appsettings.Production.json o variables de entorno |
| SMTP real, Mailtrap, Resend o proveedor corporativo | |
| Seguridad | HTTPS obligatorio |
| Swagger | Restringido o deshabilitado en producción |
| Logs | IIS logs, logs de aplicación e IntegrationLogs |
Ambientes
Sección titulada «Ambientes»| Ambiente | API | Base de datos | Swagger | Observación | |
|---|---|---|---|---|---|
| Local | ASP.NET Core local | LocalDB | localhost:1025 / Mailpit | Habilitado | Ambiente actual |
| QA / Staging | IIS recomendado | SQL Server real | Mailtrap o SMTP real | Habilitado o restringido | Pendiente |
| Producción | IIS recomendado | SQL Server real | SMTP real autorizado | Restringido o deshabilitado | Pendiente |
Topología objetivo
Sección titulada «Topología objetivo»Aplicación consumidora | | HTTPS vCentralForms API en IIS | | EF Core vSQL Server | +--> SMTP externo | +--> Webhook externoRequisitos de servidor
Sección titulada «Requisitos de servidor»Para desplegar CentralForms fuera del entorno local se requiere:
- Windows Server.
- IIS habilitado.
- .NET Hosting Bundle compatible con
net10.0. - SQL Server real.
- Certificado SSL válido.
- Proveedor SMTP o sandbox autorizado.
- Permisos para crear Application Pool.
- Permisos para publicar la aplicación.
- Acceso a logs IIS y Event Viewer.
- Política de backup de base de datos.
SQL Server
Sección titulada «SQL Server»Desarrollo local
Sección titulada «Desarrollo local»La configuración local usa LocalDB:
Server=(localdb)\MSSQLLocalDB;Database=CentralFormsDb;Trusted_Connection=True;MultipleActiveResultSets=trueServidor
Sección titulada «Servidor»En IIS se debe usar una instancia real de SQL Server:
.\SQLEXPRESSlocalhostSERVIDOR_SQLSERVIDOR_SQL\INSTANCIAEjemplo de connection string para servidor:
Server=SERVIDOR_SQL;Database=CentralFormsDb;User Id=USUARIO_SQL;Password=PASSWORD_SQL;TrustServerCertificate=True;MultipleActiveResultSets=trueConfiguración de aplicación
Sección titulada «Configuración de aplicación»| Configuración | Local | Servidor |
|---|---|---|
| Ambiente | Development | Production |
| Connection string | LocalDB | SQL Server real |
| Swagger | Habilitado | Restringido o deshabilitado |
| Seed demo | Activo | Desactivado |
| SMTP local / Mailpit | SMTP real | |
| Secrets | Demo / local | Variables de entorno o mecanismo seguro |
Configuración recomendada para publicación futura:
| Elemento | Valor recomendado |
|---|---|
| Application Pool | CentralForms.Api |
| .NET CLR Version | No Managed Code |
| Managed Pipeline Mode | Integrated |
| Identity | ApplicationPoolIdentity |
| Physical Path | C:\inetpub\wwwroot\CentralForms.Api |
| HTTPS Binding | Obligatorio fuera de local |
Scripts de base de datos
Sección titulada «Scripts de base de datos»Ejecutar en orden para preparar un ambiente:
sql/deploy/00-create-database.sqlsql/deploy/01-create-schema.sqlsql/deploy/02-seed-demo.sqlsql/deploy/03-add-demo-destinations.sqlsql/deploy/04-verify-deploy.sqlScript opcional para pruebas desde Swagger en IIS local:
sql/deploy/05-add-localhost-iis-origins.sqlRutas relevantes
Sección titulada «Rutas relevantes»| Ruta | Uso |
|---|---|
CentralForms.Api/ | Proyecto principal de API |
CentralForms.Api/Properties/launchSettings.json | Perfiles locales |
CentralForms.Api/wwwroot/sdk/ | SDK JavaScript |
CentralForms.Api/wwwroot/examples/ | Ejemplos locales |
CentralForms.Infrastructure/Migrations/ | Migraciones EF Core |
sql/deploy/ | Scripts SQL |
scripts/ | Scripts de publicación y utilidades |
publish/CentralForms.Api | Salida esperada de publicación |
C:\inetpub\wwwroot\CentralForms.Api | Ruta sugerida en IIS |
Servicios externos
Sección titulada «Servicios externos»| Servicio | Uso | Estado |
|---|---|---|
| Mailpit | Captura SMTP local | Recomendado local |
| Mailtrap | Sandbox SMTP | Opcional QA |
| Resend / SMTP corporativo | Envío productivo | Pendiente |
| Webhook externo | Integración con CRM, ERP u otros sistemas | Según cliente |
| DNS / dominio | URL pública de API | Pendiente |
| Certificado SSL | HTTPS | Pendiente fuera de local |
Seguridad de infraestructura
Sección titulada «Seguridad de infraestructura»| Área | Criterio |
|---|---|
| HTTPS | Obligatorio fuera de local |
| Swagger | No exponer públicamente en producción |
| SQL Server | Usar usuario con permisos mínimos necesarios |
| Secrets | Usar variables de entorno o mecanismo seguro |
| Firewall | Exponer solo puertos requeridos |
| Logs | No registrar secretos ni tokens completos |
| Webhooks | Validar URL, timeout y manejo de errores |
Validación de ambiente
Sección titulada «Validación de ambiente»Antes de considerar un ambiente listo, validar:
| Validación | Resultado esperado |
|---|---|
| API inicia | Sin errores de runtime |
/health responde | Servicio disponible |
| SQL Server conecta | Lectura y escritura correctas |
| Swagger carga | Solo si está habilitado |
| SDK JS responde | Archivo disponible |
| SMTP funciona | Resultado visible en IntegrationLogs |
| Webhook funciona | Resultado visible en IntegrationLogs |
| HTTPS activo | Certificado válido |
| Logs disponibles | IIS, aplicación e integration logs accesibles |
Pendientes
Sección titulada «Pendientes»| Pendiente | Prioridad |
|---|---|
| Definir servidor QA/Staging | Alta |
| Definir servidor producción | Alta |
| Definir dominio público de API | Alta |
| Configurar certificado SSL | Alta |
| Definir proveedor SMTP productivo | Alta |
| Definir política de backups | Alta |
| Definir retención de logs | Media |
| Definir monitoreo y alertas | Media |