5 changed files with 298 additions and 298 deletions
@ -1,171 +1,171 @@ |
|||||
[Actors](../README.md) | Dapr.Actors 文档 |
[Actors](../README.md) | Dapr.Client 文档 |
||||
|
|
||||
# LINGYUN.Abp.Dapr.Client |
# LINGYUN.Abp.Dapr.Client |
||||
|
|
||||
实现了Dapr文档中的服务间调用,项目设计与Volo.Abp.Http.Client一致,通过配置文件即可无缝替代Volo.Abp.Http.Client |
实现了Dapr文档中的服务间调用,项目设计与Volo.Abp.Http.Client一致,通过配置文件即可无缝替代Volo.Abp.Http.Client |
||||
|
|
||||
配置参考 [AbpRemoteServiceOptions](https://docs.abp.io/zh-Hans/abp/latest/API/Dynamic-CSharp-API-Clients#abpremoteserviceoptions) |
配置参考 [AbpRemoteServiceOptions](https://docs.abp.io/zh-Hans/abp/latest/API/Dynamic-CSharp-API-Clients#abpremoteserviceoptions) |
||||
|
|
||||
## 配置使用 |
## 配置使用 |
||||
|
|
||||
模块按需引用 |
模块按需引用 |
||||
|
|
||||
```csharp |
```csharp |
||||
[DependsOn(typeof(AbpDaprClientModule))] |
[DependsOn(typeof(AbpDaprClientModule))] |
||||
public class YouProjectModule : AbpModule |
public class YouProjectModule : AbpModule |
||||
{ |
{ |
||||
public override void ConfigureServices(ServiceConfigurationContext context) |
public override void ConfigureServices(ServiceConfigurationContext context) |
||||
{ |
{ |
||||
// 注册代理类似于 Volo.Abp.Http.Client 模块 |
// 注册代理类似于 Volo.Abp.Http.Client 模块 |
||||
context.Services.AddDaprClientProxies( |
context.Services.AddDaprClientProxies( |
||||
typeof(YouProjectInterfaceModule).Assembly, // 搜索 YouProjectInterfaceModule 模块下的远程服务定义 |
typeof(YouProjectInterfaceModule).Assembly, // 搜索 YouProjectInterfaceModule 模块下的远程服务定义 |
||||
RemoteServiceName |
RemoteServiceName |
||||
); |
); |
||||
} |
} |
||||
} |
} |
||||
``` |
``` |
||||
|
|
||||
|
|
||||
### 1、接口定义 |
### 1、接口定义 |
||||
|
|
||||
```c# |
```c# |
||||
|
|
||||
// IApplicationService 实现了 IRemoteService |
// IApplicationService 实现了 IRemoteService |
||||
public interface ISystemAppService : IApplicationService |
public interface ISystemAppService : IApplicationService |
||||
{ |
{ |
||||
Task<string> GetAsync(); |
Task<string> GetAsync(); |
||||
} |
} |
||||
|
|
||||
public class SystemInterfaceModule : AbpModule |
public class SystemInterfaceModule : AbpModule |
||||
{ |
{ |
||||
|
|
||||
} |
} |
||||
|
|
||||
``` |
``` |
||||
|
|
||||
### 2、服务端 |
### 2、服务端 |
||||
|
|
||||
引用 Volo.Abp.AspNetCore.Mvc |
引用 Volo.Abp.AspNetCore.Mvc |
||||
|
|
||||
* 实现接口 |
* 实现接口 |
||||
|
|
||||
```c# |
```c# |
||||
|
|
||||
public class SystemAppService : ApplicationService, ISystemAppService |
public class SystemAppService : ApplicationService, ISystemAppService |
||||
{ |
{ |
||||
public Task<string> GetAsync() |
public Task<string> GetAsync() |
||||
{ |
{ |
||||
retuen Task.FromResult("System"); |
retuen Task.FromResult("System"); |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
``` |
``` |
||||
|
|
||||
* 创建模块 |
* 创建模块 |
||||
|
|
||||
```c# |
```c# |
||||
|
|
||||
[DependsOn( |
[DependsOn( |
||||
typeof(SystemInterfaceModule), |
typeof(SystemInterfaceModule), |
||||
typeof(AbpAspNetCoreMvcModule))] |
typeof(AbpAspNetCoreMvcModule))] |
||||
public class SystemServerModule : AbpModule |
public class SystemServerModule : AbpModule |
||||
{ |
{ |
||||
public override void PreConfigureServices(ServiceConfigurationContext context) |
public override void PreConfigureServices(ServiceConfigurationContext context) |
||||
{ |
{ |
||||
PreConfigure<IMvcBuilder>(mvcBuilder => |
PreConfigure<IMvcBuilder>(mvcBuilder => |
||||
{ |
{ |
||||
mvcBuilder.AddApplicationPartIfNotExists(typeof(SystemServerModule).Assembly); |
mvcBuilder.AddApplicationPartIfNotExists(typeof(SystemServerModule).Assembly); |
||||
}); |
}); |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
``` |
``` |
||||
|
|
||||
* 发布到Dapr |
* 发布到Dapr |
||||
|
|
||||
```shell |
```shell |
||||
# --app-port .net程序映射端口 |
# --app-port .net程序映射端口 |
||||
# -H 对外暴露 http 监听端口 |
# -H 对外暴露 http 监听端口 |
||||
# -G 对外暴露 grpc 监听端口 |
# -G 对外暴露 grpc 监听端口 |
||||
dapr run --app-id myapp --app-port 5000 -H 50000 -G 40001 -- dotnet run |
dapr run --app-id myapp --app-port 5000 -H 50000 -G 40001 -- dotnet run |
||||
|
|
||||
``` |
``` |
||||
|
|
||||
### 3、客户端 |
### 3、客户端 |
||||
|
|
||||
引用 LINGYUN.Abp.Dapr.Client |
引用 LINGYUN.Abp.Dapr.Client |
||||
|
|
||||
* 配置文件 **appsettings.json** |
* 配置文件 **appsettings.json** |
||||
|
|
||||
```json |
```json |
||||
|
|
||||
{ |
{ |
||||
"RemoteServices": { |
"RemoteServices": { |
||||
"System": { |
"System": { |
||||
"AppId": "myapp", |
"AppId": "myapp", |
||||
"BaseUrl": "http://127.0.0.1:50000" |
"BaseUrl": "http://127.0.0.1:50000" |
||||
} |
} |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
``` |
``` |
||||
|
|
||||
* 客户端代码 |
* 客户端代码 |
||||
|
|
||||
```c# |
```c# |
||||
|
|
||||
// 模块依赖 |
// 模块依赖 |
||||
[DependsOn( |
[DependsOn( |
||||
typeof(AbpDaprClientModule))] |
typeof(AbpDaprClientModule))] |
||||
public class SystemActorClientModule : AbpModule |
public class SystemActorClientModule : AbpModule |
||||
{ |
{ |
||||
private const string RemoteServiceName = "System"; |
private const string RemoteServiceName = "System"; |
||||
|
|
||||
public override void ConfigureServices(ServiceConfigurationContext context) |
public override void ConfigureServices(ServiceConfigurationContext context) |
||||
{ |
{ |
||||
// 注册代理类似于 Volo.Abp.Http.Client 模块 |
// 注册代理类似于 Volo.Abp.Http.Client 模块 |
||||
context.Services.AddDaprClientProxies( |
context.Services.AddDaprClientProxies( |
||||
typeof(SystemInterfaceModule).Assembly, // 搜索 SystemInterfaceModule 模块下的IRemoteService定义创建代理 |
typeof(SystemInterfaceModule).Assembly, // 搜索 SystemInterfaceModule 模块下的IRemoteService定义创建代理 |
||||
RemoteServiceName |
RemoteServiceName |
||||
); |
); |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
// 调用方法,直接依赖注入即可 |
// 调用方法,直接依赖注入即可 |
||||
public class InvokeClass |
public class InvokeClass |
||||
{ |
{ |
||||
private readonly ISystemAppService _systemAppService; |
private readonly ISystemAppService _systemAppService; |
||||
|
|
||||
public InvokeClass(ISystemAppService systemAppService) |
public InvokeClass(ISystemAppService systemAppService) |
||||
{ |
{ |
||||
_systemAppService = systemAppService; |
_systemAppService = systemAppService; |
||||
} |
} |
||||
|
|
||||
public async Task InvokeAsync() |
public async Task InvokeAsync() |
||||
{ |
{ |
||||
await _systemAppService.GetAsync(); |
await _systemAppService.GetAsync(); |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
``` |
``` |
||||
|
|
||||
|
|
||||
## 配置项说明 |
## 配置项说明 |
||||
|
|
||||
* AbpDaprRemoteServiceOptions.RemoteServices 配置Dapr.AppId |
* AbpDaprRemoteServiceOptions.RemoteServices 配置Dapr.AppId |
||||
|
|
||||
```json |
```json |
||||
|
|
||||
{ |
{ |
||||
"RemoteServices": { |
"RemoteServices": { |
||||
"System": { |
"System": { |
||||
"AppId": "myapp", |
"AppId": "myapp", |
||||
"BaserUrl": ""http://127.0.0.1:50000"" |
"BaserUrl": "http://127.0.0.1:50000" |
||||
} |
} |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
``` |
``` |
||||
|
|
||||
|
|
||||
## 其他 |
## 其他 |
||||
|
|||||
@ -1,124 +1,124 @@ |
|||||
[Client](./LINGYUN.Abp.Dapr.Client/README.md) | Dapr.Client 文档 |
[Client](./LINGYUN.Abp.Dapr.Client/README.md) | Dapr.Actors 文档 |
||||
|
|
||||
# Dapr.Actors 集成 |
# Dapr.Actors 集成 |
||||
|
|
||||
## 配置使用 |
## 配置使用 |
||||
|
|
||||
项目设计与 **Volo.Abp.Http.Client** 类似 |
项目设计与 **Volo.Abp.Http.Client** 类似 |
||||
|
|
||||
### 1、接口定义 |
### 1、接口定义 |
||||
|
|
||||
```c# |
```c# |
||||
|
|
||||
// 定义在接口上的RemoteService.Name会被作为Actor的名称注册到Dapr |
// 定义在接口上的RemoteService.Name会被作为Actor的名称注册到Dapr |
||||
[RemoteService(Name = "System")] |
[RemoteService(Name = "System")] |
||||
public interface ISystemActor : IActor |
public interface ISystemActor : IActor |
||||
{ |
{ |
||||
Task<string> GetAsync(); |
Task<string> GetAsync(); |
||||
} |
} |
||||
|
|
||||
public class SystemActorInterfaceModule : AbpModule |
public class SystemActorInterfaceModule : AbpModule |
||||
{ |
{ |
||||
|
|
||||
} |
} |
||||
|
|
||||
``` |
``` |
||||
|
|
||||
### 2、服务端 |
### 2、服务端 |
||||
|
|
||||
引用 LINGYUN.Abp.Dapr.Actors.AspNetCore |
引用 LINGYUN.Abp.Dapr.Actors.AspNetCore |
||||
|
|
||||
* 实现接口 |
* 实现接口 |
||||
|
|
||||
```c# |
```c# |
||||
|
|
||||
public class SystemActor : Actor, ISystemActor |
public class SystemActor : Actor, ISystemActor |
||||
{ |
{ |
||||
public Task<string> GetAsync() |
public Task<string> GetAsync() |
||||
{ |
{ |
||||
retuen Task.FromResult("System"); |
retuen Task.FromResult("System"); |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
``` |
``` |
||||
|
|
||||
* 创建模块 |
* 创建模块 |
||||
|
|
||||
```c# |
```c# |
||||
|
|
||||
// 模块会自动搜索实现了IActor的服务,注册为Dapr的Actors |
// 模块会自动搜索实现了IActor的服务,注册为Dapr的Actors |
||||
[DependsOn( |
[DependsOn( |
||||
typeof(AbpDaprActorsAspNetCoreModule))] |
typeof(AbpDaprActorsAspNetCoreModule))] |
||||
public class SystemActorServerModule : AbpModule |
public class SystemActorServerModule : AbpModule |
||||
{ |
{ |
||||
|
|
||||
} |
} |
||||
|
|
||||
``` |
``` |
||||
|
|
||||
* 发布到Dapr |
* 发布到Dapr |
||||
|
|
||||
```shell |
```shell |
||||
# --app-port .net程序映射端口 |
# --app-port .net程序映射端口 |
||||
# -H 对外暴露 http 监听端口 |
# -H 对外暴露 http 监听端口 |
||||
# -G 对外暴露 grpc 监听端口 |
# -G 对外暴露 grpc 监听端口 |
||||
dapr run --app-id myapp --app-port 5000 -H 50000 -G 40001 -- dotnet run |
dapr run --app-id myapp --app-port 5000 -H 50000 -G 40001 -- dotnet run |
||||
|
|
||||
``` |
``` |
||||
|
|
||||
### 3、客户端 |
### 3、客户端 |
||||
|
|
||||
引用 LINGYUN.Abp.Dapr.Actors |
引用 LINGYUN.Abp.Dapr.Actors |
||||
|
|
||||
* 配置文件 **appsettings.json** |
* 配置文件 **appsettings.json** |
||||
|
|
||||
```json |
```json |
||||
|
|
||||
{ |
{ |
||||
"RemoteServices": { |
"RemoteServices": { |
||||
"Shop": { |
"Shop": { |
||||
"BaseUrl": "http://127.0.0.1:50000" |
"BaseUrl": "http://127.0.0.1:50000" |
||||
} |
} |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
``` |
``` |
||||
|
|
||||
* 客户端代码 |
* 客户端代码 |
||||
|
|
||||
```c# |
```c# |
||||
|
|
||||
// 模块依赖 |
// 模块依赖 |
||||
[DependsOn( |
[DependsOn( |
||||
typeof(AbpDaprActorsModule))] |
typeof(AbpDaprActorsModule))] |
||||
public class SystemActorClientModule : AbpModule |
public class SystemActorClientModule : AbpModule |
||||
{ |
{ |
||||
public override void ConfigureServices(ServiceConfigurationContext context) |
public override void ConfigureServices(ServiceConfigurationContext context) |
||||
{ |
{ |
||||
// 注册代理类似于 Volo.Abp.Http.Client 模块 |
// 注册代理类似于 Volo.Abp.Http.Client 模块 |
||||
context.Services.AddDaprActorProxies( |
context.Services.AddDaprActorProxies( |
||||
typeof(SystemActorInterfaceModule).Assembly, // 搜索 SystemActorInterfaceModule 模块下的IActor定义 |
typeof(SystemActorInterfaceModule).Assembly, // 搜索 SystemActorInterfaceModule 模块下的IActor定义 |
||||
"Shop" |
"Shop" |
||||
); |
); |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
// 调用方法,直接依赖注入即可 |
// 调用方法,直接依赖注入即可 |
||||
public class InvokeClass |
public class InvokeClass |
||||
{ |
{ |
||||
private readonly ISystemActor _systemActor; |
private readonly ISystemActor _systemActor; |
||||
|
|
||||
public InvokeClass(ISystemActor systemActor) |
public InvokeClass(ISystemActor systemActor) |
||||
{ |
{ |
||||
_systemActor = systemActor; |
_systemActor = systemActor; |
||||
} |
} |
||||
|
|
||||
public async Task InvokeAsync() |
public async Task InvokeAsync() |
||||
{ |
{ |
||||
await _systemActor.GetAsync(); |
await _systemActor.GetAsync(); |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
``` |
``` |
||||
|
|
||||
## 其他 |
## 其他 |
||||
|
|||||
Loading…
Reference in new issue