dotnet core微服务框架Jimu ~ 会员注册微服务
提供会员注册服务,用户必须注册成会员才能享受应用提供的服务,如浏览和发布新闻, 但有些服务又需要指定角色的会员才能操作,如所有会员都可以浏览新闻,只有管理员(admin)角色的会员才可以发布新闻。
有 2 个公开的 api:
- CheckName:判断用户名是否可用;
- Register:根据用户名注册会员;
1 声明接口,创建基于 .Net Core 6.0 的类库项目,命名为 Register.IServices
1.1 添加 jimu 引用
Install-Package Jimu
1.2 创建 dto 类
using System;
using System.Collections.Generic;
using System.Text; namespace Register.IServices
{
public class Member
{
public Guid Id { get; set; }
public string Name { get; set; }
public string NickName { get; set; }
public string Pwd { get; set; } }
}
1.3 声明公开的微服务接口
微服务的定义规则:
- 必须继承 IJimuService 接口
- 声明路由属性 [JimuServiceRoute()]
- 方法添加属性 [JimuService()],该方法才会注册成公开的微服务
Jimu 支持异步方法, 如下面的 Register
下面的两个方法,未设置 EnableAuthorization = true(默认为 false),都可以匿名访问
using System;
using System.Threading.Tasks;
using Jimu; namespace Register.IServices
{
[JimuServiceRoute("/api/v1/register")]
public interface IRegisterService : IJimuService
{
[JimuService(CreatedBy = "grissom", CreatedDate = "2018-07-17", Comment = "check member name whether is valid")]
bool CheckName(string name);
[JimuService(CreatedBy = "grissom", CreatedDate = "2018-07-17", Comment = "register member")]
Task<bool> Register(string name, string nickname, string pwd); }
}
2 实现接口,创建基于 .Net Core 6.0 的类库项目,命名为 Register.Services
2.1 添加对接口项目 Register.IServices 的引用
2.2 实现接口
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Register.IServices; namespace Register.Services
{
public class RegisterService : IRegisterService
{
static List<Member> _membersDb = new List<Member>(); public bool CheckName(string name)
{
return !_membersDb.Any(x => x.Name == name);
} public Task<bool> Register(string name, string nickname, string pwd)
{
if (!CheckName(name))
{
return Task.FromResult(false);
}
_membersDb.Add(new Member { Id = Guid.NewGuid(), Name = name, NickName = nickname, Pwd = pwd });
return Task.FromResult(true); }
}
}
3 微服务的宿主服务器,创建基于 .Net Core 6.0 的控制台应用, 命名为 Register.Server
3.1 添加对项目: Register.Services 的引用
3.2 添加 jimu.server 和 Jimu.Common.Discovery.ConsulIntegration 引用
Install-Package Jimu.Server
Install-Package Jimu.Common.Discovery.ConsulIntegration
3.3 启动 jimu 服务代码
using Jimu.Server;
using System; namespace Register.Server
{
class Program
{
static void Main(string[] args)
{
var builder = new ServiceHostServerBuilder(new Autofac.ContainerBuilder())
.UseLog4netLogger() // 使用 log4net 记录日志
.LoadServices("Register.IServices", "Register.Services") // 加载服务
.UseDotNettyForTransfer("127.0.0.1", 8001) // DotNetty 监听 8001 端口进行通讯
.UseConsulForDiscovery("127.0.0.1", 8500, "JimuService", $"127.0.0.1:8001") // 使用 consul, "JimiService" 指定注册服务时,key 带上的前缀,相当于服务分组,$"127.0.0.1:8001" 指定服务宿主的访问地址
.UseJoseJwtForOAuth<Jimu.DotNettyAddress>(new Jimu.Server.OAuth.JwtAuthorizationOptions
{
SecretKey = "123456",
}); // 使用 jwt 进行鉴权,这里只是验证 token,所以只需验证的密钥, 生产 token 在 Auth.Server 服务
using (var host = builder.Build())
{
host.Run(); // 启动服务
while (true)
{
Console.ReadKey();
}
}
}
}
}
dotnet core微服务框架Jimu ~ 会员注册微服务的更多相关文章
- .Net Core 分布式微服务框架 - Jimu 添加 Swagger 支持
系列文章 .Net Core 分布式微服务框架介绍 - Jimu .Net Core 分布式微服务框架 - Jimu 添加 Swagger 支持 一.前言 最近有空就优化 Jimu (一个基于.Net ...
- NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成
本篇内容属于非实用性(拿来即用)介绍,如对框架设计没兴趣的朋友,请略过. 快一个月没有写博文了,最近忙着两件事; 一:阅读刘墉先生的<说话的魅力>,以一种微妙的,你我大家都会经常遇见 ...
- 基于DotNet Core的RPC框架(一) DotBPE.RPC快速开始
0x00 简介 DotBPE.RPC是一款基于dotnet core编写的RPC框架,而它的爸爸DotBPE,目标是实现一个开箱即用的微服务框架,但是它还差点意思,还仅仅在构思和尝试的阶段.但不管怎么 ...
- .Net Core 分布式微服务框架介绍 - Jimu
系列文章 .Net Core 分布式微服务框架介绍 - Jimu .Net Core 分布式微服务框架 - Jimu 添加 Swagger 支持 一.前言 近些年一直浸淫在 .Net 平台做企业应用开 ...
- Net Core 分布式微服务框架
Jimu : .Net Core 分布式微服务框架介绍 https://www.cnblogs.com/grissom007/p/9291345.html 一.前言 近些年一直浸淫在 .Net 平台做 ...
- ASP.NET Core依赖注入系统学习教程:关于服务注册使用到的方法
在.NET Core的依赖注入框架中,服务注册的信息将会被封装成ServiceDescriptor对象,而这些对象都会存储在IServiceCollection接口类型表示的集合中,另外,IServi ...
- spring cloud 入门,看一个微服务框架的「五脏六腑」
Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 注:Spring Boot 简单理解就是简化 Spring 项目的搭建.配置.组 ...
- 从 Spring Cloud 看一个微服务框架的「五脏六腑」
原文:https://webfe.kujiale.com/spring-could-heart/ Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构 ...
- 从 Spring Cloud 看一个微服务框架的「五脏六腑」(转)
Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 本文将从 Spring Cloud 出发,分两小节讲述微服务框架的「五脏六腑」: ...
- kratos微服务框架学习笔记一(kratos-demo)
目录 kratos微服务框架学习笔记一(kratos-demo) kratos本体 demo kratos微服务框架学习笔记一(kratos-demo) 今年大部分时间飘过去了,没怎么更博和githu ...
随机推荐
- SMU Summer 2023 Contest Round 14
SMU Summer 2023 Contest Round 14 A. Potion-making 就是解一个\(\frac{i}{i + j} = \frac{k}{100}\)方程,然后循环暴力找 ...
- 痞子衡嵌入式:英飞凌MirrorBit工艺NOR Flash的扇区架构设计
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是英飞凌MirrorBit工艺NOR Flash的扇区架构设计. NOR Flash 大家都很熟悉,其内部按组织从小到大分为 Page(12 ...
- 使用FModel提取黑神话悟空的资产
目录 前言 设置 效果展示 闲聊 可能遇到的问题 没有相应的UE引擎版本选项 前言 黑神话悟空昨天上线了,解个包looklook. 本文内容比较简洁,仅介绍解包黑神话所需的专项配置,关于FModel的 ...
- LaTeX 插入矢量图
首先将矢量图保存为 PDF 格式. 使用 pdfcrop 工具裁剪 PDF 页面空白: pdfcrop <input.pdf> [output.pdf] 在 .tex 文件中使用 grap ...
- 【Mac渗透测试】之SQL注入Demo
目录: 一.下载安装sqlmap 二.SQL注入 三.参考文章 一.下载安装sqlmap 1.官网地址:http://sqlmap.org/#download git下载: git clone --d ...
- 【YashanDB知识库】filter or改写问题
问题现象 当filter中出现or的时候,会导致filter无法走索引或者走hash join,就需要进行改写,例如: create table test_tab1(col1 int, col2 in ...
- Qemu - 介绍
Ref: QEMU支持3种运行模式 -- 理解 https://www.minitool.com/partition-disk/qemu-for-windows.html
- 《linux实用指令积累》持续更新。。。
一.远程服务器文件拷贝 1.1.scp scp /home/a.txt root@127.0.0.1:/home/ 1.2.sshpass(适用于脚本调用,直接指定密码) 1.2.1.安装sshpas ...
- Linux firewalld 的用法
大乌龙事件之防火墙作祟: 在我的初始化环境中 selinux.iptables.firewalld 是关闭的, 莫名的firewalld 是没有关闭的这是我在安装完docker后一段时间后部署jenk ...
- Docker 知识梳理及其安装使用
Docker 介绍 Docker 是一个强大的工具,用于高效开发.打包和部署应用程序.Docker 是一种容器管理服务.Docker 于 2013 年发布.它是开源的,可用于 Windows.macO ...