提供会员注册服务,用户必须注册成会员才能享受应用提供的服务,如浏览和发布新闻, 但有些服务又需要指定角色的会员才能操作,如所有会员都可以浏览新闻,只有管理员(admin)角色的会员才可以发布新闻。

有 2 个公开的 api:

  1. CheckName:判断用户名是否可用;
  2. 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 声明公开的微服务接口

微服务的定义规则:

  1. 必须继承 IJimuService 接口
  2. 声明路由属性 [JimuServiceRoute()]
  3. 方法添加属性 [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 ~ 会员注册微服务的更多相关文章

  1. .Net Core 分布式微服务框架 - Jimu 添加 Swagger 支持

    系列文章 .Net Core 分布式微服务框架介绍 - Jimu .Net Core 分布式微服务框架 - Jimu 添加 Swagger 支持 一.前言 最近有空就优化 Jimu (一个基于.Net ...

  2. NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成

    本篇内容属于非实用性(拿来即用)介绍,如对框架设计没兴趣的朋友,请略过. 快一个月没有写博文了,最近忙着两件事;    一:阅读刘墉先生的<说话的魅力>,以一种微妙的,你我大家都会经常遇见 ...

  3. 基于DotNet Core的RPC框架(一) DotBPE.RPC快速开始

    0x00 简介 DotBPE.RPC是一款基于dotnet core编写的RPC框架,而它的爸爸DotBPE,目标是实现一个开箱即用的微服务框架,但是它还差点意思,还仅仅在构思和尝试的阶段.但不管怎么 ...

  4. .Net Core 分布式微服务框架介绍 - Jimu

    系列文章 .Net Core 分布式微服务框架介绍 - Jimu .Net Core 分布式微服务框架 - Jimu 添加 Swagger 支持 一.前言 近些年一直浸淫在 .Net 平台做企业应用开 ...

  5. Net Core 分布式微服务框架

    Jimu : .Net Core 分布式微服务框架介绍 https://www.cnblogs.com/grissom007/p/9291345.html 一.前言 近些年一直浸淫在 .Net 平台做 ...

  6. ASP.NET Core依赖注入系统学习教程:关于服务注册使用到的方法

    在.NET Core的依赖注入框架中,服务注册的信息将会被封装成ServiceDescriptor对象,而这些对象都会存储在IServiceCollection接口类型表示的集合中,另外,IServi ...

  7. spring cloud 入门,看一个微服务框架的「五脏六腑」

    Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 注:Spring Boot 简单理解就是简化 Spring 项目的搭建.配置.组 ...

  8. 从 Spring Cloud 看一个微服务框架的「五脏六腑」

    原文:https://webfe.kujiale.com/spring-could-heart/ Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构 ...

  9. 从 Spring Cloud 看一个微服务框架的「五脏六腑」(转)

    Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 本文将从 Spring Cloud 出发,分两小节讲述微服务框架的「五脏六腑」: ...

  10. kratos微服务框架学习笔记一(kratos-demo)

    目录 kratos微服务框架学习笔记一(kratos-demo) kratos本体 demo kratos微服务框架学习笔记一(kratos-demo) 今年大部分时间飘过去了,没怎么更博和githu ...

随机推荐

  1. windows启动jar包并显示标题

    cmd启动java的jar并显示窗口标题 title xx服务 D: cd D:\xx服务 java -jar guns-vip-main.jar 文件名名为 run.bat 双击即可运行

  2. Java元注解介绍

    Java四种元注解相关介绍 概述 注解从Java1.5引入以来,不断地简化我们编写代码的流程,逐渐的也成为了我们必学的一项技术.我们学习了各种注解,学习了他们的用法,学习了他们的限制,是否想过他们的组 ...

  3. Maven 打 JAR 包

    项目和依赖分别打入独立 JAR 包 使用 Maven Jar Plugin 插件,可以将项目自身单独打成一个 JAR 包,项目依赖的 JAR 包统一放置到指定目录. 在项目的 pom.xml 中添加如 ...

  4. 【Python自动化】之利用JS操作页面滚动条(新)

    如何操作页面中的滚动条,有以下几个方法: 一.查找可见元素进行滚动页面(通用) 方法一: ①移动到元素element对象的"顶端",与当前窗口的"顶部"对齐(默 ...

  5. Kubernetes-1:初识k8s 什么是kubernetes

    Kubernetes简介 为什么要用k8s? 容器间(Docker)在夸主机通信时,只能通过在主机做端口映射(DNAT)来实现,这种方式对于很多集群应用来说及其不方便.会影响整体处理速度,所以引入k8 ...

  6. c++学习笔记(二):引用

    c++中的引用 引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字.一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量. C++ 引用 vs 指针 引用很容易与指针混淆,它 ...

  7. Spring:基于注解管理bean

    标记与扫描 注解 和 XML 配置文件一样,注解本身并不能执行,注解本身仅仅只是做一个标记,具体的功能是框架检测 到注解标记的位置,然后针对这个位置按照注解标记的功能来执行具体操作. 本质上:所有一切 ...

  8. SpringBoot 基于注解实现接口的代理Bean注入

    SpringBoot 基于注解实现接口的代理Bean注入 在springboot加载时需自己手动将接口的代理bean注入到spring容器中,这样在service层注入该接口类型即可, 1.在Spri ...

  9. 官方 | 征集 Flutter 桌面端应用程序的构建案例

    亲爱的社区成员们,大家好! Google Flutter 团队希望了解开发者们使用 Flutter 构建的桌面端应用程序,以提高 Flutter 桌面端的测试覆盖率,邀请大家通过表单的形式提交征集和反 ...

  10. Android :安卓学习笔记之 Handler机制 的简单理解和使用

    目录 Handler机制 1.Handler使用的引出 2.背景和定义 3.作用和意义 4.主要参数 5.工作原理及流程 5.1.对应关系 6.深入分析 Handler机制源码 6.1.Handler ...