百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

.NET 6 + Abp框架一个轻量级微服务库

ccwgpt 2024-10-30 01:42 42 浏览 0 评论

Soa

项目地址:https://github.com/MatoApps/Soa

介绍

一个轻量级的微服务库,基于.NET 6 + Abp框架 可快速地将现有项目改造成为面向服务体系结构,实现模块间松耦合。

感谢

RabbitTeam 的项目 RabbitCloud:

https://github.com/RabbitTeam/RabbitCloud

grissomlau 的项目jimu:

https://github.com/grissomlau/jimu

部分模块以及算法代码参考自以上项目

特点

  • 支持DotNetty和Http两种模式的RPC
  • 支持自动路由发现注册与微服务健康监测
  • 支持模块以及模块的依赖关系
  • 支持简单对象(POCO)作为参数或返回类型
  • 支持登录与鉴权
  • 支持多语言/本地化

内容

  • 基于Roslyn的动态客户代理类(Proxy模块)
  • POCO对象传输编解码(TypeConverter模块)
  • 基于DotNetty或者HTTP的RPC(Transport模块)
  • 路由服务发现(ServiceDiscovery模块)
  • 健康监测(HealthCheck模块)
  • 基于swagger的Api文档生成
  • 基于Attribute注解的路由配置
  • 基于Json配置文件的系统配置(Abp实现)
  • 基于Hangfire的计划任务
  • 基于Castle Windsor的Ioc(Abp实现)
  • 基于Log4Net的日志(Abp实现)
  • 基于AbpZero的用户系统
  • 基于EF,并实现模型的Repository仓储模式(Abp实现)

更新内容

DateVersionContentV0.9.02022-5-17初始版本

快速开始


网关(客户端) GatewaySample

  • 添加对Soa库的引用
  • 添加对Soa.Client库的引用

Startup.cs 文件

1、删除AddAbp

// services.AddAbp();

2、添加AddSoaClient

services.AddSoaClient<GatewaySampleWebHostModule>(new SoaClientOptions()
{
    IsDevelopment = _hostingEnvironment.IsDevelopment(),
    LoggerProvider = _appConfiguration["App:UseLogger"].ToUpper(),
    PlugInsPath = Path.Combine(_hostingEnvironment.WebRootPath, "PlugIns")
},true);

3、删除UseAbp

//app.UseAbp();

4、添加UseSoaClient

app.UseSoaClient(options => { options.UseAbpRequestLocalization = false; }); // Initializes Soa framework.

GatewaySampleWebHostModule.cs 文件

5、添加SoaClientModule模块依赖

[DependsOn(typeof(SoaClientModule))]
public class GatewaySampleWebHostModule: AbpModule
{
    //Your code
}
  • 配置 appsettings.json 文件
  • 配置 Hangfire

微服务抽象层 IService1

IService1Manager.cs 文件

1、构建接口IService1Manager并继承于ISoaService

2、添加Soa标签和Abp标签

[SoaAuthorize("permission_name")]     //Soa权限标签
[SoaServiceRoute("soa_api/service1")]           //Soa服务路由标签 
public interface IService1Manager : ISoaService
{
    //定义接口    
    [SoaService(CreatedBy = "linxiao", Comment = "bring a string to the world and say hello !")]
    [SoaAuthorize("permission_name")]    
    public string GetHelloWorld();

}
  • 将微服务抽象层引用添加至网关(客户端) GatewaySample

网关Ioc添加各微服务抽象层

var ass = Assembly.Load("Soa.Sample.IAuthorizedService");
IocManager.RegisterAssemblyByConvention(ass);

网关引入各微服务权限

Configuration.Authorization.Providers.Add <AuthorizedServiceAuthorizationProvider>();

网关引入各微服务本地化资源

var loc = Configuration.Localization;
AuthorizedServiceLocalizationConfigurer.Configure(loc);

其他的Abp配置等等

微服务(服务端) Service1

  • 添加对微服务抽象层的引用

Program.cs 文件

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSoa<Service1HostModel>();
var webapp = builder.Build();
webapp.UseSoaServer();
webapp.Run();

Service1HostModel.cs 文件

1、添加SoaServerModule模块依赖

[DependsOn(typeof(SoaServerModule))]
public class Service1HostModel : AbpModule
{
    //Your code
}

Service1Manager.cs 文件

1、构建类Service1Manager

2、继承IService1Manager并实现其成员

public class Service1Manager : DomainService , IService1Manager
{
    //实现业务
    public string GetHelloWorld()
    {
        return "hello world !";
    }
}
  • 配置 appsettings.json 文件

关于appsettings.json的配置,请参考 配置说明:

https://github.com/MatoApps/Soa/blob/master/SOA/Hangfire Guid-zh-Hans.md

关于Hangfire的配置,请参考 定时任务:

https://github.com/MatoApps/Soa/blob/master/SOA/Hangfire Guid-zh-Hans.md

完整示例请参考Sample:

https://github.com/MatoApps/Soa/tree/master/sample

工具

Roslyn Syntax Tool:https://github.com/MatoApps/RoslynSyntaxTool

  • 此工具能将C#代码,转换成使用语法工厂构造器(SyntaxFactory)生成等效语法树代码

项目地址

Github:https://github.com/MatoApps/Soa

转自: 林晓lx

链接:cnblogs.com/jevonsflash/p/16284972.html

相关推荐

Xtreme套件Xtreme Suite Pro正式发布v17.0.0

Codejock软件公司的Xtreme套件(XtremeSuite)包含了三种流行的组件:Xtreme命令工具栏(XtremeCommandBars)——把需要创建的具有改进对接算法的所有组件...

Wine能不能跑Win程序?信创操作系统下运行Windows应用的条件!

原文链接:「链接」Hello,大家好啊,今天给大家带来一篇信创操作系统上使用Wine运行Windows应用程序的条件的文章,欢迎大家分享点赞,点个在看和关注吧!在日常使用国产信创操作系统(如统...

VC界面开发组件Xtreme Toolkit Pro全新发布v17.0.0

Codejock软件公司的XtremeToolkitPro是屡获殊荣的VC界面库,是MFC开发中最全面界面控件套包,它提供了Windows开发所需要的11种主流的VisualC++MFC控件,...

机器视觉软件开发新人入门必看 --机器视觉软件开发学习路径

机器视觉是机械、运动、控制、光学、软件、算法于一体的交叉学科,对于学工科的人来说,机械、运动、控制都有一定的了解,对于软件、算法、光学不是很了解。一台设备,有一个到二个机械设计师或者结构工程师,那么这...

数控变频器的研究与实现(数控变频器的研究与实现思考题)

一般变频器具有两种控制方式:控制面板控制方式和串行通信数据控制方式。控制面板控制方式利用变频器自带控制面板进行手动操控,一般应用于非自动控制场合。在自动化程度越来越高的工业生产现场以及机电一体化的数控...

实用 | 分享几个非常实用的开源项目

前言本次分享几个实用的、值得学习使用的嵌入式相关开源项目,下面列举的这些基本上都在本公众号分享过,详细介绍及使用可查看往期笔记。protobufProtocolBuffers,是Google公司开发...

Windows桌面应用程序常用开发框架的设计案例全面展示

Windows桌面应用程序是我们日常生活中不可或缺的一部分,而开发这些应用程序需要使用相应的框架。本文将全面介绍常用的Windows桌面应用程序开发框架,帮助您了解并选择适合的开发工具。一、原生的Wi...

.NET9 FCall/QCall调用约定(.net 调用存储过程)

蓝字江湖评谈设为关注前言FCall/Qcall是托管与非托管之间的调用约定,双方需要一个契约,以弥合彼此的互相/单向调用。非托管调用约定先了解下非托管约定,一般有四种,分别为thiscall,std...

BCGControlBar Pro for MFC v24.4正式发布

BCGControlBar(BusinessComponentsGalleryControlBar)专业版是MFC的一个扩展库,您可以用来构建类似于MicrosoftOffice2000/X...

MFC多文档视图(mfc 多文档)

你可以因为现任不好而分手,但千万不要认为别人更好,永远有人更好,眼下便是更好。。。----网易云热评一、多文档视图架构程序1、特点:可以管理多个文档。(可以有多个文档类对象)2、相关类CWinA...

MFC扩展库BCGControlBar Pro v33.5新版亮点:Ribbon Bar等全新升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。BCGControlBar专业版v3...

山东新华电脑学院4G软件专业明星优秀作品展

项目实战工程师:向修艺年龄:18岁班级:4G软件1501班座右铭:付出才会有收获导师寄语:自学能力和实践能力都非常出色,并且学习认真做事责任心强,是不可多得的人才。相信将来如果能获得机会,发挥自己的...

MFC转QT:Qt基础知识(mfc获取当前日期和时间信息)

1.Qt框架概述Qt的历史和版本Qt是一个跨平台的C++应用程序开发框架,由挪威公司Trolltech(现为QtCompany)于1991年创建。Qt的发展历程:1991年:Qt项目启动1995年...

MFC转QT:Qt高级特性 - 事件系统(mfc读取txt文件每一行数据)

Qt事件处理机制Qt的事件系统是整个框架的核心基础之一,负责处理用户输入、窗口系统消息和应用内部的通信。相比MFC的消息映射系统,Qt的事件处理机制更加灵活和直观。基本概念事件(Event)是Qt框...

MFC用户界面套包BCGControlBar Pro for MFC发布v25.0

BCGControlBar(BusinessComponentsGalleryControlBar)专业版是MFC的一个扩展库,您可以用来构建类似于MicrosoftOffice2000/X...

取消回复欢迎 发表评论: