Se acerca el año y las cosas son mucho menos. Aunque he estado expuesto a algunos proyectos de estructura de tres capas, nunca los he escrito cuidadosamente de principio a fin. Muchas cosas todavía son vagas. Esta vez pasé varios días escribiendo de principio a fin Salió una demostración tan pequeña, y el proceso se graba aquí, para que lo revise más convenientemente en el futuro, y espero ayudar a algunos amigos.
El proyecto se divide en Modelo, IDAL, IBLL, DAL, BLL, WebUI, la base de datos es SQLServer, el acceso a datos usa EntityFramework5.0, usa una fábrica simple, singleton, fábrica abstracta y usa el archivo de configuración de reflexión + para cargar la biblioteca de clases. Cambiar el tiempo de compilación a tiempo de ejecución.
Beneficios:
1. Se puede desarrollar en paralelo para mejorar la eficiencia del desarrollo;
2. La base de datos no está limitada, y la base de datos se puede reemplazar a bajo costo;
3. Reutilización de código, una capa de acceso a datos puede usarse para múltiples capas de lógica de negocios, y una capa de lógica de negocios puede suministrar datos a múltiples expresiones;
4. El acoplamiento se reduce, los módulos dependen menos entre sí, los módulos conectables son fáciles de mantener, fáciles de actualizar y el posicionamiento de ERRORES es más preciso;
5. Debería estar allí, no puedo pensar en eso ...
El código fuente ha sido publicado en Code Cloud: https://gitee.com/xianglikai1/CSharpSanCengKaiFaDemo
Estructura de tres niveles: capa de acceso a datos, capa de lógica de negocios, capa de presentación y la estructura del proyecto es la siguiente:
Modelo: modelo de entidad de datos
IDAL: descripción de la interfaz de acceso a datos
IBLL: descripción de la interfaz de lógica de negocios
TestDAL: biblioteca de implementación de la interfaz de acceso a datos
TestBLL: biblioteca de lógica de implementación de la interfaz de lógica de negocios
WebUI: capa de presentación web
La base de datos utiliza dos tablas, Usuarios y Nación, la estructura es la siguiente:
La capa de modelo, utilizando EntityFramework5.0, agregó un archivo de clase de extensión
Código ExtendModel.cs
Descripción de la interfaz de acceso a datos IDAL, tales bibliotecas deben hacer referencia al Modelo, incluida una interfaz básica, dos interfaces de operación de clase de entidad y una fábrica;
Código de interfaz básico IBaseIDAL.cs
Código de interfaz de operación de clase de entidad IUsersIDAL.cs e INationIDAL.cs
Código de clase de fábrica DALFactory.cs, que utiliza la carga de archivos de reflexión y configuración para lograr bibliotecas de clases y objetos, al tiempo que reduce la dificultad del uso externo
La implementación de la interfaz de acceso a datos TestDAL, necesita hacer referencia al Modelo e IDAL, pero se carga dinámicamente
Código de fábrica de Singleton de contexto de datos DbContextFactory.cs
BaseDAL.cs clase de implementación de interfaz básica de acceso a datos, sin tener que implementar métodos repetidos en cada clase específica de acceso a datos
El código de implementación específico de UsersDAL.cs y NationDAL.cs
En la actualidad, las tres partes del Modelo, IDAL y DAL están completas, el proceso es
El papel de IDAL es comprender el acoplamiento. IDAL proporciona la descripción de la interfaz de operación de acceso a datos del modelo. DAL implementa IDAL. La fábrica en IDAL carga DAL a través del modo de tiempo de ejecución y simplifica el grado de uso externo, realiza el desarrollo paralelo y será reemplazado El trabajo de la base de datos se reduce al mínimo, lo que reduce la tasa de errores.
El siguiente artículo escribirá IBLL, BLL, WebUI.