Cấu trúc MVVM Light

Một phần của tài liệu BÁO cáo THỰC tập tốt NGHIỆP đề tài VoIP call (Trang 29)

Hình 21. Cấu trúc chi tiết của MVVM Light

Đề tài: VoIP Call Trang 18

Hình 22. Hàm DataItem chứa các dữ liệu sử dụng toàn bố cục phần mềm

Hình 23. Interface của phần mềm

Hình 24. Hàm gọi giao diện thiết kế mặc định

Hình 25. Hàm gọi giao diện người dùng

Đề tài: VoIP Call Trang 19

Hình 26. Hàm khởi tạo và gọi Data và ViewModel

Đề tài: VoIP Call Trang 20

Hình 27. Hàm ViewModel

Đề tài: VoIP Call Trang 21

2.2.5. TCP/IP

Hình 28. Mô hình TCP/IP và các tầng dữ liệu

- TCP/IP là bộ giao thức cho phép kết nối các hệ thống mạng không đồng nhất với nhau. Ngày nay, TCP/IP được sử dụng rộng rãi trong mạng cục bộ cũng như mạng toàn cầu. TCP/IP được xem như giản lược của mô hình tham chiếu OSI với 4 tầng như sau:

+ Tầng Liên kết (Datalink Layer):

Tầng liên kết (còn được gọi là tâng liên kết dữ liệu hay tầng giao tiếp mạng) là tầng thấp nhất trong mô hình TCP/IP, bao gồm các thiết bị giao tiếp mạng và các chương trình cung cấp các thông tin cần thiết để có thể hoạt

động, truy nhập đường truyền vật lý thông qua các thiết bị giao tiếp mạng đó.

+ Tầng Mạng (Internet Layer):

Tầng Internet (hay còn gọi là tầng mạng) xử lý quá trình truyền gói tin trên mạng, các giao thức của tầng này bao gồm: IP (Internet Protocol), ICMP (Internet Control Message Protocol), IGMP (Internet Group Message Protocol).

+ Tầng Giao vận (Transport Layer):

Đề tài: VoIP Call Trang 22

Tầng giao vận phụ trách luồng dữ liệu giữa 2 trạm thực hiện các ứng dụng của tầng trên, tầng này có 2 giao thức chính là TCP và UDP.

TCP cung cấp luồng dữ liệu tin cậy giữa 2 trạm, nó sử dụng các cơ chế như chia nhỏ các gói tin ở tầng trên thành các gói tin có kích thước thích hợp cho tầng mạng bên dưới, báo nhận gói tin, đặt hạn chế thời gian timeout để đảm bảo bên nhận biết được các gói tin đã gửi đi. Do tầng này đã đảm bảo tính tin cậy nên tầng trên sẽ không cần quan tâm đến nữa. UDP cung cấp một dịch vụ rất đơn giản hơn cho tầng ứng dụng. Nó chỉ gửi dữ liệu từ trạm này tới trạm kia mà không đảm bảo các gói tin đến được đích. Các cơ chế đảm bảo độ tin cậy được thực hiện bởi trên trên Tầng ứng dụng.

+ Tầng Ứng dụng (Application Layer):

Là tầng trên của mô hình TCP/IP bao gồm các tiến trình và các ứng dụng cung cấp cho người sử dụng để truy cập mạng. Có rất nhiều ứng dụng được cung cấp trong tầng này, mà phổ biến là Telnet: sử dụng trong việc truy cập mạng từ xa, FTP, Email,...

Đề tài: VoIP Call Trang 23

2.3. Phần thực hành

2.3.1. Thiết lập Server/Client

2.3.1.1. Thiết lập Server

 Class Server.cs

Tạo hàm Run trong class Server được dùng để chờ đợi lắng nghe các Client kết nối vào Server và được chạy theo Multi thread lắng nghe liên tục việc Client kết nối vào Server.

Hình 29. Hàm Run trong Class Server

- Tạo hàm Start thông qua thư viện Sockets dùng để bắt đầu tạo một Server và thêm vào hàm Run dùng để tạo và bắt đầu luồng khi mà có Client kết nối vào.

Đề tài: VoIP Call Trang 24

Hình 30. Hàm Start Server

- Ngoài việc xây dựng hàm Start ngoài ra còn xây dựng hàm Stop hàm được dùng để thực hiện việc dừng server được tạo.

Hình 31. Hàm Stop trong Server.Class

Đề tài: VoIP Call Trang 25

- Tạo hàm Send và hàm Receive được sử dụng để gửi và nhận các thông tin từ Client.

+ Hàm Send:

Hình 32. Hàm Send trong Class Server

Đề tài: VoIP Call Trang 26

+ Hàm Receive:

Hình 33. Hàm Receive trong Class Server

 Thiết lập Server Class MainViewModel.cs

- Trong View-Model xây dựng làm ServerStart với kiểu RelayComand dùng để binding tới nút Button trên View thực hiện việc bắt đầu một Server hoặc Dừng Server lại. Ngoài ra dùng để chạy các hàm khác liên quan đến việc bắt đầu một Server hoặc dừng nó.

Đề tài: VoIP Call Trang 27

Hình 34. Hàm RelayCommand của Button Server

- Hàm StartServer được xây dựng trong View-Model được thực hiện việc bắt đầu một Server khi người dùng nhắn vào nút button và Server ấy được kiểm tra là chưa được tạo sẽ được thực hiện.

Hình 35. Hàm StartServer của Button Server

- Hàm StopServer xây dựng trong View-Model thực hiện chức năng dừng Server lại khi người dừng nhấn vào Button và kiểm được Server đang chạy thì Server sẽ được dừng lại.

Đề tài: VoIP Call Trang 28

Hình 36. Hàm StopServer cho Button Server

2.3.1.2. Thiết Lập Client

 Class Client.cs

- Cũng như thiết lập Server, Client có các hàm như là Connect được dùng để thực hiện việc thiết lập kết nối tới Server.

Hình 37. Hàm Connect trong Class Client

- Hàm Disconnect được dùng dừng việc kết nối giữ Client và Server.

Đề tài: VoIP Call Trang 29

Hình 38. Hàm Disconnect trong Class Client

- Tiếp đó là hàm Send được dùng để gửi các tin dưới dạng Byte cho Server.

Hình 39. Hàm Send trong Class Client

Đề tài: VoIP Call Trang 30

- Và hàm nhận tin nhắn và động tin nhắn và đọc tin nhắn được nhận tử Server gửi trả về Client.

Hình 40. Hàm OnDataReceive trong Class Client

 Thiết lập Client trong Class MainViewModel.cs

Đề tài: VoIP Call Trang 31

- Tạo hàm StartClient trong View-Model với kiểu RelayCommand được dùng cho Button trên View thực hiện việc kết nối Client với Server cũng như là ngắt kết nối.

Hình 41. Hàm RelayCommand trong MainViewModel

- Trong đó hàm ConnectClient được xây dựng khi Button được nhấn và được kiểm tra Client chưa được kết nối thì sẽ thực việc kết nối.

Hình 42. Hàm ConnnectClient trong MainViewModel

Đề tài: VoIP Call Trang 32

- Hàm DisconnectClient được dùng khi Button được nhấn và được kiểm tra Client với Server đang được kết nối sẽ thực hiện việc ngắn.

Hình 43. Hàm DisconnectClient trong MainViewModel

2.3.2. Truyền nhận Audio thông qua Socket

- Khi bắt đầu việc truyền nhận Audio các việc cần làm cho cả chương trình thiết lập các việc cần thiết:

+ Xây dựng hàm đóng gói âm thanh dưới dạng Byte để có thể Truyền nhận âm thanh giữa Client Và Server.

Hình 44. Hàm đóng gói âm thanh

Đề tài: VoIP Call Trang 33

+ Hàm SetUpComboxes được xây dựng trong View-Model được dùng để thực hiện việc tìm kiếm thiết bị âm thanh cho Server và Client

Hình 45. Hiển thị các thiết bị đầu ra/đầu vào

+ Hàm SetUpJitterBufferClientRecording được sử dụng cho việc thiết lập nhận bộ đệm cho việc ghi âm của Client.

Hình 46. Bộ đệm âm thanh của Client

Đề tài: VoIP Call Trang 34

+ Hàm SetUpJitterBufferClientPlaying được dùng cho việc thiết lập bộ đệm cho việc bắt đầu phát đoạn âm thanh được truyền đi.

Hình 47. Thiết lập bộ đệm phát âm thanh

+ Hàm SetUpJitterBufferServerRecording cũng có tác dụng làm nhận bộ đệm cho việc ghi âm nhưng bộ đệm này được sử dụng cho Server

Hình 48. Thiết lập bộ đệm ghi âm thanh

- Đối với Server trong View-Model

+ Tạo hàm StartRecordingFromSounddevice_Server() thực hiện việc ghi âm từ Server. Hàm được đặt trong RelayCommand được khởi tạo cùng lúc với việc bắt đầu khởi tạo Server

Đề tài: VoIP Call Trang 35

Hình 49. Thưc hiện ghi âm thanh từ thiết bị đầu vào

+ Hàm StopRecordingFromSounddevice_Server() sẽ thực hiện việc dừng việc ghi âm thanh của Server lại khi mà Server dừng được đóng lại.

Hình 50. Thưc hiện dừng ghi âm thanh

Đề tài: VoIP Call Trang 36

+ Hàm StartTimerMixed được sử dụng như bộ đếm thời gian gửi các đoạn ghi âm đi tới các Client.

Hình 51. Truyền âm thanh đã được mã hoá đến các Client

+ Hàm StopTimerMixed được dùng để ngừng việc đếm thời gian thực hiện khi mà Server được dừng.

Hình 52. Dừng truyền âm thanh đến các Client

+ Hàm SendConfigurationToClient được dùng để thực hiện việc có cho phép Client kết nối vào Server hay không để bắt đầu việc Kết nối cũng như truyền nhận âm thanh của Client kết nối vào Server.

Hình 53. Hàm SendConfiguarationToClient

- Đối với Client trong View-Model

+ Hàm nhận tin nhắn chấp nhận hay từ chối việc được kết nối tới Server hay không để bắt đầu việc Truyền nhận âm thanh của Client. If từ chối Client sẽ tự ngắt kết nối với Server.

Đề tài: VoIP Call Trang 37

Hình 54. Hàm OnClientConfigReceived

+ Hàm StartPlayingToSounddevice_Client có chức năng bắt đầu việc phát âm thanh được gửi từ Server đến cho Client thông qua Thiết bị âm thanh. Và chức được thực hiện khi Server chấp nhận việc kết nối của Client và Client nhận được gói dữ liệu âm thanh.

Đề tài: VoIP Call Trang 38

Hình 55. Thưc hiện phát âm thanh qua thiết bị đầu ra

+ Hàm StopPlayingToSounddevice_Client có chức năng dừng việc phát âm thanh nhận được ghi Client ngắn kết nối với Server.

Hình 56. Dừng phát âm thanh qua thiết bị đầu ra đến Server

+ Hàm StartRecordingFromSounddevice_Client cũng tương tự như Server hàm có chức năng thực hiện việc bắt đầu ghi âm từ thiết bị âm thanh của Client. Chức năng được thực hiện khi Server chấp nhận việc kết nối của Client.

Đề tài: VoIP Call Trang 39

Hình 57. Thưc hiện ghi âm thanh từ thiết bị đầu vào của Client

+ Hàm StopRecordingFromSounddevice_Client hàm có chức năng thực hiện việc dừng ghi âm từ thiết bị âm thanh của Client. Chức năng được thực hiện khi việc kết nối của Client được ngừng.

Hình 58. Thưc hiện việc dừng ghi âm thanh từ thiết bị đầu vào của Client

Đề tài: VoIP Call Trang 40

2.3.3. Ứng dụng VoIP Call

2.3.2.1. Tổng quan về VoIP Call

- VoIP (Voice over Internet Protocol) là một công nghệ cho phép truyền thoại sử dụng giao thức mạng IP, trên cơ sở hạ tầng sẵn có của Internet và có thể sử dụng nhiều loại mạng khác nhau: LAN, WAN,... Với chi phí thấp hơn nhiều so với các phương thức truyền thông truyền thống, VoIP đang được các doanh nghiệp đầu tư nhiều và được ứng dụng rộng rãi trong môi trường doanh nghiệp và cá nhân.

- Về dự án VoIP Call, đây là ứng dụng cho phép thực hiện truyền thoại giữa các máy tính sử dụng hệ điều hành Windows trong mạng LAN. Thông qua giao thức UDP và Socket. Các máy tính trong mạng LAN có thể giao tiếp, truyền và nhận âm thanh với nhau theo thời gian thực.

- Ứng dụng được viết bằng WPF theo mô hình MVVM giúp tối ưu hoá code và có thể tái sử dụng code, ngoài ra việc bổ sung hoặc chỉnh sửa chức năng đơn giản hơn so với Winform.

- Tuy nhiên, ứng dụng chỉ có thể chạy trên các máy tính sử dụng hệ điều hành Windows Vista hoặc Windows Server 2008 trở lên.

2.3.2.2. Từng chức năng của VoIP Call

- Giao diện chính của ứng dụng gồm 3 phần chính: Main Menu, Sub-Menu và nội dung. Trong mỗi phần để có phần nội dung riêng và từng chức năng riêng để đáp ứng đủ

Đề tài: VoIP Call Trang 41

Hình 59. Giao diện chính

- Giao diện Server cho phép người dùng thao tác thiết lập server để client có thể kết nối đến, bao gồm địa chỉ IP, cổng port và chọn các thiết bị đầu vào/đầu ra.

Hình 60. Giao diện Server

Đề tài: VoIP Call Trang 42

- Giao diện Client cho phép user kết nối đến Server thông qua địa chỉ IP và cổng Port của Server

Hình 61. Giao diện Client

- Giao diện multitab cho phép kéo thả các tab dễ dàng kéo thả từng tab linh động

Hình 62. Multitab trong ứng dụng

Đề tài: VoIP Call Trang 43

- Giao diện khi khởi tạo Server.

Hình 63. Server khi được khởi tạo

- Giao diện sau khi Clent kết nối đển Server, thông tin từng users đã kết nối sẽ được hiển thị trên ListView

Hình 64. Server hiển thị users sau khi được kết nối

Đề tài: VoIP Call Trang 44

- Giao diện Client sau khi kết nối đến Server, thông báo sẽ được hiển thị trên TextBlock

Hình 65. Client sau khi kết nối đến Server

- Tại mục Micro và Speaker, người dùng có thể dễ dàng chọn các thiết bị đầu ra/đầu vào thông qua combobox

Hình 66. Giao diện cho phép chọn OutPut và InPut từ thiết bị

- Calling History sẽ hiển thị các cuộc gọi gần đây nhất, dữ liệu được hiển thị trên ListView

Đề tài: VoIP Call Trang 45

Hình 67. Lịch sử cuộc gọi

- Khi có cuộc gọi từ user bất kỳ, Server sẽ hiển thị bảng thông báo cuộc gọi đến, người dùng hoàn toàn có thể từ chối hoặc chấp nhận cuộc gọi

Hình 68. Thông báo khi có cuộc gọi đến

- Ứng dụng VoIP đã có thể thực hiện được việc khởi tạo Server, Client và thực hiện được các chức năng cơ bản như nghe, gọi và đàm thoại theo thời gian thực, đồng thời cũng có thể lưu trữ được thông tin kết nối và lịch sử cuộc gọi.

CHƯƠNG 3. ĐỀ XUẤT CÁC GIẢI PHÁP CẢI THIỆN CHẤT LƯỢNG GIẢNG DẠY Ở NHÀ TRƯỜNG

Môi trường thực tế tại công ty là môi trường hoàn toàn khác so với môi trường giao dục tại nhà trường, do đó, sinh viên khi thực tập sẽ bỡ ngỡ và sẽ gặp một số khó khăn nhất định trong thực tập. Em xin được đề xuất một số giải pháp để cải thiện chất lượng giảng dạy ở nhà trường như sau:

Về kỹ năng mềm:

- Thường xuyên tổ chức các lớp rèn luyện kỹ năng làm việc nhóm; - Trang bị cho sinh viên kỹ năng tìm đọc tài liệu bằng Tiếng Anh;

- Nên đưa Tiếng Anh vào việc giảng dạy và học tập ở một số môn học nhất định;

- Tổ chức các buổi sinh hoạt Tiếng Anh.

Về kiến thức chuyên ngành:

- Chú trọng hơn về hướng đối tượng trong việc giảng dạy; - Đưa công nghệ mới vào chương trình đào tạo;

- Đưa các công cụ lưu trữ mã nguồn như: Git, Github, Gitlab, Bitbucket,... vào giảng dạy cũng như điều kiện bắt buộc để lưu trữ mã nguồn khi thực hiện đồ án môn học;

- Các môn học như thiết kế web, lập trình web,... cần tạo điều kiện cho Sinh viên deploy website thực tế lên host và trỏ tên miền thực tế;

- Thường xuyên tổ chức các buổi seminar, workshop về các công nghệ, công cụ,... cần thiết cho môi trường doanh nghiệp như: Linux, Docker, Angular,

React, React Native,.. và các ngôn ngữ, công cụ mã nguồn mở khác; - Định hướng cho sinh viên năm nhất hiểu rõ front-end, back-end, devOps,...

từ đó giúp sinh viên có hướng đi tốt hơn trong suốt thời gian học tập tại trường.

Đề tài: VoIP Call Trang 47

CHƯƠNG 4. KẾT LUẬT VÀ ĐỊNH HƯỚNG PHÁT TRIỂN 4.1. Kết luận

Qua thời gian thực tập thực tế tại Công ty TNHH Giải pháp Phần mềm Tường Minh, em đã học hỏi và trao dồi thêm nhiều kỹ năng, kiến thức thực tế; đồng thời được củng cố kiến thức đã học trên ghế nhà trường. Qua dự án thực tế, em đã thực hiện được một số yêu cầu nhất định; tuy nhiên, thời gian thực tập chưa được nhiều nên dự án còn gặp phải nhiều khó khăn cần khắc phục.

Về dự án VoIP Call:

- Ưu điểm:

+ Ứng dụng VoIP có thể nghe gọi theo thời gian thực thông qua TCP/IP; + Giao diện dễ tương tác, sử dụng;

+ Thiết kế dạng mutitab, dễ dàng kéo thả như giao diện metro;

Một phần của tài liệu BÁO cáo THỰC tập tốt NGHIỆP đề tài VoIP call (Trang 29)

Tải bản đầy đủ (DOCX)

(62 trang)
w