一個.NET 7 + DDD + CQRS +React+Vite的實戰專案

2023-09-03 06:00:13

專案簡介

基於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後續計劃