1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Xây dựng ứng dụng chat nội bộ

52 190 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 52
Dung lượng 2,14 MB

Nội dung

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 doanh nghiệp, tạo ra được sự đồng bộ và thống

Trang 1

KHOA H Ệ THỐNG THÔNG TIN KINH TẾ

Trang 2

TRƯỜNG ĐẠI HỌC KINH TẾ

- -

KHÓA LUẬN TỐT NGHIỆP

Trang 3

L ỜI CÁM ƠN

Để hoàn thành khóa luận này, đó là sự đúc kết, nghiên cứu của em trong 3 tháng thực tập

tại công ty Người Quản Lý Thông Minh đồng thời dựa trên kiến thức đã được học tập tại

trương Đại học Kinh Tế Huế trong suốt 4 năm vừa qua

Với lòng biết ơn chân thành, em xin gửi đến quí thầy cô giáo trong khoa Hệ thống thông

tin Kinh tế - Đại học Kinh tế Huế, cùng với gia đình, bạn bè đã giúp đỡ và động viên

trong thời gian hoàn thành khóa luận tốt nghiệp này

Đặc biệt, em xin gửi lời cám ơn đến thầy Lê Viết Mẫn, người đã tận tình hướng dẫn, quan

tâm, thường xuyên theo dõi, giải đáp những thắc mắc đồng thời đưa ra những đánh giá,

nhận xét để em có thể hoàn thành khóa luận tốt nghiệp một cách tốt nhất

Tiếp theo, em xin gửi lời cám ơn đến công ty Người Quản Lý Thông Minh đã tạo điều

kiện cho em được tham gia thực tập, tìm hiểu thực tiễn Cám ơn các anh chị trong công ty

đã truyền đạt những kinh nghiệm quý báu trong suốt thời gian thực tập vừa qua

Vì kiến thức bản thân và năng lực còn hạn chế, trong quá trình thực tập, hoàn thiện khóa

luận này em không tránh khỏi sai sót, kính mong nhận được những ý kiến đóng góp, bổ

sung của quý thầy cô để em có thể hoàn thiện đề tài tốt hơn

Xin chân thành cám ơn !

Trang 4

MỤC LỤC

LỜI CÁM ƠN i

MỤC LỤC ii

DANH MỤC CÁC KÍ HIỆU VÀ CHỮ VIẾT TẮT v

DANH MỤC CÁC HÌNH vi

DANH MỤC CÁC BẢNG viii

MỞ ĐẦU 1

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

1.1 Ứng dụng Chat 4

1.1.1 Một số khái niệm liên quan 4

1.1.2 Thực trạng sử dụng ứng dụng Chat hiện nay 4

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ộ 6

1.2 HTML và CSS 6

1.3 Ngôn ngữ lập trình Javascript 6

1.4 Framework Bootstrap 7

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

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

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

1.6 Thư viện Jquery 8

1.7 Tổng quan về Node.js 9

1.7.1 Định nghĩa 9

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

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

1.7.4 Module trong Node.js: 12

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

CHƯƠNG II PHÂN TÍCH, THIẾT KẾ ỨNG DỤNG CHAT NỘI BỘ 17

2.1 Mô tả hệ thống 17

2.2 Mục tiêu hệ thống 17

NG ĐẠ

I H ỌC

KINH

TẾ HU

Trang 5

2.3 Yêu cầu chung 17

2.3.1 Yêu cầu chức năng 17

2.3.2 Yêu cầu phi chức năng 18

2.4 Sơ đồ tình huống hệ thống 18

2.4.1 Sơ đồ tổng quát 18

2.4.2 Chức năng đăng nhập 19

2.4.3 Chức năng đăng kí 20

2.4.4 Chức năng thao tác trang chủ của User 22

2.4.5 Chức năng của Server 23

2.5 Sơ đồ tuần tự (Sequence Diagram) 25

2.5.1 Sơ đồ đăng kí 25

2.5.2 Sơ đồ đăng nhập 26

2.5.3 Sơ đồ Chat Group 27

2.5.4 Sơ đồ Chat User 28

2.6 Mô hình phân rã chức năng 29

2.7 Mô hình dữ liệu của ứng dụng 30

CHƯƠNG III CÀI ĐẶT VÀ ĐÁNH GIÁ 32

3.1 Cài đặt công cụ 32

3.2 Sơ đồ thuật toán chương trình 33

3.3 Giao diện chương trình 34

3.3.1 Giao diện đăng nhập 34

3.3.2 Giao diện đăng ký 35

3.3.3 Giao diện chính 36

3.3.4 Cơ sở dữ liệu của ứng dụng 38

3.4 Vận hành hệ thống 38

3.5 Đánh giá kết quả 40

3.5.1 Những điểm đạt được 40

KẾT LUẬN 41

NG ĐẠ

I H ỌC

KINH

TẾ HU

Trang 6

TÀI LIỆU THAM KHẢO 42

Trang 7

DANH MỤC CÁC KÍ HIỆU VÀ CHỮ VIẾT TẮT

T Ký hi ệu viết tắt Tên kí hi ệu viết tắt

Trang 8

DANH MỤC CÁC HÌNH

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

Hình 1 2 Synchronous và Asynchronous 10

Hình 1 3 Event-driven 11

Hình 1 4 Socket.IO 12

Hình 1 5 Cơ sở dữ liệu MongoDB 16

Hình 2 1 Sơ đồ tình huống tổng quát 18

Hình 2 2 Sơ đồ đăng nhập 19

Hình 2 3 Sơ đồ đăng ký 20

Hình 2 4 Sơ đồ thao tác trang chủ 22

Hình 2 5 Sơ đồ thao tác server 23

Hình 2 6 Sơ đồ tuần tự đăng kí 25

Hình 2 7 Sơ đồ tuần tự đăng nhập 26

Hình 2 8 Sơ đồ tuần tự Chat Group 27

Hình 2 9 Sơ đồ tuần tự Chat User 28

Hình 2 10 Sơ đồ phân rã chức năng 29

Hình 2 11 Cơ sở dữ liệu của ứng dụng 30

Hình 3 1 Sơ đồ thuật toán 33

Hình 3 2 Giao diện đăng nhập 34

Hình 3 3 Giao diện đăng ký 35

Hình 3 4 Giao diện chính 36

Hình 3 5 Giao diện Chat Group 37

Hình 3 6 Giao diện Chat User 37

Hình 3 7 Cơ sở dữ liệu ứng dụng 38

Hình 3 8 Chạy lệnh mongod 39

Hình 3 9 Chạy lệnh mongo 39

NG ĐẠ

I H ỌC

KINH

TẾ HU

Trang 9

Hình 3 10 Khởi chạy Server 40

Trang 10

DANH MỤC CÁC BẢNG

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

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

Bảng 2 1 Các tác nhân hệ thống 18

Bảng 2 2 Chức năng đăng nhập của User 19

Bảng 2 3 Chức năng đăng kí của User 21

Bảng 2 4 Thao tác trang chủ 22

Bảng 2 5 Thao tác Server 24

Bảng 2 6 Document User 30

Bảng 2 7 Document Room 31

Bảng 2 8 Document Chat 31

NG ĐẠ

I H ỌC

KINH

TẾ HU

Trang 11

MỞ ĐẦU

1 Lý do chọn đề tài

Trong thời đại hiện nay, với sự phát triển không ngừng của Internet đã giúp cho việc trao đổi thông tin trở nên dễ dàng hơn bao giờ hết Với sự ra đời của smartphone cùng với

việc xuất hiện của Facebook, Zalo…đã cung cấp cho người dùng thêm một công cụ hữu

hiệu để trò chuyện, vấn đề về khoảng cách không còn là điều gì đó quan trọng

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 doanh nghiệp, 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 nội bộ (doanh nghiệp, trường họ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

Từ những lý do đó, tôi quyết định chọn “Xây dựng ứng dụng Chat nội bộ” làm

hướng nghiên cứu đề tài

2 Mục tiêu đề tài

Mục tiêu tổng quát

- Từ việc nghiên cứu các nền tảng lập trình web, đặc biệt là Node.js, đề tài tập trung phát triển ứng dụng Chat qua website, đầy đủ tính năng cơ bản giúp người dùng trao đổi thông tin

Trang 12

Đối tượng nghiên cứu: Tìm hiểu về các ứng dụng Chat hiện tại đang được sử dụng

trong nội bộ (nhóm, tập thể, tổ chức,…) Từ đó xây dựng ứng dụng Chat riêng phù hợp hơn trong phạm vi nội bộ

- Phạm vi nghiên cứu: Các ứng dụng Chat nội bộ

Để phát triển ứng dụng Chat trong nội bộ trước nhất phải biết sử dụng, kết hợp nhuần nhuyễn các phương pháp nghiên cứu:

- Quá trình thu thập dữ liệu sử dụng các phương pháp:

+ Phương pháp nghiên cứu tài liệu: Chủ động tìm kiếm thông qua các diễn đàn công nghệ, những thông tin về các sản phẩm đi trước

+ Phương pháp quan sát: Quan sát thao tác người dùng, nhằm tìm ra những

ưu và nhược điểm của các ứng dụng sẵn có, từ đó kế thừa và phát huy và đưa vào trong sản phẩm

+ Phương pháp phân tích, đánh giá: Dựa vào việc quan sát, phân tích, lựa

chọn áp dụng những công nghệ phù hợp để phát triển đề tài

- Giai đoạn phân tích thiết kế và thực hiện:

+ Phương pháp phân tích và thiết kế hệ thống: tổng hợp thông tin đã thu thập được và phân tích thực tế, qua đó xây dựng được ứng dụng phù hợp với thực

tiễn

+ Phương pháp lập trình: Sau khi tiến hành phân tích, sẽ lựa chọn ngôn ngữ

lập trình Javascript, xây dựng Server Node.js và CSDL Mongodb để xây dựng

ứng dụng Chat trong nội bộ

4 Cấu trúc khóa luận

Ngoài mở đầu và kết luận, khóa luận gồm 3 chương:

Chương I: Cơ sở lí luận

Nội dung chương này sẽ trình bày những khái niệm về ứng dụng sẽ phát triển, giới thiệu các công nghệ sẽ được được áp dụng

Trang 13

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

Chương này sẽ đi từ khảo sát thực trạng, mô phỏng hệ thống , phân tích thiết kế hệ

thống thông tin, cơ sở dư liệu của hệ thống

Chương III: Cài đặt và đánh giá

Giới thiệu cài đặt, cách vận hành,sơ đồ thuật toán, giao diện chương trình và đánh giá kết quả

Trang 14

CHƯƠNG I CƠ SỞ LÍ LUẬN 1.1 Ứng dụng Chat

1.1.1 Một số khái niệm liên quan

Chat là hình thức mà con người trao đổi thông tin với nhau qua mạng máy tính (Internet, Lan, Man, Wan,…) Trong đời sống thường ngày chúng ta giao tiếp với nhau thông qua lời nói, hành động, cử chỉ Còn trên mạng chúng ta thường trao đổi thông tin qua chat, email,

Hiện nay với sự phát triển không ngừng của Internet đã giúp cho việc trao đổi thông tin của chúng ta trở nên dễ dàng hơn Bởi vậy Chat có vai trò rất quan trọng đối với chúng

ta trong thời đại hiện nay Chúng ta có thể sử dụng Chat tin nhắn, Chat Voice, Chat Video để trao đổi thông tin với nhau ở bất kì đâu trên thế giới chỉ cần bạn có thiết bị (Máy tính, Smartphone, ) có kết nối Internet

Thời điểm hiện tại với vô vàn các ứng dụng Chat có sẵn, thì vấn đề khoảng cách không còn là một điều gì đó quá quan trọng Thông qua Chat, mọi người có thể kết bạn,

giao lưu, gặp gỡ, chia sẻ thông tin với nhau thuận tiện, dễ dàng hơn

Ngoài việc sử dụng những ứng dụng Chat phải kết nối Internet, chúng ta có thể thay

thế bằng những ứng dụng Chat thông qua mạng LAN (mạng nội bộ) Nó sẽ phù hợp hơn

đối với một tổ chức, tập thể có các thiết bị truyền thông kết nối với nhau trong một diện tích nhất định, có thể trong một văn phòng, một tòa nhà hay là một trường học

Điều quan trọng ở đây đó là các cá nhân có thể giao tiếp dễ dàng nhất trong nội bộ, thay thế được các ứng dụng Chat liên quan đến mạng xã hội gây xao nhãng ảnh hưởng đến năng suất Đối với mục đích giao tiếp nội bộ, ngoài việc trò chuyện trực tiếp thì sử

dụng ứng dụng Chat nội bộ có thể là giải pháp tốt nhất

1.1.2 Thực trạng sử dụng ứng dụng Chat hiện nay

Từ khi các ứng dụng Chat ra đời, việc nhắn tin (SMS) theo cách truyền thống giờ

đây gần như ít được sử dụng hơn trong giới trẻ Với hàng loạt ứng dụng nhắn tin miễn phí trên Smartphone (Whatapp, Line, Viber, ), hay các ứng dụng mạng xã hội tích hợp tính

Trang 15

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

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

Trang 16

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

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 người dùng với nhau

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

mạng nội bộ

1.2 HTML và CSS

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

CSS (Cascading Style Sheets) : định nghĩa về cách hiển thị của một tài liệu HTML 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, đồng bộ

Trang 17

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 hồi hành động cảu người dùng như nhập, click chuột,

- Javsscript phía Server, Javascript được mở rông bằng cách cung cấp thêm các đối tượng cần thiết để chạy Javascript trên máy chủ.Ví du, ở phía Server cho 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

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

1.4 Framework Bootstrap

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

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

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

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 soá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

Trang 18

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à

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

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

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ó

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 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 phép

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 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 Đá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

quả thiết thực

1.6 Thư viện Jquery

Để 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 soá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:

Trang 19

- Thao tác CSS

- Hiệu ứng chuyển động

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

- Ajax

Ưu điểm của Jquery

- 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 T ổng quan về Node.js

1.7.1 Định nghĩa

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

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 cạnh đó NodeJS còn cung cấp các thư viện phong phú ở dạng Javascript Module khác 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

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

I/O: là quá trình giao tiếp, giữa môi trường bên ngoà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

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

Trang 20

Synchronous và Asynchronous:

Hình 1 2 Synchronous và Asynchronous

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

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

- Asynchronous (Xử lí bất đồng bộ): Ngược lại với Synchronous thì 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à không có quy trình nên việc quản lí khó khăn

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

hợp Asynchronous Có thể xử lí nhiều công

việc một lúc mà không

Nếu trong chương trình đòi

hỏi phải có qui trình thì

Trang 21

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 đề, toà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

Hình 1 3 Event-driven

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

- 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

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 hoàn toà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

Trang 22

1.7.4 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:

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

đ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 cho các ứng dụng web

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

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

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

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

- Socket.io:

Hình 1 4 Socket.IO

+ Đượ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

Trang 23

+ 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 luôn 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 luôn ở 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 quá trình kết nối

Nó sẽ tìm cấu hình của middleware đã được đăng ký với server và thực thi 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 event listener” được thực thi, tạo ra một dịnh danh của Client mà mỗi một Client kết nối tới Server sẽ có một định danh

- Express-session: Cơ chế hoạt động của express-session đó là dùng một cookie ở 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 nhanh gọn hơn

- 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ư

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 Relational SQL, hay còn được gọi là Not-Only SQL

Trang 24

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 toà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 hoàn toà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à

nhanh gọn trong NoSQL

- Vì không đặt nặng tính ACID(Atomicity, Consistency, Isolation, Durability) của transactions và tính nhất quán của dữ liệu, NoSQL DB có thể mở rộng, chạy trên nhiều máy một cách dễ dàng

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

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

Trang 25

theo chiều ngang năng mở rộng các node các node trong một hệ

thống

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

bảo vào ra liên tục của dữ

Yêu cầu phần cứng Đòi hỏi cao về cấu hình

phần cứng hoặc cấu hình đặc biệt

Đòi hỏi thấp hơn về cấu hình, tính đồng nhất của phân cứng

Tính nhất quán dữ liệu Đảm bảo tính nhất quán và

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

Trang 26

SQL để truy vấn trực tiếp

dữ liệu từ database hoặc dùng công cụ hỗ trợ để lấy báo cáo

trực tiếp từ NoSQL chưa được hỗ trợ tốt, thực

hiện chủ yếu thông qua giao diện ứng dụng

MongoDB là một trong những cơ sở dữ liệu mã nguồn mở NoSQL, là cơ sở dữ liệu hướng tài liệu, các dữ liệu được lưu trong document kiểu JSON nên việc truy vấn rất nhanh và khả năng mở rộng tốt, nó hoạt động trên khái niêm collection và document

Collection trong MongoDB là nhóm các tài liệu (document), nó tương đương với

bảng (table) trong các cơ sở dư liệu khác Tuy vậy sự khác biệt đó là nó không có ràng

buộc mối quan hệ các hệ cơ sở dữ liệu, vì vậy mỗi collection có thể chứa nhiều thể loại dữ liệu khác nhau không giống như bảng trong hệ quản trị mySQL là các trường cố định

Document trong MongoDB có cấu trúc kiểu JSON, được thể hiện dưới dạng các cặp key-value nên có tính năng động lớn Document cũng giống như các record dữ liệu trong MySQL, tuy nhiên sự khác biệt ở đây đó là các cặp key-value có thể không giống nhau ở

Ngày đăng: 10/07/2018, 23:50

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w