取消服务时,检查登录状态,避免注销后再次登录
This commit is contained in:
parent
242f5ea202
commit
56988d02a9
50
Readme.MD
50
Readme.MD
|
@ -39,51 +39,27 @@ Stardust 星尘,轻量级分布式服务框架!
|
|||

|
||||
|
||||
|
||||
### 设计概要
|
||||
提供者P向星尘S注册自己拥有的10个服务接口,消费者C也登入星尘S,得到访问令牌T,查找到某个接口刚好是P提供,于是得到了P的服务地址,然后C直连P,并使用访问令牌T表明身份
|
||||
## 快速拥有
|
||||
|
||||
```sequence{theme="simple"}
|
||||
提供者->星尘: Key登录
|
||||
note over 星尘: key/secret
|
||||
提供者-->>星尘: 注册服务
|
||||
使用NewLife组件的最简便方式是从Nuget引用,例如在项目Nuget管理中搜索`NewLife.Stardust` 并引入。
|
||||
|
||||
消费者->星尘: Key登录
|
||||
星尘-->消费者: 访问令牌Token
|
||||
note left of 消费者: 向提供者验明身份
|
||||
NewLife组件由社区共创20多年,使用MIT开源协议,**任何人可任意修改并再次发行**(无需声明来源)!许多企业基于此构建内部开发框架时,甚至可通过批量替换源码中所有`NewLife`字符串为贵公司名实现私有化定制。
|
||||
|
||||
消费者->星尘: 查询服务
|
||||
星尘-->消费者: 服务所在提供者列表
|
||||
团队始终秉承开放态度,不仅支持VisualStudio(最新正式版)打开解决方案编译,也兼容`dotnet build`命令行编译,项目文件摒弃复杂功能以追求简单易用,真正做到开箱即用。
|
||||
|
||||
消费者->提供者: Token令牌登录
|
||||
提供者-->消费者: 登录成功
|
||||
我们公开强命名证书`newlife.snk`以支持独自编译替换程序集。
|
||||
|
||||
提供者-->>星尘: 汇报状态
|
||||
|
||||
消费者->提供者: 请求服务
|
||||
提供者-->消费者: 响应数据
|
||||
|
||||
命令行中运行以下命令快速体验NewLife组件:
|
||||
|
||||
```
|
||||
dotnet new install NewLife.Templates
|
||||
dotnet new nconsole --name test
|
||||
cd test
|
||||
dotnet run
|
||||
```
|
||||
|
||||
### ServiceMesh架构
|
||||
Sidecar设计模式正在收到越来越多的关注和采用。作为Service Mesh的重要要素,Sidecar模式对于构建高度高度可伸缩、有弹性、安全且可便于监控的微服务架构系统至关重要。它降低了与微服务架构相关的复杂性,并提供了负载平衡、服务发现、流量管理、电路中断、遥测、故障注入等功能特性。
|
||||
|
||||
```sequence{theme="simple"}
|
||||
消费者->本机代理: 初始化
|
||||
本机代理->星尘: Key登录
|
||||
星尘-->本机代理: 访问令牌Token
|
||||
|
||||
本机代理->星尘: 查询服务
|
||||
星尘-->本机代理: 服务所在提供者列表
|
||||
|
||||
本机代理->提供者: Token令牌登录
|
||||
提供者-->本机代理: 登录成功
|
||||
|
||||
本机代理-->>星尘: 汇报状态
|
||||
|
||||
消费者->本机代理: 请求服务
|
||||
本机代理->提供者: 请求服务
|
||||
提供者-->本机代理: 响应数据
|
||||
本机代理-->消费者: 响应数据
|
||||
```
|
||||
|
||||
## 新生命项目矩阵
|
||||
各项目默认支持net9.0/netstandard2.1/netstandard2.0/net4.62/net4.5,旧版(2024.0801)支持net4.0/net2.0
|
||||
|
|
|
@ -214,6 +214,9 @@ public class AppClient : ClientBase, IRegistry
|
|||
{
|
||||
_publishServices.TryRemove(service.ServiceName, out _);
|
||||
|
||||
// 检查登录状态
|
||||
if (!Logined) return Task.FromResult<ServiceModel?>(null);
|
||||
|
||||
return InvokeAsync<ServiceModel>("App/UnregisterService", service);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue