首页 > 其他分享 >前后端分离系统 后端搭建

前后端分离系统 后端搭建

时间:2025-01-08 21:36:33浏览次数:1  
标签:前后 builder 分离 public Services invocation using ConfigurationBinder 搭建

技术栈

.net8 web api

AutoMapper


WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
    builder.Services.AddAutoMapper(typeof(AutoMapConfig));



using AutoMapper;
using jxc.Model;
using jxc.ModelDto;

namespace jxc.Api.AutoMapExtend;

public class AutoMapConfig : Profile
{
    public AutoMapConfig()
    {
        CreateMap<InventoryModel, InventoryDto>()
            .ForMember(c => c.ItemName,s => s.MapFrom(x=>x.ItemName))
            .ForMember(c => c.Quantity,s => s.MapFrom(x=>x.Quantity))
            .ReverseMap();
    }

}



AutofacAOP

using Castle.DynamicProxy;
using Microsoft.Extensions.Logging;

namespace jxcApi.AutofacAOP;
public class CustomLogInterceptor : IInterceptor
{

    //支持依赖注入
    private readonly ILogger<CustomLogInterceptor> _Logger;
    public CustomLogInterceptor(ILogger<CustomLogInterceptor> logger)
    {
        _Logger = logger;
    }
    public void Intercept(IInvocation invocation)
    {
        _Logger.LogInformation($"================={invocation.GetType().Name}{invocation.Method.Name}=执行前==================");
    
        invocation.Proceed();

        _Logger.LogInformation($"================={invocation.GetType().Name}{invocation.Method.Name}=执行完成==================");
    }
}






Autofac

//指定Provider的工厂为AutofacServiceProviderFactory
        builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
        builder.Host.ConfigureContainer<ContainerBuilder>(ConfigurationBinder =>
        {
            //在这里就是可以注册10C中抽象和具体之间的关系
            ConfigurationBinder.RegisterType<CustomLogInterceptor>();

            ConfigurationBinder.RegisterType<InventoryService>()
            .EnableClassInterceptors();//aop 扩展 类支持

            ConfigurationBinder.RegisterType<InventoryRepository>().As<IInventoryRepository>()
            .EnableInterfaceInterceptors();//aop 扩展 接口支持

            //ConfigurationBinder.RegisterAssemblyTypes(typeof(Program).Assembly)
            //    .Where(t => t.IsSubclassOf(typeof(ControllerBase)))
            //    .PropertiesAutowired()
            //    .EnableClassInterceptors();
        });

        builder.Services.AddControllers();



freesql

IServiceCollection services = builder.Services;

        Func<IServiceProvider, IFreeSql> fsqlFactory = r =>
        {
            IFreeSql fsql = new FreeSql.FreeSqlBuilder()
                .UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=freedb2024.db")
                .UseMonitorCommand(cmd => Console.WriteLine($"Sql:{cmd.CommandText}"))
                .UseAutoSyncStructure(true) //自动同步实体结构到数据库,只有CRUD时才会生成表
                .Build();
            return fsql;
        };
        services.AddSingleton<IFreeSql>(fsqlFactory);



Swagger 显示控制器层注释

builder.Services.AddSwaggerGen(option =>
 {
     var file = Path.Combine(AppContext.BaseDirectory, $"{AppDomain.CurrentDomain.FriendlyName}.xml");           
     option.IncludeXmlComments(file, true); //true:显示控制器层注释
 });


log4net

WebApplicationBuilder builder = WebApplication.CreateBuilder(args);

        // Add services to the container.
        builder.Logging.AddLog4Net("log4net.Config");

标签:前后,builder,分离,public,Services,invocation,using,ConfigurationBinder,搭建
From: https://www.cnblogs.com/hlm750908/p/18660602

相关文章

  • 路科MCDF项目UVM环境搭建之mcdf_refmod
    mcdf_refmod1.创建一个get_reg_trans端口,三个chnl端口,三个tlm_fifo便于与外部模块通信;2.传递接口,创建regs[3]来模拟真实的寄存器控制通道使能(en),arb优先级(prio),整合数据包的长度(len)(定义一个结构体mcdf_reg_t)。 typedefstructpacked{biten;bit[1:0]prio;......
  • CentOS7搭建Django的各种尝试
    非计算机专业自学Django笔记,如有错误欢迎补充指正,万分感谢!CentOS7系统安装完成时自带了yum,pthon3,pip等常用工具就没有额外配置Python环境了如若要安装,可以通过下列地址获取对应安装包:python下载地址:https://www.python.org/downloads/pip下载地址:https://raw.github.com/py......
  • 即动运动系统|Java|SSM|VUE| 前后端分离
                 【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html5⃣️数据库可视化工具:navicat6⃣️服务器:SpringBoot自带apachetomcat......
  • 汉服文化管理系统|Java|SSM|VUE| 前后端分离
                 【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html5⃣️数据库可视化工具:navicat6⃣️服务器:SpringBoot自带apachetomcat......
  • 学习 - Nginx -浅谈Nginx动静分离
    Nginx动静分离适用于中小型网站并发量不高的场景如下图所示Nginx方向代理的站点是一个Tomcat服务器其中存在很多的静态资源(jscssimg...)如果没有实现动静分离,每个用户在访问的时候都会重新加载一次CSS样式或者图片等,如果把静态资源放置到Nginx中,就不用每次都重新加载静态......
  • 前后端分离的权限管理框架,前端采用 Vue 3 框架,后端采用 .NET 8、ORM 采用 EF 8
    合集-.NET开源项目(37)  收起 阅读目录前言项目介绍项目功能项目技术模块化工程结构微服务案例模块化工程结构属性依赖注入项目特点项目效果项目文档项目地址总结最后前言领导要求做一个小项目,要求独立运行,用以最少的依赖,此时不想集成到主项......
  • BIND域名解析服务器搭建
    dns介绍:dns域名解析服务,管理和解析域名与ip地址对应关系的技术正向解析:域名解析为ip地址;反向解析:ip地址解析为域名dns域名解析服务采用类似目录树层次结构记录域名与ip对应关系,采用分布式数据结构存储 三种类型服务器:主服务器:在特定区域内具有唯一性,负责维护该区域内的域......
  • 腾讯云轻量服务器搭建彩虹聚合 DNS 聚合管理系统教程
    彩虹聚合DNS管理系统具备诸多实用功能,其中包括SSL证书申请与自动部署功能,它能够从多个渠道申请SSL证书,像Let'sEncrypt等,并自动将证书部署到各式各样的面板、云服务商以及服务器等环境中,同时还支持CNAME代理功能,为域名管理和安全访问提供了有力保障。一、支持的SSL证......
  • Springboot 读写分离
    因为项目中需要用到读写分离,所以在网上找资料整理了下,主要采用AbstractRoutingDataSource+aop的方式实现,直接上代码。代码结构图:pom文件:<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=......
  • pytest接口自动化测试框架搭建
    搭建一个基于 pytest的接口自动化测试框架,可以帮助开发者和测试人员更高效地执行和管理API测试。pytest是一个功能强大且灵活的Python测试框架,支持多种测试需求,包括单元测试、集成测试和功能测试。本文将详细介绍如何搭建一个高效的 pytest接口自动化测试框架。1.环境准备首......