又一个 .NET 业务开发框架开源了 Viazy

393 阅读4分钟

前言

推荐一个不闭门造车,希望融合流行框架项目。

全面支持.NET 6、.NET 7、.NET 8。

项目介绍

Viazy是一个基于.NET 的业务开发框架,集成了多种先进技术,包括微服务架构、分布式处理、定时任务调度以及认证授权等关键组件。

该框架设计在为企业级应用提供一个全面且高效的开发解决方案,能够轻松集成上述功能,从而加速应用程序的开发与部署流程。

项目框架

Viazy框架模块,以下是Viazy框架中各个模块的功能概述:

ViazyNetCore.Data.FreeSql:引入FreeSql作为ORM框架,提供数据库操作支持。

ViazyNetCore.Auth:权限管理模块,负责认证与授权逻辑。

ViazyNetCore.Caching:缓存模块,用于提高应用性能。

ViazyNetCore.Redis:提供Redis集成与缓存管理功能。

ViazyNetCore.Swagger:集成Swagger管理及 Knife4j UI,方便API文档的生成与测试。

ViazyNetCore.EventBus:事件推送模块,支持应用内事件的订阅与发布。

ViazyNetCore.EventBus.RabbitMQ:基于RabbitMQ的分布式EventBus,实现异步消息传递。

ViazyNetCore.EventBus.Redis:基于Redis的分布式EventBus,适用于轻量级消息传递场景。

ViazyNetCore.Formmatter.Response:公共处理返回业务模块,标准化API响应格式。

ViazyNetCore.Formmatter.Excel:提供将数据转换为Excel文件并下载的功能。

ViazyNetCore.Web.DevServer:ViteNode SPA处理模块,支持单页应用的快速开发与部署。

ViazyNetCore.TaskScheduler:基于Quartz.Net的任务调度模块,支持定时任务管理。

ViazyNetCore.RabbitMQ:提供RabbitMQ消息队列集成。

ViazyNetCore.TaskScheduler.RabbitMQ:作为RabbitMQ的Quartz任务消费者,处理异步任务。

ViazyNetCore.AttachmentProvider:附件上传处理模块,简化文件上传流程。

ViazyNetCore.OSS:OSS文件存储基类,提供对象存储的基础功能。

ViazyNetCore.OSS.Minio:MinIO文件存储模块,实现与MinIO对象存储服务的集成。

ViazyNetCore.MultiTenancy:多租户模块,支持多租户应用的构建与管理。

ViazyNetCore.Dapr:集成Dapr边车服务,增强微服务应用的功能。

frontend/ele-admin-ui:基于Vue3的管理后台前端UI,提供现代化的管理界面。

frontend/shopmall-uniapp:前端商城小程序,使用uni-app框架构建,适用于多端应用。

通过这些模块,Viazy框架提供了一个强大且灵活的工具集,有助于快速构建高性能、可扩展的应用程序。

项目技术

管理后台:采用Vite构建工具结合Vue 3与TypeScript,搭配Element UI组件库,打造高效且现代化的前端管理系统。

前端商城:使用uni-app框架与Vue 3,支持多端(包括移动端和Web端)的一站式开发解决方案。

API文档生成:项目中采用了knife4j-vue,并增加了TypeScript支持,以生成高质量的API文档,确保前后端协同开发更加顺畅。

项目组件

项目使用

// 模块注入
builder.Services.AddCaching()  // 缓存注入
    .UseDistributedMemoryCache()  // 内存缓存
    .UseStackExchangeRedisCaching(options =>  // 基于 StackExchangeRedis 的缓存
    {
        options.ConfigurationOptions = new StackExchange.Redis.ConfigurationOptions
        {
            EndPoints =
            {
                { redisConfig.Host, redisConfig.Port }
            },
            Password = redisConfig.Password,
            ChannelPrefix = "ViazyNetCore"
        };
    });
await builder.Services.AddApplicationAsync<TestModule>();

// Api 返回全局拦截及处理
app.UseApiResponseWrapper(option =>
{
    option.IsApiOnly = false;
    option.EnableResponseLogging = true;
    option.EnableExceptionLogging = true;
});

InjectionModule 的使用

dotnet add package ViazyCoreNet.Core

[DependsOn(typeof(AutoMapperModule)
    , typeof(IdentityModule)
    , typeof(AspNetCoreMvcModule)
    , typeof(AuthorizationModule)
    , typeof(AuthApplicationModule)
    , typeof(BloggingModulsModule)
    )]
public class BloggingManageHostModule : InjectionModule
{
    …
}

在 Program 启动项中添加

await builder.Services.AddApplicationAsync<BloggingManageHostModule>();

IOC 支持

通过 InjectionAttribute 特性注入,默认生命周期为 Scoped

[Injection]
public class CategoryService
{
}

[Injection(Lifetime = ServiceLifetime.Singleton)//更改生命周期
public class CategoryService
{
}

Spa 前端应用快速启动。

app.UseSpa(spa =>
{
    spa.Options.SourcePath = "client"; //启用的前端项目的路径 相对于当前项目路径
    //spa.Options.PackageManagerCommand = "npm"; // 执行的 command命令
    // 开发阶段, 启用 ViteNode 监听端口,前后端可单端口运行,F5 一键启动调试。
    spa.UseDevServer(new ViteNodeServerOptions()  // dotnet add package ViazyNetCore.Web.DevServer
    {
        //Host"172.0.0.1",
    });
});

项目地址

gitee.com/ldaxian/via…

总结

本文展示了部分功能和内容,如有需求访问项目地址获取详细信息。希望本文能业务系统开发方面为各位提供有益的帮助。期待大家在评论区留言交流,分享您的宝贵经验和建议。

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。

也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

优秀是一种习惯,欢迎大家留言学习!