Tải bản đầy đủ - 0 (trang)
CHƯƠNG I. CƠ SỞ LÍ LUẬN

CHƯƠNG I. CƠ SỞ LÍ LUẬN

Tải bản đầy đủ - 0trang

Khóa luận tốt nghiệp



GVHD: ThS. Lê Viết Mẫn



năng Chat (Faceboon, Zalo,...). Hầu như khơng còn mấy ai quan tâm vào những tin nhắn

theo cách cổ điển, các nhà mạng cũng đã cố gắng đổi mới cung cấp nhiều gói nhắn tin tiết

kiệm khuyến khích người dùng nhưng cũng khơng mấy khả quan.

Thời điểm hiện tại việc phát triển và sử dụng các ứng dụng Chat thông qua mạng

Internet chiếm đa số, các ứng dụng Chat nội bộ chỉ chiếm một phần nhỏ, lẻ và hầu như ít

được sử dụng và biết đến.



TR



Ư







N



G



Đ



ẠI



H





C



KI



N

H



TẾ



H



U







Hình 1. 1 Khảo sát các ứng dụng nhắn tin tại Việt Nam



Nguồn: http://www.brandsvietnam.com (2017)

Hình 1.1 là biểu đồ kết quả khảo sát hơn 450 người trong độ tuổi từ 18-39 tại Hồ

Chí Minh và Hà Nội về việc sử dụng các ứng dụng nhắn tin, nhìn vào biểu đồ ta có thể dễ

dàng thấy được sự nổi trội của hai ứng dụng Facebook Messengers với 94% và Zalo 89%.

Tiếp đến là tin nhắn điện thoại SMS chiếm 59% , các ứng dụng còn lại hầu như bị lép vế

với chỉ 37% ứng viên chọn Skype và 33% đối với Viber.

SVTH: Nguyễn Đình Tiến

5



Khóa luận tốt nghiệp



GVHD: ThS. Lê Viết Mẫn



1.1.3 Những yêu cầu, chức năng cần thiết khi xây dựng ứng dụng Chat nội bộ

Nắm bắt được tầm quan trọng, và mức độ sử dụng rộng rãi của ứng dụng Chat trong

xã hội, từ đó có thể kế thừa và phát triển nó trong phạm vi nội bộ (doanh nghiệp, trường

học,...), tạo ra được sự đồng bộ và thống nhất trong việc truyền tải thông tin trong tổ chức.

Với mục đích tạo ra một ứng dụng giúp các cá nhân trong tổ chức có thể sử dụng

giao tiếp với nhau, trao đổi công việc và đồng thời tránh gây xao nhãng như những ứng

dụng Chat có liên quan đến mạng xã hội.







Xây dựng mơ hình Server dựa trên nền tảng Node.js



U



Xây dựng giao diện thân thiện với người dùng, có thể tương tác qua lại giữa các



TẾ



H



người dùng với nhau.



N

H



Cung cấp chức năng truyền tải dư liệu với dung lượng lớn và tốc độ cao thông qua



HTML và CSS





C



1.2



KI



mạng nội bộ.



HTML (HyperText Markup Language) : là một ngôn ngữ đánh dấu được thiết kế ra



ẠI



H



để tạo nên các trang web, nghĩa là các mẩu thơng tin được trình bày trên World Wide Web.



Đ



CSS (Cascading Style Sheets) : định nghĩa về cách hiển thị của một tài liệu HTML.



N



G



CSS đặc biệt hữu ích trong việc thiết kế Web. Nó giúp cho người thiết kế dễ dàng áp đặt







các phong cách đã được thiết kế lên bất kì page nào của website một cách nhanh chóng,



TR



1.3



Ư



đồng bộ.



Ngơn ngữ lập trình Javascript

Javascript là một ngơn ngữ lập trình kịch bản dựa trên các đổi tượng được phát triển



sẵn có hoặc tự định nghĩa từ các ý niệm nguyên mẫu, Javascript được dùng rộng rãi để tạo

ra các trang web có tính tương tác, đồng thời cũng được sử dụng để viết các script trong

các ứng dụng.

Giống như các ngôn ngữ lập trình khác như Java, C/C++, C# thì Javascript cũng có

các cú pháp tương tự các hàm toán học, câu lệnh if-else, vòng lặp. Nhưng điểm đặc biệt ở

SVTH: Nguyễn Đình Tiến

6



Khóa luận tốt nghiệp



GVHD: ThS. Lê Viết Mẫn



Javascript đó là chỉ sử dụng cho các ứng dụng chạy trên nền tảng web. Hiện nay

Javascript được hỗ trợ hầu như trên tất cả các trình duyệt (Chrome, CocCoc, Firefox…).

Javascript chứa các thư viện tiêu chuẩn cho các Object, nó có thể mở rộng cho nhiều

mục đích bằng việc bổ sung thêm các Object, ví dụ:

-



Javascript phía máy khách, JavaScript được mở rộng bằng cách cung cấp các

Object để quản lí trình duyệt và DOM (Document Object Model) của nó.Ví dụ, ở

phía máy khách cho phép tác động tới các yếu tố lên một trang HTML và phản

Javsscript phía Server, Javascript được mở rông bằng cách cung cấp thêm các



U



-







hồi hành động cảu người dùng như nhập, click chuột,...



TẾ



H



đối tượng cần thiết để chạy Javascript trên máy chủ.Ví du, ở phía Server cho



N

H



phép ứng dụng kết nối cơ sở dữ liệu (database), cung cấp thông tin một cách liên



Framework Bootstrap





C



1.4



KI



tục, hoặc thực hiện thao tác với các tập tin trên máy chủ.



H



Bootstrap là một framework cho phép thiết kế website reponsive nhanh hơn và dễ



Đ



ẠI



dàng hơn.



G



Bootstrap là bao gồm các HTML templates, CSS templates và Javascript tao ra







N



những cái cơ bản có sẵn như: typography, forms, buttons, tables, navigation, modals,



Ư



image carousels và nhiều thứ khác. Trong bootstrap có thêm các plugin Javascript trong



TR



nó. Giúp cho việc thiết kế reponsive của bạn dễ dàng hơn và nhanh chóng hơn.

1.5



Tổng quan về ứng dụng thời gian thực (Realtime)

1.5.1



Hệ thống thời gian thực



Thời đại hiện nay hệ thống thông tin thời gian thực được sử dụng rất nhiều lĩnh vực

như: trong ngành công nghiệp sản xuất, kiểm sốt tiến trình (trong nhà máy, trong y tế,

trong hệ thống giao thông vận tải,…). Sự phát triển của hệ thống thông tin thời gian thực

yêu cầu mỗi phần tử của hệ thống phải ở thời gian thực, tức thời, và một hệ thống được

SVTH: Nguyễn Đình Tiến

7



Khóa luận tốt nghiệp



GVHD: ThS. Lê Viết Mẫn



thiết kế theo cách như vậy được gọi là hệ điều hành thời gian thực hay hệ thống thời gian

thực

Ứng dụng thời gian thực (Realtime). Realtime ở đây chính là xử lí giao tiếp từ người

dùng tới máy chủ theo thời gian thực, các ví dụ về Realtime gần gũi mà chúng ta có thể

thấy đó là facebook, gmail,…. Khi bạn nhận được một tin nhắn, một email hay một thông

báo, gần như ngay lập tưc giao diện sẽ hiển thị thông tin mà chúng ta không cần phải

tương tác trước. Tức là không chỉ khi chúng ta gửi yêu cầu lên cho server thì server mới







trả về, mà server sẽ tự biết khi nào gửi thơng tin về cho chúng ta. Có thể coi đó như là



1.5.2



Đặc điểm hệ thống thời gian thực



TẾ



H



U



một mối quan hệ hai chiều.



N

H



Một hệ thống thời gian thực phải được thiết kế làm sao cho các dịch vụ của nó có



KI



thể truy cập vào phần cứng, phần mềm với khoảng thời gian tối thiểu. Có những kết hợp





C



thích hợp để đảm bảo cho những xử lý của mọi thành phần không vượt quá thời gian cho



H



phép



Đ



ẠI



Như vậy, một hệ thống đáp ứng được yêu cầu thời gian thực, trong khoảng thời gian



G



ngắn nhất sẽ đem lại những lợi ích thiết thực cho khách hàng, cho chính doanh nghiệp.



Ư



TR



quả thiết thực.







N



Đáp ứng được các yêu cầu về tốc độ truy cập, kết quả mong đợi nhanh nhất, mang lại hiệu



Thư viện Jquery



1.6



Để tạo ra các hiệu ứng trên website thì khơng thể thiếu được sự kết hợp giữa

Javascript và CSS, nhưng thay vì phải lập trình các đoạn code dài dòng, lặp đi lặp lại gây

khó kiểm sốt, bảo trì thì Jquery đã ra đời nhằm giải quyết vấn đề này.

Jquery là một thư viện kiểu mới của Javascript giúp lập trình viên “viết ít hơn, làm

nhiều hơn”. Nó được sử dụng đến 99% tổng số website trên toàn thế giới.

Các đặc trưng cơ bản của Jquery:

-



Thao tác HTML/DOM



SVTH: Nguyễn Đình Tiến

8



Khóa luận tốt nghiệp



GVHD: ThS. Lê Viết Mẫn



-



Thao tác CSS



-



Hiệu ứng chuyển động



-



Phương thức sự kiện CSS



-



Ajax



Cải thiện hiệu suất ứng dụng



-



Tương thích với hầu hết các trình duyệt



-



Giúp thực hiện UI mà không phải viết nhiều code



1.7.1



TẾ



Tổng quan về Node.js

Định nghĩa



N

H



1.7



H



U



-







Ưu điểm của Jquery



KI



Nodejs là một mã nguồn chạy trên mơi trường Javascript V8 Engine. NodeJS có thể





C



chạy trên đa nền tảng hệ điều hành khác nhau từ Windows, Linux, cho đến MacOs. Bên



H



cạnh đó NodeJS còn cung cấp các thư viện phong phú ở dạng Javascript Module khác



Một số khái niệm liên quan đến Node.js



G



1.7.2



Đ



ẠI



nhau giúp đơn giản hóa việc lập trình và giảm thời gian ở mức thấp nhất.







N



I/O: là quá trình giao tiếp, giữa mơi trường bên ngồi và hệ thống. Trong kiến trúc



Ư



máy tính, sự kết hợp giữa CPU và bộ nhớ chính (RAM), mọi thao tác truyền tải dữ liệu



TR



giữa chúng, được coi là tác vụ I/O.

Callback: Callback có tính chất bất đồng bộ tương đương cho một hàm, Một hàm

callback được gọi khi hoàn thành một nhiệm vụ cụ thể. Tất cả các API trong Node.js đều

viết theo các cách của hàm callback.

RESTful API: là một tiêu chuẩn dùng trong việc thiết kế các API cho các ứng dụng

web để quản lí các mã nguồn. RESTful là một trong những kiểu thiết kế API được sử

dụng phổ biến nhất hiện nay.



SVTH: Nguyễn Đình Tiến

9



Khóa luận tốt nghiệp



GVHD: ThS. Lê Viết Mẫn



Synchronous và Asynchronous:



Synchronous (Xử lí đồng bộ): Đó là chương trình chạy theo từng bước, khi bước



N

H



-



TẾ



H



U







Hình 1. 2 Synchronous và Asynchronous



KI



thứ 1 thực hiện xong thì chuyển sang bước tiếp theo, khi nào chương trình xong

Asynchronous (Xử lí bất đồng bộ): Ngược lại với Synchronous thì



H



-





C



mới chuyển qua chương trình khác.



ẠI



Asynchronous nghĩa là chương trình có thể chạy bỏ qua một bước nào đó, vì vậy



Đ



Asynchronous được cho là một chương trình hoạt động thiếu sự chặt chẽ và

So sánh mặt tốt, mặt xấu giữa Synchronous và Asynchronous:







-



N



G



khơng có quy trình nên việc quản lí khó khăn.



TR



Ư



Bảng 1. 1 So sánh Synchronous và Asynchronous

Xử lí

Mặt tốt

Synchronous



Mặt xấu



Chương trình sẽ chạy theo Chương trình chạy theo thứ

đúng trình tự



tự đồng bộ sẽ sinh ra trạng

thái chờ, đôi khi không cần

thiết trong một số trường

hợp



Asynchronous



Có thể xử lí nhiều cơng Nếu trong chương trình đòi

việc một lúc mà khơng hỏi phải có qui trình thì



SVTH: Nguyễn Đình Tiến

10



Khóa luận tốt nghiệp



GVHD: ThS. Lê Viết Mẫn

cần phải chờ đợi



không thể sử dụng được



Non-Blocking I/O: Có nghĩa là những cơng việc có liên quan đến input và output

khơng thể có quyền ngăn chặn những cơng việc khác.

Event-driven: để khắc phục vấn đề, tồn bộ server làm việc trên một thread duy

nhất, khi muốn sử dụng thêm tài nguyên từ CPU thì sẽ tạo thêm một yêu cầu mới trên

CPU tương ứng, các tài nguyên sử dụng hoàn toàn độc lập. Ứng dụng sử dụng mơ hình

event-driven, để xử lí server chịu sự chi phối của vòng lặp trung tâm



N



Bất đồng bộ: Tất cả các API của Nodejs đều bất đồng bộ, nó chủ yếu dựa trên



Ư



-



Các tính năng vượt trội của Node.js:







1.7.3



G



Đ



ẠI



H





C



KI



N

H



TẾ



H



U







Hình 1. 3 Event-driven



TR



nền của Nodejs Server và chờ đợi Server trả dữ liệu về

-



Tốc độ cao: Vì được xây dựng trên dựa vào nền tảng V8 Javascript nên khả năng

thực thi chương trình nhanh



-



Khả năng mở rộng cao: Một trong những bí mật để Node.js có thể mở rộng đó là

Event Loop. Kiến trúc này giúp nó đáp ứng các yêu cầu cho từng client khác

hồn tồn khác so với các cơng nghệ khác, nó có thể đáp ứng được số lượng lớn

client nhiều hơn hàng trăm lần so với các ngôn ngữ khác.



SVTH: Nguyễn Đình Tiến

11



Khóa luận tốt nghiệp

1.7.4



GVHD: ThS. Lê Viết Mẫn



Module trong Node.js:



Module cũng giống như các thư viện ở PHP, C, C#,… Sử dụng Module giúp đơn

giản hóa việc tạo ra các ứng dụng, giúp quản lí mã lệnh một cách dễ dàng hơn. Module có

thể đơn giản là một hàm hay một đối tượng. Mỗi Module thường được khai báo ở một tập

tin riêng lẽ.

Một số Module chính trong việc xây dựng ứng dụng Chat:

-



Express:



U







+ Express là một framework, nó cung cấp rất nhiều tính năng mạnh mẽ trên



H



đa nền tảng, Express dễ dàng để phát triển các ứng dụng nhanh dựa trên Node.js



TẾ



cho các ứng dụng web.



N

H



+ Express hỗ trợ các phương thức HTTP và middleware tạo ra một API

Ejs: là một template engine cho phép người dùng định dạng bố cục HTML đồng





C



-



KI



mạnh mẽ, sử dụng dễ dàng.



TR



Ư







N



G



Hình 1. 4 Socket.IO



ẠI



Socket.io:



Đ



-



H



thời có thể chèn các đoạn mã Javascript thực thi ngay bên trong nó.



+ Được xây dựng nhằm tạo ra ứng dụng real time trên nền tảng Node.js.

Socket.io cung cấp cho lâp trình viên các đặc trưng như event, room và tự

động phục hồi lại kết nối.



SVTH: Nguyễn Đình Tiến

12



Khóa luận tốt nghiệp



GVHD: ThS. Lê Viết Mẫn



+ Khi sử dụng Module Socket.io nó sẽ cung cấp cho chúng ta các Object:

socket server quản lí phía server và socket client điều khiển phía người dùng.

+ Socket là cách tổ chức mơ hình client-server để trong cả hai bên ln trong

tình trạng sẵn sàng trả lời bên kia và ngược lại, để quá trình này diễn ra

Client và Server ln ở trong tình trạng “keep-alive”.

+ Khi client kết nối tới Socket.io server, nó sẽ gửi đến server một “handshake

HTTP request”. Server sẽ phân tích request đó trong suốt q trình kết nối .



U







Nó sẽ tìm cấu hình của middleware đã được đăng ký với server và thực thi



H



chúng trước khi đưa ra sự kiên kết nối. Khi kết nối thành cơng thì “connect



TẾ



event listener” được thực thi, tạo ra một dịnh danh của Client mà mỗi một



Express-session: Cơ chế hoạt động của express-session đó là dùng một cookie ở



KI



-



N

H



Client kết nối tới Server sẽ có một định danh





C



client để đánh dấu ID clinet, và data session được lưu lại ở server.

Multer: đây là một middleware xử lí truyền tải các tập tin lên server.



-



Body-parser: là một middleware xử lý JSON, text và mã hóa URL



-



Fs: Module Fs (File System) là module dùng để đọc file trên server



-



Mongoose: đây là module giúp việc giao tiếp, xử lí với MongoDB với Node.js



N



G



Đ



ẠI



H



-



Path: dùng để xử lí các đường dẫn file và tên file như lấy đường dẫn trỏ tới thư



TR



-



Ư







nhanh gọn hơn.



mục, lấy tên file trong đường dẫn, lấy phần mở rộng file.

-



Morgan: dùng để tạo ra log các request đến server



-



Lodash: Lodash cung cấp nhiều chức năng (check null, underfine), chức năng xử

lí (string, object, array).



1.8



Hệ quản trị cơ sở dữ liệu NoSQL MongoDB

NoSQL là một dạng cơ sở dữ liệu mã nguồn mở. NoSQL là viết tắt bởi None-



Relational SQL, hay còn được gọi là Not-Only SQL.

SVTH: Nguyễn Đình Tiến

13



Khóa luận tốt nghiệp



GVHD: ThS. Lê Viết Mẫn



NoSQL database là một database có kiểu lưu trữ, truy vấn dữ liệu hoàn toàn khác so

với SQL. NoSQL bỏ qua tính tồn vẹn của dữ liệu và transaction để đổi lấy hiệu suất

nhanh và khả năng mở rộng (scalability). Vì vậy NoSQL phù hợp trong nhiều dự án Big

Data, các dự án Real-time, số lượng dữ liệu nhiều.

NoSQL Database ra đời, giải quyết được những khuyết điểm của RDBMS:

-



Dữ liệu trong NoSQL Database được lưu dưới dạng document, object. Dễ dàng

trong việc truy vấn và nhanh hơn RDBMS.

NoSQL có thể làm việc hồn tồn với dữ liệu dạng khơng có cấu trúc



-



Việc thay đổi cấu trúc dữ liệu (Thêm, xóa trường hoặc bảng) rất dễ dàng và



H



U







-



Vì khơng đặt nặng tính ACID(Atomicity, Consistency, Isolation, Durability) của



N

H



-



TẾ



nhanh gọn trong NoSQL.



transactions và tính nhất qn của dữ liệu, NoSQL DB có thể mở rộng, chạy trên





C



KI



nhiều máy một cách dễ dàng.



H



Hiện nay, trên thị trường có khá nhiều NoSQL Database Management System:



Đ



ẠI



MongoDB, Redis, RavenDB, Neo4j,… Ta có thể chia NoSQL thành 4 loại:

Key-Value Database



-



Document Database



-



Graph Database



-



Column-Family Database



TR



Ư







N



G



-



So sánh RDBMS và NoSQL

Bảng 1. 2 So sánh RDBMS và NoSQL

Tính năng

Hiệu suất



RDBMS

Kém hơn NoSQL



NoSQL

Rất tốt

Bỏ qua các ràng buộc



Khả năng mở rộng Hạn chế về số lượng, khả Hỗ trợ một lượng rất lớn

SVTH: Nguyễn Đình Tiến

14



Khóa luận tốt nghiệp



GVHD: ThS. Lê Viết Mẫn

năng mở rộng các node



theo chiều ngang



các node trong một hệ

thống



Tốc độ đọc ghi



Kém do thiết kế phải đảm Tốc độ đọc ghi rất nhanh

bảo vào ra liên tục của dữ vì NoSQL thiết kế bỏ đi

các cơ chế ràng buộc



liệu có tính ràng buộc



Mặt khác phải đảm bảo tính tồn vẹn phức tạo.

nhất quán, ràng buộc toàn Mặt khác chúng được

thực hiện chủ yếu trên



U







vẹn của dữ liệu



KI



N

H



TẾ



H



bộ nhớ, sau đó dữ liệu



mới được ghi từ từ

xuống



khơng



giống



RDBMS.



Đòi hỏi cao về cấu hình Đòi hỏi thấp hơn về cấu





C



u cầu phần cứng



H



phần cứng hoặc cấu hình hình, tính đồng nhất của

phân cứng



Đ



ẠI



đặc biệt



Đảm bảo tính nhất quán và Tính nhất quán và ràng

ràng buộc tồn vẹn dữ liệu







N



G



Tính nhất qn dữ liệu



buộc toàn vẹn yếu, chủ



Ư



yếu được thực thi nhiều



TR



trên code



Thay đổi sô node trong Thông thường phải ngắt kết Không câng ngắt kết nối

hệ thống



nối cả hệ thống



cả hệ thống



Việc thay đổi số node phức Việc thay đổi số node

tạp



đơn giản, ít ảnh hưởng

đén hệ thống



Truy vấn và báo cáo



Dễ dàng sử dụng ngôn ngữ Việc lấy báo cáo dữ liệu



SVTH: Nguyễn Đình Tiến

15



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

CHƯƠNG I. CƠ SỞ LÍ LUẬN

Tải bản đầy đủ ngay(0 tr)

×