.NET 6をベースにしたオンライン音声・ビデオチャットプロジェクト。クライアントはWPF、バックエンドは.NET Core Web APIを使用して開発されています。
一. プロジェクト紹介
.NET 6 をベースにしたオンライン音声・ビデオチャットプロジェクト。クライアントは WPF、バックエンドは .NET Core Web API を使用して開発されています。
リポジトリアドレス: https://github.com/qian-o/Dimension
リポジトリのスクリーンショット:

プロジェクトのコード構造:

二. 使用しているサードパーティ依存関係の紹介
共通の依存関係
- log4net ログ記録。
- SignalR サーバーとクライアント間の通信手段。このプロジェクトでは、友達申請、メッセージ通知、お知らせ、チャット、音声・ビデオ通話などの通知に使用されています。
- EntityFrameworkCore データベース操作のORMツール。サーバー側はSqlServer、クライアント側はSqliteを使用。
- Newtonsoft.Json JSONのシリアル化と逆シリアル化。
サーバー側
- TencentCloudSDK テンセントクラウドサービスAPIの操作。このプロジェクトでは通話ルームの管理に使用。
- aliyun-net-sdk-core アリババクラウドサービスAPIの操作。このプロジェクトではSMSサービスに使用。
- CHSPinYinConv 中国語ピンインの取得。
- Portable.BouncyCastle TRTC暗号化に使用。
- SixLabors.ImageSharp 画像の操作。C#で画像を操作するにはMicrosoftのGDI描画が必要ですが、Linux上ではmonoのlibgdiplusライブラリが必要で、処理効果が理想的ではありません。
WPF側
- TXLiteAV テンセントクラウドのTRTCサービスの操作。ローカルデバイスの音声・ビデオストリーミング、ルーム内の他のユーザーの音声・ビデオデータの取得。
- XamlAnimatedGif GIFの再生。デバイスの効率問題のため、作者のソースコードを修正して再パッケージして使用。
- 元のライブラリ: https://github.com/XamlAnimatedGif/XamlAnimatedGif
- 問題: https://github.com/XamlAnimatedGif/XamlAnimatedGif/issues/160
三. プロジェクト設定
このプロジェクトを正常に実行するには、関連する設定を理解してください。
3.1 バックエンド設定:
バックエンドは .NET Core Web API を使用して開発されています。設定は以下の通りです:
- サードパーティサービス設定
DimensionService.Common 名前空間の ClassHelper クラスを修正します。

赤枠内の有料サービスの内容を記入してください。本プログラムでは アリババクラウドのSMSサービス と テンセントクラウドのTRTCサービス を使用しています。記入内容は公式説明を参照してください。
- データベース
このサービスは SQL Server 2019 データベースを使用し、EF CORE を主要な ORM フレームワークとして使用しています。初回使用時にはデータベースの移行が必要です。
パッケージマネージャコンソールを開き、以下を入力します。
Update-Database InitialCreate

このプロジェクトではオンラインテストサービスアドレスを提供しています: http://47.96.133.119:5000 (サイト管理者注: 現在このアドレスにはアクセスできません)
3.2 クライアント設定
クライアントは WPF で開発されています。以下の図の通りです:

赤枠の内容はサーバー側と一致させる必要があります。
実装済みの機能
- ログイン|登録
- 友達追加
- 音声・ビデオオンライン通話
- チャット(画像、テキスト、リッチテキスト)
- スクリーンショット(マルチディスプレイ、異なるDPI対応)
クライアントの一部スクリーンショット:
サイト管理者には条件がなく、ログインアニメーションを録画しました(笑):

以下は作者のreadmeと博客園の画像です:








四. 機能デモ
作者は怠け者なので、後で書きます!
とりあえずテストアカウントとプログラムアドレスを提供します。
ただし、NET6 デスクトップランタイムのインストールが必要です。ダウンロードアドレス: .NET 6 デスクトップランタイム
テストユーザー
1571221{1 ~ 9}177、
パスワードは統一で 12345678 です。
すべてのユーザーのログイン情報はプログラムパッケージ内に入れてあります。また、全員が私を友達として追加済みです。😄

五. プログラムパッケージ
リンク: https://pan.baidu.com/s/1aTh_710GpKIIHOHpvVCpBw?pwd=cp4o
抽出コード: cp4o
--百度網盤スーパー会員 V4 の共有
六. デモ動画
リンク: https://pan.baidu.com/s/1n-sQZFgO9GEhS80jHLVouA?pwd=85x3
抽出コード: 85x3
--百度網盤スーパー会員 V4 の共有
七. プロジェクトリポジトリアドレス
GitHub アドレス: https://github.com/qian-o/Dimension