Gestor de Ventas

.NET

Framework

C#

WinForms

Este proyecto es una aplicación de escritorio desarrollada en C# utilizando Windows Forms. El objetivo principal de su desarrollo no fue únicamente resolver un problema de gestión de inventario y facturación, sino implementar y demostrar la aplicación estricta de una arquitectura en capas para asegurar la separación de responsabilidades.

Al prescindir de motores de bases de datos relacionales y optar por una persistencia basada en archivos locales, el proyecto presenta desafíos específicos de integridad de información que requirieron soluciones a medida.

1. Diseño arquitectónico: Desacoplamiento estructural

El sistema está dividido en cuatro módulos lógicos. Esta decisión garantiza que un cambio en la interfaz gráfica no impacte en las reglas de negocio, y viceversa:

  • Capa de Presentación (UI): Compuesta por los formularios WinForms. Su responsabilidad se restringe exclusivamente a la captura de interacciones del usuario y la actualización de la vista.
  • Capa de Negocio (BLL): Concentra las validaciones y los cálculos comerciales. Funciona como el intermediario estricto entre la interfaz y el acceso a los datos. Ningún formulario accede directamente a la información almacenada.
  • Capa de Dominio y Acceso a Datos (DAL): Contiene las clases que modelan las entidades (Producto, Cliente, Venta) y maneja directamente la lectura y escritura de los archivos físicos.
  • Helper: Agrupa funciones utilitarias transversales invocadas por distintas capas.

2. Resolución de problemas: Persistencia y tolerancia a fallos

La escritura directa en archivos locales es susceptible a la corrupción de datos ante cierres inesperados del sistema. Para mitigar este riesgo, se implementó un mecanismo de contingencia y recuperación automática:

  • Proceso de escritura: Al confirmar una transacción, el sistema escribe la información en el archivo de datos principal y, simultáneamente, genera una réplica exacta en un directorio de respaldo (backup).
  • Proceso de lectura e inicialización: Durante el inicio de la aplicación, se ejecuta una rutina de verificación de integridad estructural.
  • Recuperación automática: Si el sistema detecta que el archivo principal es inaccesible o se encuentra corrupto, la capa de acceso a datos restaura el estado operativo leyendo el último archivo de respaldo válido. Este proceso ocurre de manera transparente para el usuario final.

3. Escalabilidad y evolución del sistema

La persistencia en archivos carece de la concurrencia nativa y la eficiencia de consultas que provee una base de datos tradicional. Sin embargo, debido al diseño estructurado, migrar esta aplicación a un entorno con SQL Server requiere únicamente reescribir la capa de persistencia. Las capas de Negocio y Presentación no requieren modificaciones, demostrando la viabilidad del desacoplamiento a largo plazo.