一个.NET 7 + DDD + CQRS +React+Vite的实战项目

一个,net,ddd,cqrs,react,vite,实战,项目 · 浏览次数 : 276

小编点评

**项目简介** 基于 SignalR 实现的聊天应用程序,支持横向扩展,可支撑上万用户同时在线聊天快速体验。 **关键技术** * SignalR * Docker Compose * PostgreSQL * Redis * Nginx * React * Vite * Semi * Avalonia * Web UI * OpenCV (用于图片处理) **技术架构** * **前端:** React,Vite,Semi,Avalonia * **后端:** ASP.NET 7,PostgreSQL,Redis * **数据库:** PostgreSQL * **中间件:** Nginx * **其他:** Docker Compose **主要功能** * 跨平台聊天界面 * 热点数据缓存 * 横向扩展 * 语言切换 * 图像和视频发送 * 群聊管理 * AT用户管理 **注意** * 应用程序仅支持 PC 端,请勿使用手机访问。 * 存在样式不适应的问题,您可以自己部署应用程序。 **后续计划** * 增加 ChatGPT 助手 * 添加好友 * 增加视频发送 * 增加语言聊天

正文

项目简介

基于SignalR实现聊天通信,支持横向扩展,可支撑上万用户同时在线聊天

快速体验

http://server.tokengo.top:8888/ 可在这里快速体验使用,请注意目前只适配了PC端,请勿使用手机访问,可能出现样式不适应的情况,
当然如果你想要自己部署也可以,目前提供了docker compose镜像一键部署
下面是docker-compose代码

services:
  postgres:
    image: postgres:15.3-alpine3.18
    restart: always
    container_name: postgres
    ports:
      - 5432:5432
    networks:
      - chat
    environment:
      POSTGRES_USER: token
      POSTGRES_PASSWORD: dd666666
      POSTGRES_DB: Chat
    volumes:
      - ./postgres_data:/var/lib/postgresql/data

  redis:
    image: redis:alpine3.16
    restart: always
    container_name: redis
    ports:
      - 6379:6379
    networks:
      - chat
    command: redis-server --appendonly yes
    volumes:
      - ./redisdata:/data

  nginx:
    image: nginx:stable-alpine
    restart: always
    container_name: nginx
    networks:
      - chat
    ports:
      - 1080:80
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf

  chat-web:
    build:
      context: ./web
      dockerfile: ./Dockerfile
    container_name: chat-web
    image: registry.cn-shenzhen.aliyuncs.com/gotrays/chat-web
    restart: always
    depends_on:
     - redis
     - postgres
    networks:
      - chat

  chat-api:
    build:
      context: ./
      dockerfile: ./src/Chat.Service/Dockerfile
    container_name: chat-api
    image: registry.cn-shenzhen.aliyuncs.com/gotrays/chat-api
    restart: always
    depends_on:
     - redis
     - postgres
    networks:
      - chat

networks:
  chat:
    driver: bridge

注,容器并不会一次性启动成功,可能由首次启动的时候postgres未初始化成功导致Api服务启动失败,可能需要重启服务

后端架构

后端技术栈采用

  • .NET 7
  • PostgreSQL (业务数据库)
  • Redis(用于存放热点数据,和支持SignalR横向扩展)
  • MasaFramework(后端应用框架)+DDD(领域驱动设计)+CQRS(读写分离)

前端架构

  • React(Web版UI框架)
  • Vite(打包运行)
  • Semi(UI框架)
  • Avalonia(客户端版UI框架)

Web界面预览,

并且输入框支持直接cv图片,当我们点击发送的时候会将图片和文字拆分发送。

目前支持Gitee直接登录或输入账号密码登录,(Github由于服务器无法访问到Api暂时无法使用)

后端项目结构

项目开源地址

gitee:https://gitee.com/hejiale010426/chat

github https://github.com/239573049/chat

技术交流群 :737776595

Chat后续计划

与一个.NET 7 + DDD + CQRS +React+Vite的实战项目相似的内容:

一个.NET 7 + DDD + CQRS +React+Vite的实战项目

## 项目简介 基于SignalR实现聊天通信,支持横向扩展,可支撑上万用户同时在线聊天 ## 快速体验 http://server.tokengo.top:8888/ 可在这里快速体验使用,请注意目前只适配了PC端,请勿使用手机访问,可能出现样式不适应的情况, 当然如果你想要自己部署也可以,目前提

统一的开发平台.NET 7正式发布

在 2020 年规划的.NET 5功能终于在.NET 7 完成了,为微软和社区一起为多年来将不同的开发产品统一起来的努力加冕,未来只有一个.NET, 回顾.NET 20年,从.NET Framework –> .NET Core –>.NET 一个产品命名可以反映出.NET的发展脉络,从封闭走向开放

基于ZXing.NET实现的二维码生成和识别客户端

一、前言 ZXing.Net的一个可移植软件包,是一个开源的、多格式的1D/2D条形码图像处理库,最初是用Java实现的。已经过大量优化和改进,它已经被手动移植。它与.Net 2.0、.Net 3.5、.Net 4.x、.Net 5.x、.Net 6.x、.Net 7.x、Windows RT类库和

.NET开源免费功能最全的商城项目

前言 今天给大家推荐一个功能丰富、免费、灵活且可定制的开源电子商务解决方案:nopCommerce。大家假如有商城需求可以直接使用该项目进行二次开发,省时省力。 项目介绍 nopCommerce在.NET 7上运行,并使用MS SQL 2012(或更高版本)后端数据库。 nopCommerce是跨平

Util应用框架 7.x 来了

什么是Util应用框架? Util是一个.Net平台下的应用框架,旨在提升中小团队的开发能力,由工具类、分层架构基类、Ui组件,配套代码生成模板,权限等组成。 Util应用框架 7.x介绍 Util应用框架的最新版本是7.x,保持与.Net最新稳定版本同步更新。 与Util 1.x相比,最新版本代码

使用Docker buildx 为 .NET 构建多平台镜像

.NET 团队有一篇博客 改进多平台容器支持, 详细介绍了.NET 7 以上的平台可以轻松的使用Docker buildx 工具构建多平台的镜像。 buildx 是 Docker 官方提供的一个构建工具,它可以帮助用户快速、高效地构建 Docker 镜像,并支持多种平台的构建。使用 buildx,用

【炫丽】从0开始做一个WPF+Blazor对话小程序

大家好,我是沙漠尽头的狼。 .NET是免费,跨平台,开源,用于构建所有应用的开发人员平台。 本文演示如何在WPF中使用Blazor开发漂亮的UI,为客户端开发注入新活力。 注 要使WPF支持Blazor,.NET版本必须是 6.0 或更高版本,本文所有示例使用的.NET 7.0,版本要求见链接,截图

使用.NET7和C#11打造最快的序列化程序-以MemoryPack为例

## 译者注 本文是一篇不可多得的好文,MemoryPack 的作者 neuecc 大佬通过本文解释了他是如何将序列化程序性能提升到极致的;其中从很多方面(可变长度、字符串、集合等)解释了一些性能优化的技巧,值得每一个开发人员学习,特别是框架的开发人员的学习,一定能让大家获益匪浅。 ## 简介 我发

.NET周刊【7月第3期 2023-07-16】

## 国内文章 ### 揭秘 .NET 中的 TimerQueue(上) https://www.cnblogs.com/eventhorizon/p/17557821.html TimerQueue 是.NET中实现定时任务的核心组件,它是一个定时任务的管理器,负责存储和调度定时任务。它被用于实现

.NET周刊【7月第4期 2023-07-23】

## 国内文章 ### 你知道.NET的字符串在内存中是如何存储的吗? https://www.cnblogs.com/artech/p/string-memory-layout.html 毫无疑问,字符串是我们使用频率最高的类型。但是如果我问大家一个问题:“一个字符串对象在内存中如何表示的?”,我