Abp vNext 源码分析 - 23. 二进制大对象系统(BLOB)

一、简介

ABP vNext 在 v 2.9.x 版本当中添加了 BLOB 系统,主要用于存储大型二进制文件。ABP 抽象了一套通用的 BLOB 体系,开发人员在存储或读取二进制文件时,可以忽略具体实现,直接使用 IBlobContainerIBlobContainer<T> 进行操作。官方的 BLOB Provider 实现有 AzureAWSFileSystem(文件系统存储)Database(数据库存储)阿里云 OSS,你也可以自己继承 BlobProviderBase 来实现其他的 Provider。

BLOB 常用于各类二进制文件存储和管理,基本就是对云服务的 OSS 进行了抽象,在使用当中也会有 Bucket 和 Object Key 的概念,在 BLOB 里面对应的就是 ContainerName 和 BlobName。

关于 BLOB 的官方使用指南,可以参考 https://docs.abp.io/en/abp/latest/Blob-Storing,本文的阅读前提是建立在你已经阅读过该指南,并有一定的使用经验。

Abp vNext 源码分析 - 19. 多租户

一、简介

ABP vNext 原生支持多租户体系,可以让开发人员快速地基于框架开发 SaaS 系统。ABP vNext 实现多租户的思路也非常简单,通过一个 TenantId 来分割各个租户的数据,并且在查询的时候使用统一的全局过滤器(类似于软删除)来筛选数据。

关于多租户体系的东西,基本定义与核心逻辑存放在 Volo.ABP.MultiTenancy 内部。针对 ASP.NET Core MVC 的集成则是由 Volo.ABP.AspNetCore.MultiTenancy 项目实现的,针对多租户的解析都在这个项目内部。租户数据的存储和管理都由 Volo.ABP.TenantManagement 模块提供,开发人员也可以直接使用该项目快速实现多租户功能。

Docker 安装 ELK

安装

首先安装 DockerDocker-Compose 相关的组件,我们这里直接使用准备好的 ELK 镜像,执行以下命令从 Dockerhub 上拉取指定版本的镜像,在本例当中我使用的是 7.40 版本。

1
docker pull sebp/elk:740

配置

为其编写 docker-compose.yaml 文件,内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
version: '3.7'
services:
  nginx:
    image: nginx
    container_name: nginx
    ports: 
      - 80:80
      - 443:443
    networks:
      - internal-network
    volumes: 
      - /root/Volumes/Nginx/nginx.conf:/etc/nginx/nginx.conf
      - /root/Volumes/Nginx/Configs:/etc/nginx/conf.d
    restart: always
  elk:
    image: sebp/elk:740
    container_name: elk
    ports:
      - 9200:9200
      - 5044:5044
    expose:
      - 5601
    networks:
      - internal-network
    volumes:
      - /opt/elk-data:/var/lib/elasticsearch
      - /etc/localtime:/etc/localtime
    depends_on: 
      - nginx
    ulimits: 
      nproc: 262144
      nofile:
        soft: 262144
        hard: 262144
      memlock: 9223372036854775807
    restart: always

networks:
  internal-network:
    external: true

上面的 Yaml 文件内容大概意思就是开放 ELK 的 9200 与 5400 端口,然后使用 Nginx 代理 Kibana Dashboard,并且将相关的数据卷挂载了出来。

Abp vNext 源码分析 - 14. EntityFramework Core 的集成

一、简要介绍

在以前的文章里面,我们介绍了 ABP vNext 在 DDD 模块定义了仓储的接口定义和基本实现。本章将会介绍,ABP vNext 是如何将 EntityFramework Core 框架跟仓储进行深度集成。

ABP vNext 在集成 EF Core 的时候,不只是简单地实现了仓储模式,除开仓储以外,还提供了一系列的基础设施,如领域事件的发布,数据过滤器的实现。

使用 HttpClient 进行表单提交时,遇到的问题

问题

在开发微信支付的小微商户进件接口时,需要通过表单来上传身份证图片等数据。在微信支付接口文档也说明了,需要使用 multipart/form-data 的方式发送请求。.NET 提供了 MultipartFormDataContent 类型,帮助我们构建表单请求,故有以下代码:

1
2
3
4
5
var form = new MultipartFormDataContent()
{
    {new StringContent("Value"),"Name},
    {new ByteArrayContent(new byte[]{}/*模拟文件数据*/),"File,"FileName}
}

按照微信支付官方文档提交之后,一直提示参数错误,百思不得其解。

Built with Hugo
主题 StackJimmy 设计