【abp Vnext】 Descargue y ejecute el documento tutorial detallado del proyecto abp Vnext

Entorno de software : la computadora necesita el entorno de software básico node.js, npm, hay muchos tutoriales en línea, por favor
Tutorial de instalación de Baidu mysql : Instalación de Mysql y primer inicio de sesión, cambio de contraseña, pegue
el tutorial de instalación de redis : tutorial detallado de instalación de redis e instalación del cliente

1. Instale Visual Studio 2022

Descarga oficial de Professional 2022: https://visualstudio.microsoft.com/zh-hans/vs/
inserte la descripción de la imagen aquí
Una vez completada la descarga, instale:
inserte la descripción de la imagen aquí
haga clic en el botón Continuar, aparecerá la siguiente captura de pantalla
inserte la descripción de la imagen aquí
y luego verifique ( ASP.NET y desarrollo web). y desarrollo de extensiones de Visual Studio )
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Personalice la ubicación de instalación y haga clic en Instalar
inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí


1. Instale el andamio CLI de ABP

Instale ABP CLI en la terminal de línea de comando:

dotnet tool install -g Volo.Abp.Cli

Si el error es el siguiente, significa que la versión del SDK de red local es inferior a 7.0
inserte la descripción de la imagen aquí
Solución
1. Descargue .NET 7.0 del sitio web oficial : https://dotnet.microsoft.com/en-us/download/dotnet/7.0
2. Según el sistema informático y el número de versión a descargar (mi computadora es la versión Windows10 x64).
inserte la descripción de la imagen aquí
Una vez completada la instalación, ingrese el comando en la terminal para verificar que la versión sea 7, entonces no hay problema.

dotnet --info

inserte la descripción de la imagen aquí
Ingrese el siguiente comando nuevamente en la terminal para instalar ABP CLI

dotnet tool install -g Volo.Abp.Cli

Captura de pantalla después de una ejecución exitosa
inserte la descripción de la imagen aquí


2. Seleccione la configuración del marco abp.

Sitio web oficial de abp : https://abp.io/get-started
Seleccione la configuración correspondiente según las necesidades (elegí la aplicación multicapa, el marco mvc UI, la base de datos mysql, sin terminal móvil)
inserte la descripción de la imagen aquí

luego copia el comando
inserte la descripción de la imagen aquí

Utilice la ventana emergente cmd para ingresar a la carpeta del proyecto especificada
e ingrese la siguiente línea de comando

abp new Acme.BookStore -dbms MySQL --tiered --theme basic 

inserte la descripción de la imagen aquí

Aparece de la siguiente manera, indicando éxito.
inserte la descripción de la imagen aquí


3. Ejecute el marco abp

Haga doble clic para abrir con vs2022

inserte la descripción de la imagen aquí

La estructura predeterminada
inserte la descripción de la imagen aquí
selecciona Acme.BookStore.DbMigrator como elemento de inicio.
inserte la descripción de la imagen aquí

Modifique la configuración de la base de datos
Cambie el archivo appsettings.json de Acme.BookStore.AuthServer, a la base Acme.BookStore.DbMigratorde Acme.BookStore.HttpApi.Hostdatos mysql que necesita conectarse, el servidor es la IP de la base de datos, el puerto es el puerto, la base de datos es el nombre de la base de datos, Uid es la cuenta de la base de datos, Pwd es la base de datos contraseña

inserte la descripción de la imagen aquí
Seleccione EntityFrameworkCore para instalar el paquete Microsoft.EntityFrameworkCore.Design en Herramientas == "NuGet Package Manager ==" Package Manager Console == "Proyecto predeterminadoinserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí
Nota:
debido a que el siguiente comando se ingresa en la ventana de comando cmd, el número de versión consultado es 7.0.202

dotnet --version

Por lo tanto, Microsoft.EntityFrameworkCore.Toolsel paquete debe degradarse a la versión 7.0.2 (primero desinstale la 7.0.4 que viene con el proyecto y luego instale la 7.0.2; de lo contrario, el proyecto informará el error 500.30), de la siguiente manera
inserte la descripción de la imagen aquí

Una vez completada la instalación anterior, ingrese la siguiente línea de comando en la consola para generar el archivo de migración

Add-Migration Init

inserte la descripción de la imagen aquí
Ejecute el comando de migración después de ejecutar

 Update-Database

inserte la descripción de la imagen aquí
Luego configure los elementos de inicio. En la solución Acme.BookStore, seleccione Configurar elementos de inicio
inserte la descripción de la imagen aquí
para seleccionar varios elementos de inicio, luego cambie AuthServer y Host, luego haga clic en Aplicar, Aceptar y finalmente presione Ctrl+F5 para ejecutar.
inserte la descripción de la imagen aquí

Entonces la imagen del efecto es la siguiente:
inserte la descripción de la imagen aquí


inserte la descripción de la imagen aquí


Pise el punto del hoyo:

1. Si necesita utilizar la versión Vs2022 antes de instalar net SDK7.0, se informará un error al realizar la migración

2. Debido a la versión 7.0.202 de Net SDK instalada localmente, la solución NuGet del proyecto Acme.BookStore.EntityFrameworkCore debe reducirse a la versión 7.0.2; de lo contrario, se informará un error 500.30 al ejecutar el proyecto.

3. Documento oficial: Introducir el papel de la estructura del directorio.


Los proyectos están organizados en carpetas src y test. La carpeta src contiene la aplicación real, que está en capas según los principios DDD mencionados anteriormente. El siguiente diagrama muestra las capas de la solución y las dependencias de los proyectos:

inserte la descripción de la imagen aquí

A continuación se describen los proyectos y dependencias en la solución.

.Dominio.Elementos compartidos

Los proyectos contienen constantes, enumeraciones y otros objetos que en realidad forman parte de la capa de dominio, pero que son utilizados por todas las capas/proyectos de la solución.

Por ejemplo, la enumeración BookType y la clase BookConsts (quizás
un campo constante utilizado por la entidad Libro, como MaxNameLength) son adecuadas para este proyecto.

Este proyecto no depende de otros proyectos en la solución. Otros proyectos dependen de este proyecto directa o indirectamente.

.Proyecto de dominio

La capa de dominio de la solución. Contiene principalmente entidades, raíces de colección, servicios de dominio, tipos de valores, interfaces de almacenamiento y otros objetos de dominio de la solución.

Por ejemplo, la entidad Book y la interfaz IBookRepository son adecuadas para colocarse en este proyecto.

Depende del proyecto .Domain.Shared, porque algunas de sus constantes, enumeraciones y definiciones de otros objetos se utilizarán en el proyecto. El
proyecto .Application.Contracts incluye principalmente interfaces de servicio de aplicaciones y objetos de transferencia de datos (DTO) de la aplicación. capa.Utiliza Se utiliza para separar la interfaz y la implementación de la capa de aplicación.
De esta manera, el proyecto de interfaz se puede compartir con el cliente como un paquete de contrato.

Por ejemplo, la interfaz IBookAppService y la clase BookCreationDto son adecuadas para este proyecto.

Se basa en .Domain.Shared porque puede usar constantes, enumeraciones y otros objetos compartidos en interfaces de aplicaciones y DTO.

.Proyecto de aplicación

El proyecto contiene la implementación de la interfaz de servicio de aplicaciones del proyecto .Application.Contracts.

Por ejemplo, la clase BookAppService encajaría en este proyecto.

Depende del proyecto .Application.Contracts porque necesita implementar interfaces y usar DTO. Depende del
proyecto .Domain porque necesita usar objetos de dominio (entidades, interfaces de almacenamiento, etc.) para ejecutar la lógica de la aplicación. El proyecto está integrado con el
proyecto EF Core, define DbContext e implementa la interfaz del repositorio definida en el proyecto .Domain.

Depende del proyecto .Domain porque necesita hacer referencia a entidades e interfaces de almacenamiento. Este proyecto solo está disponible si usa EF Core como proveedor de base de datos. Si elige
otro proveedor de base de datos, el nombre del proyecto cambiará.

Proyecto .EntityFrameworkCore.DbMigrations

Contiene migraciones de bases de datos de EF Core para la solución. Tiene un DbContext separado dedicado a administrar las migraciones.

ABP es un marco modular, el diseño ideal es permitir que cada módulo tenga su propia clase DbContext. En este momento, DbContext para la migración jugará un papel, unificará todas las configuraciones de DbContext
en un solo modelo para mantener un único esquema de base de datos.
Para escenarios más avanzados, un programa puede tener múltiples bases de datos (cada una con una o más tablas de módulos) y múltiples DbContexts de migración (cada uno manteniendo un esquema de base de datos diferente).

Tenga en cuenta que la migración DbContext solo se usa para migraciones de bases de datos, no en tiempo de ejecución.

Se basa en el proyecto .EntityFrameworkCore porque reutiliza la configuración DbContext de la aplicación.
Este proyecto solo está disponible si usa EF Core como proveedor de base de datos. Consulte la Guía de migración de Entity Framework Core para obtener detalles sobre este proyecto.

Proyecto .DbMigrator

Esta es una aplicación de consola que simplifica la realización de migraciones de bases de datos en entornos de desarrollo y producción.

Cree una base de datos si es necesario (cuando no haya una base de datos). Aplique migraciones de bases de datos no migradas. Inicialice los datos iniciales (cuando los necesite). Este proyecto tiene su propio archivo appsettings.json. Entonces, si desea cambiar la cadena de conexión de la base de datos,
recuerde para cambiar también este archivo.

Es importante inicializar los datos de semillas, ABP tiene una infraestructura de datos de semillas modular. Para obtener más información sobre los datos de semillas, consulte la documentación.

Si bien crear bases de datos y aplicar migraciones parece ser útil solo para bases de datos relacionales, este proyecto se genera incluso si elige un proveedor de base de datos NoSQL como MongoDB y en este punto
proporciona los datos iniciales necesarios para la aplicación.

Depende del proyecto .EntityFrameworkCore.DbMigrations (para EF Core) porque necesita acceso a los archivos de migración. Depende del
proyecto .Application.Contracts porque necesita la definición de permisos de acceso para otorgar todos los permisos al usuario administrador al inicializar el datos de semillas.

Proyecto .HttpApi

Se utiliza para definir controladores API.

La mayoría de las veces, no es necesario definir manualmente los controladores API, porque la función API dinámica de ABP creará automáticamente controladores API de acuerdo con su capa de aplicación,
pero si necesita escribir controladores API, entonces es el lugar más adecuado.

Depende del proyecto .Application.Contracts, porque necesita inyectar la interfaz de servicio de la aplicación. El proyecto .HttpApi.Client
define el proxy del cliente C# para usar el proyecto API HTTP de la solución. Las ediciones anteriores se pueden compartir con clientes de terceros. , lo que facilita su uso en aplicaciones DotNet, use su
API HTTP (otros tipos de aplicaciones pueden usar su API manualmente o usando las herramientas de su plataforma).

ABP tiene una función de cliente API de C# dinámica, por lo que en la mayoría de los casos no es necesario crear manualmente un proxy de cliente de C#.

El proyecto .HttpApi.Client.ConsoleTestApp es una aplicación de consola para demostrar el uso del proxy del cliente.

Depende del proyecto .Application.Contracts, porque necesita usar la interfaz de servicio de la aplicación y DTO.
Si no necesita crear un proxy de cliente C# dinámico para la API, puede eliminar este proyecto y sus dependencias.

.proyecto web

Contiene la interfaz de usuario (UI) de la aplicación. Si se utiliza ASP.NET Core MVC UI,
incluye páginas Razor, archivos javascript, archivos de estilo, imágenes, etc.

Contiene el archivo de configuración principal appsettings.json de la aplicación, que se utiliza para configurar la cadena de conexión de la base de datos y otras configuraciones de la aplicación.

Depende del proyecto .HttpApi, porque la capa UI necesita usar la API de la solución y la interfaz de servicio de aplicaciones. Si observa el código fuente .Web.csproj, verá
referencias a los proyectos .Application y .EntityFrameworkCore.DbMigrations.

En realidad, estas referencias no son necesarias al escribir la capa de interfaz de usuario. Debido a que la capa de interfaz de usuario generalmente no depende de la implementación de EF Core o la capa de aplicación.
Esta plantilla de inicio está lista para la implementación en capas y la capa de API está alojada en un servidor diferente. desde la capa UI medio.

Pero si no selecciona la opción --tiered, el proyecto .Web tendrá estas referencias para poder alojar los niveles Web, Api y Aplicación en un único sitio de aplicación.

Puede utilizar entidades de dominio y repositorios en la capa de presentación, pero según la teoría de DDD, esto se considera una mala práctica.

Proyecto de prueba

La solución cuenta con múltiples proyectos de prueba, uno para cada capa:

.Domain.Tests se usa para probar la capa de dominio. .Application.Tests se usa para probar la capa de aplicación.
.EntityFrameworkCore.Tests se usa para probar la configuración de EF Core y el almacenamiento personalizado. .Web.Tests
se usa para probar la interfaz de usuario (para ASP. NET Core MVC UI). .TestBase El proyecto base (compartido) para todos los proyectos de prueba. Además,
.HttpApi.Client.ConsoleTestApp
es una aplicación de consola (no un proyecto de prueba automatizado) que se utiliza para demostrar el uso de la API HTTP en Aplicaciones .Net.

El proyecto de prueba se utiliza para pruebas de integración:

Está completamente integrado en el marco ABP y todos los servicios de la aplicación. Si el proveedor de la base de datos es EF
Core, el proyecto de prueba utilizará la base de datos en memoria SQLite, si es MongoDB, utilizará la biblioteca Mongo2Go. La
autorización está deshabilitada. , y cualquier servicio de aplicación se puede usar en la prueba.
Aún puede escribir pruebas unitarias, pero es más difícil de escribir (porque necesita preparar objetos simulados/falsos), pero se ejecuta más rápido (porque solo prueba una clase y se salta todas). procesos de inicialización) .

Supongo que te gusta

Origin blog.csdn.net/weixin_43861689/article/details/129581932
Recomendado
Clasificación