Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh công nghệ thông tin phát triển mạnh mẽ, các phương thức giao tiếp trực tuyến dần thay thế các kênh liên lạc truyền thống nhờ khả năng truyền tải dữ liệu tức thì và tối ưu hóa thời gian. Dịch vụ trò chuyện thời gian thực (chat realtime) không chỉ dừng lại ở việc gửi nhận tin nhắn văn bản mà còn mở rộng sang chia sẻ đa phương tiện (tệp tin, hình ảnh, âm thanh, video) và tổ chức các cuộc họp trực tuyến. Nhu cầu này gia tăng rõ rệt sau đại dịch COVID-19 khi hình thức làm việc và học tập từ xa trở nên phổ biến, đồng thời các doanh nghiệp đòi hỏi các giải pháp tương tác tức thời để hỗ trợ khách hàng.

Trên thế giới, các nền tảng giao tiếp trực tuyến như WhatsApp, Facebook Messenger, Telegram, Viber và WeChat đã ghi nhận lượng người dùng rộng khắp, liên tục được nâng cấp với các tính năng như mã hóa đầu cuối và cuộc gọi video độ nét cao. Tại thị trường Việt Nam, xu hướng chuyển đổi số thúc đẩy tỷ lệ sử dụng các ứng dụng trò chuyện tăng nhanh, tiêu biểu như Zalo với hơn 80 triệu người dùng. Nhận diện tiềm năng này, tác giả Đặng Anh Phú đã thực hiện đồ án tốt nghiệp ngành Công nghệ Thông tin tại Trường Đại học Nha Trang với đề tài: "Xây dựng ứng dụng chat realtime video call" (tên ứng dụng: PNChat), hướng đến việc xây dựng môi trường trao đổi tin nhắn và phòng họp trực tuyến phục vụ người dùng trong nước.

Đồ án xác định các mục tiêu và nhiệm vụ cụ thể bao gồm:

  1. Mục tiêu chung: Xây dựng hoàn chỉnh ứng dụng nhắn tin trực tuyến, hỗ trợ gọi video và chia sẻ tệp, hình ảnh theo thời gian thực.
  2. Mục tiêu cụ thể:
    • Phân tích đề tài và thiết kế cơ sở dữ liệu quan hệ cho hệ thống;
    • Xây dựng hệ thống Web API phía máy chủ (Server);
    • Thiết kế giao diện người dùng phía máy khách (Client);
    • Cài đặt và kiểm thử các chức năng của ứng dụng.

Đối tượng nghiên cứu của đề tài là kiến trúc và công nghệ phát triển ứng dụng web thời gian thực kết hợp cuộc gọi hình ảnh. Phạm vi nghiên cứu tập trung vào quy trình phân tích, thiết kế hướng đối tượng và lập trình ứng dụng web tại Khoa Công nghệ Thông tin, Trường Đại học Nha Trang, hoàn thành vào tháng 06 năm 2023.

Cơ sở lý thuyết và phương pháp nghiên cứu

Về mặt lý thuyết, đề tài dựa trên mô hình kiến trúc Máy khách - Máy chủ (Client-Server), bao gồm ba thành phần cơ bản: Phía máy khách (Client/Front-end), Phía máy chủ (Server/Back-end) và Môi trường mạng (Network). Tác giả đã phân tích các ưu điểm của mô hình như khả năng quản trị tập trung tại một địa điểm, khả năng mở rộng linh hoạt, tính độc lập về vị trí truy cập và kiểm soát an ninh thông qua ủy quyền truy cập. Đồng thời, văn bản chỉ rõ các nhược điểm cần giải quyết gồm nguy cơ nghẽn mạng do quá tải yêu cầu, chi phí đầu tư hạ tầng và rủi ro gián đoạn toàn bộ dịch vụ khi máy chủ gặp sự cố.

Phương pháp nghiên cứu được triển khai xuyên suốt là phương pháp Phân tích và Thiết kế Hướng đối tượng (OOAD - Object-Oriented Analysis and Design) kết hợp với Ngôn ngữ Mô hình hóa Thống nhất (UML - Unified Modeling Language). Hệ thống được trực quan hóa, đặc tả và tài liệu hóa thông qua các loại biểu đồ:

  • Biểu đồ ca sử dụng (Use Case Diagram): Mô tả các tương tác ở mức tổng quan (Level 0 Cloud) và mức chi tiết (Level 1 Kite);
  • Biểu đồ hoạt động (Activity Diagram): Đặc tả luồng xử lý nghiệp vụ của từng ca sử dụng;
  • Biểu đồ trình tự (Sequence Diagram): Mô hình hóa tương tác theo thời gian giữa các đối tượng và giao diện;
  • Biểu đồ lớp (Class Diagram): Biểu diễn cấu trúc tĩnh của các mô hình dữ liệu (Models), dịch vụ xử lý (Services) và các bộ điều khiển tiếp nhận yêu cầu (Controllers).

Quy trình phát triển phần mềm trong đồ án tuân theo 6 giai đoạn kỹ thuật: Khảo sát dự án, Phân tích hệ thống, Thiết kế (CSDL, giao diện, chức năng), Thực hiện (lập trình mã nguồn), Kiểm thử (xây dựng kịch bản kiểm chứng theo đặc tả và sửa lỗi) và Triển khai, bảo trì.

Dữ liệu và công nghệ được tác giả tổng hợp từ các nguồn tài liệu kỹ thuật chuẩn:

  • Nền tảng .NET Core và ngôn ngữ C# 11: Ứng dụng mô hình hướng đối tượng, cơ chế quản lý bộ nhớ tự động, thư viện LINQ (Language Integrated Query) và Base Class Library (BCL) chạy trên Common Language Runtime (CLR);
  • Thư viện ASP.NET Core SignalR: Thiết lập giao thức SignalR Hub cho phép kết nối hai chiều thời gian thực giữa máy chủ và các máy khách đang kết nối đồng thời;
  • Nền tảng Angular và TypeScript: Xây dựng ứng dụng đơn trang (SPA - Single Page Application) dựa trên kiến trúc thành phần (Component-based), áp dụng cơ chế tiêm phụ thuộc (Dependency Injection), các chỉ thị (Directives: Component, Structural, Attribute) và quản lý vòng đời thành phần;
  • Chuẩn JSON Web Token (JWT): Cấu trúc gồm ba phần (Header, Payload, Signature) mã hóa Base64 và ký băm mật mã, hỗ trợ cơ chế xác thực không phụ thuộc trạng thái (stateless authentication) và không phụ thuộc cookie;
  • Dịch vụ Video Calling Daily API (Daily.co): Tích hợp giải pháp video calling API thay thế cho kiến trúc VoIP truyền thống, cung cấp các tính năng hội nghị truyền hình đa điểm, chia sẻ màn hình, ghi âm và khử tiếng ồn ảo;
  • Dịch vụ lưu trữ Azure Storage: Lưu trữ và phân phối tệp tin đa phương tiện của người dùng.

Thiết kế và triển khai hệ thống

Hệ thống được thiết kế theo kiến trúc chia tách độc lập giữa dịch vụ máy chủ cung cấp API và giao diện máy khách. Phía máy chủ xây dựng bằng .NET Core kết hợp SignalR Hub để quản lý kết nối thời gian thực, trong khi giao diện người dùng được tổ chức thành các mô-đun trên nền tảng Angular.

Mô hình dữ liệu quan hệ (RDM) của hệ thống bao gồm 7 thực thể chính:

  1. User: Lưu trữ thông tin định danh và tài khoản người dùng (Code, UserName, Password, FullName, Dob, Phone, Email, Address, Avatar, Gender, LastLogin, CurrentSession).
  2. Contact: Quản lý mối quan hệ liên lạc giữa các tài khoản người dùng.
  3. Group: Thông tin nhóm trò chuyện (Code, Type, Avatar, Name, Created, CreatedBy, LastActive).
  4. GroupUser: Thực thể liên kết thể hiện thành viên thuộc các nhóm trò chuyện (Id, GroupCode, UserCode).
  5. Message: Lưu trữ nội dung tin nhắn (Id, Type, GroupCode, Content, Path, Created, CreatedBy).
  6. GroupCall: Quản lý thông tin các phòng gọi video nhóm.
  7. Call: Nhật ký và trạng thái các phiên gọi video.

Chi tiết ràng buộc và kiểu dữ liệu của một số thực thể tiêu biểu được tổng hợp theo các bảng đặc tả kỹ thuật dưới đây:

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Diễn giải
Bảng Call
1 Id int Khóa chính Mã cuộc gọi
2 GroupCallCode varchar(32) Khóa ngoại (GroupCall) Mã nhóm cuộc gọi
3 UserCode nvarchar(32) Khóa ngoại (User) Mã người gọi
4 Url nvarchar(500) Not null Đường dẫn cuộc gọi Daily API
5 Status varchar(32) Not null Trạng thái cuộc gọi
6 Created datetime Not null Ngày tạo cuộc gọi
Bảng Contact
1 Id bigint Khóa chính Mã liên hệ
2 UserCode varchar(32) Khóa ngoại (User) Mã người dùng sở hữu danh bạ
3 ContactCode varchar(32) Khóa ngoại (User) Mã người dùng được thêm vào liên hệ
4 Created datetime Not null Ngày tạo liên hệ

Nội dung chính theo từng chương

Phần mở đầu

Phần mở đầu nêu rõ tính cấp thiết của việc xây dựng công cụ giao tiếp trực tuyến phục vụ nhu cầu làm việc, học tập từ xa và giao thương số. Tác giả xác định mục tiêu xây dựng phần mềm PNChat, liệt kê các nhiệm vụ phát triển từ phân tích CSDL, xây dựng Web API đến thiết kế giao diện và cài đặt các chức năng trao đổi tin nhắn, gọi video trực tiếp. Đồng thời, cấu trúc báo cáo được phân chia rõ thành các chương nội dung từ cơ sở lý thuyết, đặc tả, phân tích thiết kế đến kết quả cài đặt và đánh giá.

Chương 1: Tổng quan về vấn đề nghiên cứu

Chương 1 hệ thống hóa tổng quan tình hình nghiên cứu các ứng dụng trò chuyện trên phạm vi quốc tế và tại Việt Nam. Nội dung đi sâu phân tích mô hình Client-Server với các ưu, nhược điểm cụ thể về băng thông và rủi ro gián đoạn hệ thống. Tác giả trình bày chi tiết cơ sở lý thuyết của các công nghệ then chốt: nền tảng .NET Core, hệ thống phân loại kiểu dữ liệu trong C# (kiểu tham trị và kiểu tham chiếu), kiến trúc Hub của SignalR trong việc đẩy dữ liệu về máy khách. Bên cạnh đó, chương này phân tích kiến trúc Angular (Component, Template, Directives, Dependency Injection), định dạng mã hóa và xác thực của JWT, cũng như so sánh giữa công nghệ VoIP truyền thống và Video Calling API (Daily.co) về tính đa nền tảng, tính năng mở rộng và khả năng giảm tải chi phí nghiên cứu.

Chương 2: Khảo sát hiện trạng và đặc tả bài toán

Nội dung chương 2 khảo sát các yêu cầu thực tiễn từ các ứng dụng trò chuyện thành công, bao gồm yêu cầu độ trễ truyền dữ liệu thấp và tính toàn vẹn dữ liệu gửi nhận. Tác giả đặc tả chi tiết 9 nhóm chức năng chính của hệ thống PNChat:

  • Đăng nhập tài khoản (kèm cơ chế Authentication và Authorization);
  • Đăng ký tài khoản người dùng mới;
  • Quản lý thông tin cá nhân (xem và chỉnh sửa tên, ngày sinh, email, giới tính, địa chỉ, số điện thoại, ảnh đại diện);
  • Thêm liên hệ vào danh bạ thông qua công cụ tìm kiếm;
  • Quản lý danh bạ người dùng;
  • Tạo nhóm trò chuyện cho phép tương tác 1:1 hoặc 1:n;
  • Quản lý danh sách cuộc gọi (theo dõi các trạng thái gọi nhỡ, gọi đến, gọi đi và khởi tạo cuộc gọi);
  • Trò chuyện thời gian thực (gửi nhận văn bản, emoji, tệp tin, hình ảnh và hỗ trợ tải xuống);
  • Cuộc gọi video (kết nối trực tiếp và kết thúc phiên gọi).

Chương này cũng xác định các yêu cầu phi chức năng về hiệu suất, độ tin cậy, khả năng mở rộng, tính tương thích đa nền tảng và tiêu chuẩn giao diện tối giản, thân thiện.

Chương 3: Phân tích thiết kế hệ thống

Chương 3 tập trung mô hình hóa hệ thống bằng chuẩn UML dựa trên phương pháp OOAD. Tác giả xây dựng hoàn chỉnh hệ thống sơ đồ ca sử dụng: Use Case mức 0 (Level 0 Cloud) cho ứng dụng PNChat và các Use Case mức 1 (Level 1 Kite) chi tiết cho các phân hệ: Đăng nhập/Đăng ký, Thông tin người dùng, Tạo nhóm, Quản lý liên hệ, Quản lý tin nhắn và Cuộc gọi video.

Tương ứng với mỗi chức năng, đồ án thiết lập các sơ đồ hoạt động (Activity Diagram) và sơ đồ trình tự (Sequence Diagram) thể hiện luồng truyền nhận thông điệp giữa người dùng, giao diện Angular, bộ điều khiển Controller, dịch vụ Service và cơ sở dữ liệu. Cấu trúc tĩnh của mã nguồn được mô hình hóa qua hệ thống Class Diagram phân tách thành các tầng Models, Services và Controllers. Về mặt dữ liệu, chương này trình bày mô hình dữ liệu mức logic, mô hình dữ liệu quan hệ (RDM) và bảng từ điển dữ liệu chi tiết cho 7 thực thể.

Chương 4: Cài đặt chương trình

Chương 4 ghi nhận kết quả lập trình giao diện và triển khai thực tế trên môi trường máy khách. Các màn hình chức năng được hoàn thiện và kiểm thử bao gồm:

  • Màn hình Đăng ký tài khoản;
  • Màn hình Đăng nhập hệ thống;
  • Giao diện Trang chủ;
  • Giao diện Thông tin người dùng (cho phép cập nhật thông tin cá nhân);
  • Giao diện Thêm liên hệ và Quản lý danh bạ;
  • Giao diện Tạo nhóm trò chuyện;
  • Giao diện Chi tiết cuộc trò chuyện, hiển thị đầy đủ các khu vực gửi tin nhắn văn bản, đính kèm tệp, tải hình ảnh và danh sách thành viên trong nhóm;
  • Giao diện Cuộc gọi, màn hình thông báo cuộc gọi đến và phòng trò chuyện video tích hợp Daily API;
  • Màn hình xử lý lỗi không tìm thấy trang (Giao diện 404).

Chương 5: Kết luận và hướng phát triển

Chương cuối cùng tổng kết các kết quả đạt được về mặt chức năng và kỹ thuật của đồ án, đồng thời thẳng thắn chỉ ra các điểm còn hạn chế trong quá trình triển khai thực tế. Dựa trên hiện trạng ứng dụng, tác giả đề xuất các định hướng nâng cấp hệ thống trong tương lai.

Kết quả và đóng góp

Đồ án đã đạt được các kết quả kỹ thuật cụ thể theo đúng các mục tiêu đã đề ra:

  • Thiết kế hoàn chỉnh kiến trúc cơ sở dữ liệu quan hệ gồm 7 bảng thực thể (Call, Contact, Group, GroupCall, GroupUser, Message, User), đáp ứng đầy đủ các ràng buộc khóa chính, khóa ngoại và liên kết dữ liệu nghiệp vụ trò chuyện;
  • Xây dựng hệ thống Web API hoàn chỉnh bằng .NET Core, tích hợp thư viện SignalR cho phép truyền tải thông điệp hai chiều tức thời và tích hợp dịch vụ đám mây Azure Storage để lưu trữ các tệp tin đính kèm;
  • Triển khai thành công cơ chế xác thực và phân quyền người dùng không dùng cookie thông qua JSON Web Token (JWT), giảm thiểu sự phụ thuộc vào chính sách Cross-Origin Resource Sharing (CORS);
  • Phát triển giao diện người dùng đơn trang (SPA) bằng Angular và TypeScript, kết nối đồng bộ với API máy chủ;
  • Tích hợp thành công giải pháp Video Calling Daily API, cho phép khởi tạo phòng hội nghị truyền hình, hiển thị thông báo cuộc gọi đến, tham gia phòng gọi video trực tiếp trên trình duyệt web.

Đóng góp của đồ án thể hiện ở việc ứng dụng bài bản quy trình phân tích thiết kế hướng đối tượng (OOAD) và ngôn ngữ UML để giải quyết trọn vẹn bài toán xây dựng phần mềm giao tiếp trực tuyến, kết hợp hiệu quả giữa thư viện thời gian thực SignalR và API gọi video chuyên dụng vào một sản phẩm ứng dụng dành cho người dùng trong nước.

Hạn chế và hướng nghiên cứu tiếp

Theo công bố của tác giả trong phần tóm tắt và đánh giá đồ án, sản phẩm vẫn tồn tại một số hạn chế kỹ thuật:

  • Chức năng thông báo các hoạt động của người dùng trên ứng dụng chưa được hoàn thiện;
  • Việc sử dụng API bên thứ ba (Daily API) tiềm ẩn các nguy cơ về bảo mật dữ liệu và quyền riêng tư, do một số API chưa hỗ trợ triển khai mã hóa đầu cuối toàn diện (End-to-End Encryption - E2E).

Các hướng phát triển tiếp theo được đề xuất bao gồm:

  • Hoàn thiện hệ thống thông báo trạng thái hoạt động tức thời của người dùng;
  • Nghiên cứu và bổ sung các cơ chế bảo mật nâng cao, hướng tới việc tích hợp mã hóa đầu cuối cho luồng dữ liệu cuộc gọi và tin nhắn;
  • Tiếp tục tối ưu hóa giao diện người dùng (UI/UX) và kiểm thử hiệu năng chịu tải khi số lượng kết nối đồng thời qua SignalR tăng cao.

Giá trị tham khảo

Đồ án là tài liệu tham khảo chuyên khảo hữu ích cho sinh viên các ngành Công nghệ Thông tin, Kỹ thuật Phần mềm và Khoa học Máy tính đang thực hiện khóa luận tốt nghiệp hoặc các dự án phát triển phần mềm giao tiếp mạng.

Các phần nội dung có giá trị tham khảo ứng dụng cao bao gồm:

  • Toàn bộ tài liệu phân tích hệ thống bằng UML (hệ thống Use Case từ mức 0 đến mức 1, Activity Diagram, Sequence Diagram và Class Diagram), cung cấp cấu trúc mô hình hóa chuẩn xác cho các bài toán tương tự;
  • Thiết kế mô hình dữ liệu quan hệ cho ứng dụng chat đa phương tiện;
  • Kỹ thuật kết hợp giữa backend ASP.NET Core SignalR và frontend Angular trong việc quản lý kết nối thời gian thực và xác thực phi trạng thái bằng JWT;
  • Hướng dẫn cấu hình và quy trình tích hợp Daily API để thiết lập tính năng gọi video đa điểm trên nền web.

Câu hỏi thường gặp

1. Ứng dụng PNChat sử dụng công nghệ nào để thực hiện việc gửi và nhận tin nhắn theo thời gian thực?
Hệ thống sử dụng thư viện ASP.NET Core SignalR ở phía máy chủ kết hợp với nền tảng Angular ở phía máy khách. SignalR sử dụng giao thức SignalR Hub để quản lý kết nối tự động và đẩy dữ liệu tức thì đến các máy khách đang kết nối đồng thời mà không cần cơ chế thăm dò (polling).

2. Giải pháp kỹ thuật nào được tác giả lựa chọn để phát triển tính năng cuộc gọi video?
Tác giả tích hợp dịch vụ Video Calling Daily API (Daily.co) thay vì tự xây dựng giao thức VoIP từ đầu. Giải pháp này cho phép nhúng các đoạn mã gọi video trực tiếp vào ứng dụng web, hỗ trợ cuộc gọi nhóm, chia sẻ màn hình, ghi âm và khử tiếng ồn ảo.

3. Cơ chế xác thực người dùng trong hệ thống được vận hành như thế nào?
Hệ thống sử dụng JSON Web Token (JWT). Khi người dùng đăng nhập thành công, máy chủ tạo ra một mã JWT gồm 3 phần (Header, Payload, Signature) được mã hóa Base64 và ký bằng khóa bí mật. Mã này được máy khách gửi kèm trong các yêu cầu tiếp theo để phân quyền truy cập tài nguyên mà không dùng cookie và không phụ thuộc vào CORS.

4. Dữ liệu tệp tin và hình ảnh chia sẻ trong cuộc trò chuyện được lưu trữ ở đâu?
Các tệp tin, hình ảnh chia sẻ qua tin nhắn được tải lên và lưu trữ thông qua dịch vụ đám mây Azure Storage, sau đó đường dẫn tệp (Path) được lưu trong bảng thực thể Message của cơ sở dữ liệu.

5. Đồ án tự nhận định chức năng nào chưa được hoàn thiện trong phiên bản nghiệm thu?
Theo tóm tắt đồ án, chức năng thông báo các hoạt động của người dùng trên ứng dụng hiện tại vẫn chưa được hoàn thiện và cần tiếp tục phát triển trong các giai đoạn tiếp theo.

Kết luận

Đồ án tốt nghiệp "Xây dựng ứng dụng chat realtime video call" của sinh viên Đặng Anh Phú đã giải quyết thành công bài toán xây dựng nền tảng giao tiếp trực tuyến tích hợp nhắn tin tức thời và gọi video đa phương tiện. Bằng việc áp dụng phương pháp phân tích thiết kế hướng đối tượng OOAD cùng ngăn xếp công nghệ .NET Core, SignalR, Angular và Daily API, tác giả đã chuyển hóa các yêu cầu khảo sát thành một hệ thống phần mềm có cấu trúc rõ ràng và tính khả thi thực tiễn. Mặc dù còn hạn chế ở chức năng thông báo hoạt động và cơ chế mã hóa đầu cuối, công trình cung cấp tài liệu kỹ thuật hoàn chỉnh và có giá trị tham khảo thiết thực cho các nghiên cứu phát triển ứng dụng thời gian thực.