Tải bản đầy đủ (.docx) (91 trang)

Khóa luận tốt nghiêp sàn giao dịch nông nghiệp

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.43 MB, 91 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

PHẠM THANH ĐỨC
NGUYỄN THÀNH CƠNG

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

SÀN GIAO DỊCH NƠNG NGHIỆP
THE AGRICULTURE TRADING

KỸ SƯ/ CỬ NHÂN NGÀNH KĨ THUẬT PHẦN MỀM


TP. HỒ CHÍ MINH, 2020


ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

PHẠM THANH ĐỨC – 16520246
NGUYỄN THÀNH CƠNG – 16520131

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

SÀN GIAO DỊCH NÔNG NGHIỆP
THE AGRICULTURE TRADING



KỸ SƯ/ CỬ NHÂN NGÀNH KĨ THUẬT PHẦN MỀM

GIẢNG VIÊN HƯỚNG DẪN
HUỲNH NGUYỄN KHẮC HUY

TP. HỒ CHÍ MINH, 2020


THƠNG TIN HỘI ĐỒNG CHẤM KHĨA LUẬN TỐT NGHIỆP

Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ……………………
ngày ………………….. của Hiệu trưởng Trường Đại học Công nghệ Thông tin.


LỜI CẢM ƠN
Nền kinh tế - xã hội hiện nay ngày càng phát triển và tiến bộ, đặc biệt là lĩnh
vực cơng nghệ thơng tin, địi hỏi mọi người phải liên túc tiếp thu cái mới kể các
các hộ nông dân phải tiếp thu khoa học kĩ thuật công nghệ vào sản xuất lẫn
buôn bán cụ thể là nông dân cần thiết sử dụng các thiết bị công nghệ tiên tiến
trong sản xuất lẫn bn bán điển hình là áp dụng hình thức giao dịch tìm kiếm
nhà đầu tư thơng qua các ứng dụng trực tuyến. Từ đó năng cao hiệu suất, thuận
lợi cho nông dân lẫn các nhà đầu tư trao đổi giảm bớt chi phí vận chuyển. Chính
vì vậy việc sử dụng các ứng dụng trực tuyến cần được quan tâm và có phương
pháp tối ưu để giúp người dân thuận tiện nhưng vẫn đạt hiệu quả cao.
Là sinh viên của Khoa Công nghệ Phần Mềm kết hợp với nhưng kết quả thu
được từ quá trình thực tập nên nhóm em đã chọn đề tài: “Sàn giao dịch nơng
nghiệp” làm đề tài khố luận tốt nghiệp của nhóm.
Em xin chân thành cảm ơn Giảng viên Huỳnh Nguyễn Khắc Huy, trường đại học
Công nghệ Thông tin Đại học quốc gia Thành phố Hồ Chí Minh trong thời gian

quan đã tận tình hướng dẫn em trơng suốt quá trình viết và hồn thành khố
luận tốt nghiệp này.
Với thời gian thực tập hạn chế, sự hiểu biết có hạn, khố luận khơng thể tránh
khỏi có những thiếu sót. Em rất mong nhận được sự đóng góp ý kiến của thầy,
cơ giáo để nội dung khố luận có thể được hồn thiện hơn, và giải quyết một
cách tốt nhất các vấn đề nhầm hồn thiện ứng dụng sàn giao dịch nơng nghiệp
Em xin chân thành cảm ơn!
Sinh viên
Phạm Thanh Đức
Nguyễn Thành Công


ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CƠNG NGHỆ THƠNG TIN
__________________________

CỘNG HỒ XÃ HỘI CHỦ NGHĨA VIỆT
NAM
Độc Lập – Tự Do – Hạnh Phúc
__________________________

ĐỀ CƯƠNG CHI TIẾT KHÓA LUẬN TỐT NGHIỆP
Tên đề tài: Sàn giao dịch nông nghiệp
Cán bộ hướng dẫn: Huỳnh Nguyễn Khắc Huy
Thời gian thực hiện: Từ ngày 07/09/2020 đến ngày 02/01/2021
Sinh viên thực hiện:
1. Nguyễn Thành Công: 16520131
2. Phạm Thanh Đức: 16520246
Nội dung đề tài:

● Mục tiêu: Tạo ra một sân chơi dành cho ngành nông nghiệp nước nhà, nơi mà
người bán và người mua có thể trao đổi trực tiếp với nhau cũng như tìm kiếm
đối tác cho sự phát triển song phương giữa người bán và người mua hoặc giữa
người bán và nhà đầu tư. Bên cạnh đó, các thành viên cũng có thể trao đổi và
chia sẻ kinh nghiệm trong công việc canh tác, nuôi đồng để giúp các thành
viên trong cộng động có được những kiến thức quan trọng đối với nông
nghiệp.
● Đối tượng: Nông dân, thương lái, nhà đầu tư hoặc các cửa hàng, doanh nghiệp
có nhu cầu.
● Phương pháp thực hiện: Làm việc nhóm, vận dụng các kĩ năng và thế mạnh
cá nhân về back-end hoặc front-end và các kinh nghiệm trong q trình làm
việc ở cơng ty.
● Kết quả mong đợi: Hoàn thành một hệ thống như là một sàn giao dịch nông
nghiệp cho các đối tượng cụ thể, nơi mà nơng dân (người bán) có thể chủ động
hơn đối với các sản phẩm của mình đồng thời những thương lái, người mua,
doanh nghiệp cũng có cái nhìn tổng quan hơn về các sản phẩm của người bán
để có thể lựa chọn được các mặt hàng sản phẩm với lợi ích tối ưu nhất. Bên
cạnh đó, hệ thống forum sẽ là nơi các thành viên có thể trao đổi và chia sẻ
những kinh nghiệm trong quá trình canh tác, trồng trọt, chăn nuôi để giúp các
thành viên khác có được những kiến thức hữu ích đối với lĩnh vực nông
nghiệp.


Kế hoạch thực hiện: (thời gian thực hiện trong 16 tuần)

STT

Cơng việc

Phase 1: Tìm hiểu về thị trường nơng

nghiệp, các nhu cầu người bán, mua
1

Sprint 1: Tìm hiểu các định nghĩa
về nông nghiệp

Thời gian thực hiện
3 tuần
Tuần 1
(07/09/2020 –
14/09/2020)

- Nông nghiệp là gì?
1.1

- Các sản phẩm liên quan đến nơng
nghiệp
- Nền nông nghiệp nước nhà
- Các đặc điểm về nông nghiệp từng
khu vực

2

Sprint 2: Tìm hiểu các sàn giao
dịch oneline và tổng qt hố mơ
hình về sàn giao dịch nơng nghiệp

Tuần 2
(15/09/2020 –
22/09/2020)


- Các sàn giao dịch online như
Shopee, Lazada, Tiki, …
2.1

- Hệ thống nông sản online như
Vidas
- Các forum

3

Sprint 3: Tìm hiểu nghiệp vụ sàn
giao dịch

Tuần 3
(23/09/2020 –
30/09/2020)

- Quy trình đăng kí, tạo tài khoản
- Quy trình đăng sản phẩm
3.1

- Quy trình mua sản phẩm
- Quy trình thanh tốn
- Quy trình vận chuyển

Phase 2: Xây dựng hệ thống

10 tuần


4

Tuần 4

Sprint 4: Thiết kế database, các sơ

Phân công


đồ, các cơng nghệ
4.1

Use case diagram

4.2

Sequence diagram

4.3

Activity diagram

4.4

Thiết kế database

4.5

Tìm hiểu định vị một số công nghệ
áp dụng cho ứng dụng


5

Sprint 5: Xây dựng trang đăng ký,
đăng nhập

5.1

Thiết kế giao diện

5.2

Thiết kế các service API cho đăng
ký đăng nhập

(01/10/2020 –
07/10/2020)

Tuần 5
(08/10/2020 –
15/10/2020)

Tuần 6
6

Sprint 6: Xây dựng trang chủ

6.1

Thiết kế giao diện và bố cục


6.2

Thiết kế service API cho trang chủ

7

Sprint 7: Xây dựng trang quản lý
tài khoản

7.1

Thiết kế giao diện trang quản lý tài
khoản

7.1.1

Thông tin tài khoản và cập nhật tài
khoản

7..1.2

Thông tin cửa hang, các sản phẩm

7.1.3

Các thông báo

7.1.4


Các đơn hang mua và bán

7.1.5

Các bài đăng trên diễn đàng

7.1.6

Tài khoản thành viên

7.1.7

Thanh toán và vận chuyển

7.2

Thiết kế service API cho trang quản

(16/10/2020 –
23/10/2020)

Tuần 7 -8
(24/10/2020 –
7/11/2020)


lý tài khoản
8

Sprint 8: Xây dựng trang chi tiết

cho sản phẩm và trang mua sản
phẩm

8.1

Thiết kế giao diện trang chi tiết sản
phẩm

8.1.1

Thông tin sản phẩm, cửa hang, giá
bán

8.1.2

Các sản phẩm liên quan, (cùng cửa
hang, cùng danh mục,…)

8.2

Thiết kế giao diện trang mua sản
phẩm

8.2.1

Thông tin chi tiết và tổng quát của
đơn hang (sản phẩm, số lượng, đơn
giá, thành tiền)

8.2.2


Thông tin thanh tốn và hình thức
thanh tốn

8.3

Thiết kế các service API cho trang
chi tiết sản phẩm và trang mua sản
phẩm

Tuần 9
(8/11/2020 –
15/11/2020)

Tuần 10
9

Sprint 9: Xây dựng forum

9.1

Xây dựng giao diện trang chủ

9.1.1

Thiết kế giao diện hiển thị danh sách
bài đăng

9.1.2


Thiết kế và bố trí các danh mục bài
đăng (new, hot, …), thanh tìm kiếm,


10

Sprint 10: Xây dựng chi tiết bài
đăng

10.1

Thiết kế giao diện

10.1.1

Tổng quan về bài đăng (nội dung,
hình ảnh, danh mục)

(16/11/2020 –
23/11/2020)

Tuần 11
(24/11/2020 –
01/12/2020)


10.1.2

Các bình luận về bài đăng


10.2

Thiết kế các service API cho trang
chi tiết bài đăng

11

Sprint 11: Xây dựng một số chức
năng phụ

11.1

Real-time notification

11.2

Báo cáo

11.3

Tỉ giá nông sản

Tuần 12
(02/12/2020 –
09/12/2020)

2 tuần
Phase 3: Xây dựng hệ thống admin
12


Sprint 12: Thiết kế trang admin

12.1

Thiết kế giao diện admin

(10/12/2020 –
24/12/2020)

12.1.1 Trang quản lý tài khoản
12.1.2 Trang phân quyền tài khoản
12.1.3 Trang xử lý các report, feedback
12.2

Thiết kế các service API cho trang
admin
2 tuần

Phase 4: Kiểm thử và đóng gói sản phẩm
13

Sprint 13: Kiểm thử và sửa lỗi

14

Sprint 14: Đóng gói sản phẩm

Xác nhân của CBHD
(Ký tên và ghi rõ họ tên)


(25/12/2020 –
02/01/2020)

TP.HCM, ngày tháng năm 2021
Sinh viên
(Ký tên và ghi rõ họ tên)


MỤC LỤC

DANH MỤC SƠ ĐỒ


DANH MỤC BẢNG


DANH MỤC HÌNH


DANH MỤC TỪ VIẾT TẮT
SGDNN

Sàn giao dịch nông nghiệp

ƯD

Ứng dụng

DI


Dependentcy Injection

REST

REpresentational State Transfer

API

Application Programming Interface

DDD

Domain Driven Design

SOA

Service-oriented Architecture

Redis

Remote Dictionary Server


TĨM TẮT KHĨA LUẬN
Khóa luận với đề tài Sàn nơng nghiệp sử dụng ASP.NET Core và Angular được xây
dựng trên hệ thông website, giúp người tiêu dùng, hộ nông dân, nhà đầu tử dễ dàng
hơn trong việc tìm kiếm sản phẩm, nguồn đầu tư
Sàn giao dịch nông nghiệp áp dụng cho các loại hộ kinh doanh vừa và nhỏ. Khi mà
nhu cầu trao đổi, mua bán hàng hóa trực tuyến đang ngày một tăng cao đi đôi với
công nghệ hiện tại để hỗ trợ ngươi tiêu dùng, hộ đầu tư có thể đơn giản hóa q

trình mua bán cũng như trao đổi kinh nghiệm đồng thời giúp lẫn nhau tìm kiếm
được nguồn nông sản, nhà đầu tư mà không cần quá nhiều quy trình phức tạp.
Về mặt nghiệp vụ, hệ thống đã xây dựng mơ hình quản lý sản phẩm, đặt hàng, giao
hàng ở bất kì mọi nơi bất kì thời điểm. Hệ thống hỗ trợ từng hộ nông dân có thể tạo
từng gian hàng của mình nhằm mục đích giới thiệu sản phẩm, thu hút nhà đầu tư
Khóa luận sử dụng và kết hợp nhiều loại công nghệ mới, giúp kết nối hài hịa và
đem lại lợi ích và hiệu quả tốt nhất cho ứng dụng. Như, ASP.NET Core, GraphQL,
TypeScript, Angular,Docker.

MỞ ĐẦU
Từ xa xưa, nông nghiệp là nghành sản xuất vật chất cơ bản nhất của xã hội, sử dụng
đất đai để trồng trọt và chăn nuôi, khai thác cây trồng và vật nuôi làm tư liệu lao

15


động chủ yếu để tạo ra lương thực, thực phẩm và một số nguyên liệu cho các
nghành liên quan khác. Nông nghiệp là một nghành sản xuất lơn bao gồm nhiều
chuyên nghành như: trồng trọt, chăn nuôi, sơ chế nông sản. Nông nghiệp là một
nghành kinh tế vô cùng quan trọng của nhiều nước trên thế giới đặc biệt là nước ta
khi nông nghiệp là nghành mũi nhọn trong công cuộc phát triển đất nước.
Trong thời đại công nghệ tiên tiến hiện nay, cơng nghệ đã góp phần trợ giúp cho
người dân cũng như các chủ đầu tư dễ dàng lựa chọn, giao dịch với nhau, khắc phục
được cái khó khăn lớn nhất trong nông nghiệp khi trước là vấn đề tìm kiếm nhà đầu
tư hay nhà tiêu dùng của các hộ nơng dân hay các chủ đầu tư tìm kiếm nguồn lương
thực thực phẩm phù hợp với yêu cầu của mình.
Hiện này lượng người sử dụng internet đang ngày càng tăng, gần như mọi người
mọi nhà đều sử dụng dịch vụ internet cùng với nhu cầu mua bán hang hố một cách
nhanh chóng và hiệu quả đã xuất hiện hình thức trao đổi bn bán trực tuyến. Ứng
dụng web Sàn giao dịch nơng nghiệp của của nhóm chúng em hỗ trợ tạo ra một sân

chơi dành cho ngành nông nghiệp nước nhà, nơi mà giúp người bán tạo gian hàng
trực tiếp để giới thiệu, tiếp thị sản phẩm, giới thiệu dịch vụ đến người tiêu dùng,
Giúp người bán tìm kiếm và kết nối đối tác phù hợp cho sự phát triển song phương
với người tiêu dùng hay nhà đầu tư, giúp người mua ( Nhà phân phối, đại lý, CTV,
khách hàng) tìm được Nhà sản xuất, nhà cung cấp, đối tác phù hợp với nhu cầu của
mình. Bên cạnh đó, các thành viên cũng có thể trao đổi và chia sẻ kinh nghiệm
trong công việc canh tác, nuôi đồng để giúp các thành viên trong cộng động có
được những kiến thức quan trọng đối với nông nghiệp. Ứng dụng bao gồm các
chính sách hỗ trợ cũng như giải quyết các vấn đề về tranh chấp, thanh tốn, bảo mật
thơng tin sản phẩm lẫn thông tin cá nhân, văn bản tài liệu quy phạm pháp luật
nghành nông nghiệp.

16


hương 1
1.1.

TỔNG QUAN VỀ ĐỀ TÀI
Lí do chọn đề tài

Sàn giao dịch nông nghiệp là một khâu quan trọng, quyết định năng suất, thành
công cũng như cơ hội cho hộ nông dân hay nhà đầu tư. Hiểu rõ được nhu cầu, tầm
quan trọng trong ứng dụng sàn giao dịch quyết định không nhỏ đến nguồn cung,
năng suất cũng như hiệu suất của hộ nông dân hay nhà đầu tư
Hiện nay do xu hướng cơng nghệ hóa phát triển ngày càng vượt bậc mọi người đã
chú trọng tới những lợi ịch mà nó mang lại đối với đời sống sinh hoạt cũng như là
trong đời sống sản xuất của chúng ta. Nắm rõ được những điểm mạnh điểm yếu đi
đôi với những lợi ích khó khăn mà internet mang lại cho chúng ta kể từ đó ứng dụng
vào việc phát triển những phần mềm, website hỗ trợ cho việc trao đổi mua bán với

nhau một cách nhanh chóng và tiện lợi.
Trong thời đại khoa học kĩ thuật tiên tiến, công nghệ thơng tin bùng nổ, việc đưa
một số q trình trong mua bán trao đổi hàng hóa áp dụng các kĩ thuật tiên tiến của
công nghệ thông tin nhằm rút ngắn chi phí, nhân lực, vật tư do các hộ nơng dân lẫn
nhà đầu tư mang lại sự tiện lợi và ưu việt cho người sử dụng. Ứng dụng sàn giao
dịch nơng nghiệp có hướng tiếp cận dễ dàng với ưu điểm chi phí thấp, tạo cơ hội
tiếp cận với các công nghệ hiện đại.
1.2.

Mục tiêu đề tài

Ứng dụng sàn giao dịch nông nghiệp được xây dựng nhằm tạo ra một sân chơi dành
cho nghành nông nghiệp trong nước nơi mà người bán và người mua có thể trao đổi
trực tiếp với nhau cũng như tìm kiếm đối tác cho sự phát triển song phương giữa
người bán và người mua hoặc giữa các hộ nông dân với nhà đầu tư. Bên cạnh đó,
các thành viên cũng co thể trao đổi với nhau chia sẻ kinh nghiệm trong công việc
canh tác, nuôi trồng để giúp các thành viên trong cộng đồng đạt được những kiến
thức cần thiết.

17


1.3.

Đối tượng và phạm vi nghiên cứu

1.3.1. Đối tượng nghiên cứu
Đối tương nghiên cứu của luận án là các hộ nông dân, nhà đầu tư, hoặc các cửa
hang , doanh nghiệp có nhu cầu mua bán , giới thiệu sản phẩm cũng như tìm kiếm
và kết nối với các đối tác.

1.3.2. Phạm vi nghiên cứu
Phạm vi nghiên cứu của luận án bao hàm trong nước , song tập trung chủ yếu ở các
vùng nông nghiệp trọng điểm, các thành phố lớn thuân lợi cho việc mua bán , trao
đổi sản phẩm.
1.4.

Phương pháp nghiên cứu

Khoá luận sử dụng các phương pháp nghiên cứu hướng tới thực tiễn để phát triển và
hoàn thiện ứng dụng:
-

Phân tích khảo sát nhu cầu của người dùng cũng như các hộ nông dân nhà
đầu tư bằng các tin tức và ứng dụng trên thị trường
Thu thập thơng tin, tìm hiểu và nghiên cứu về các kỹ thuật, công nghệ cần
thiết để hỗ trợ cho việc xây dựng ứng dụng đáp ứng yêu cầu đề ra
Xấy dựng ứng dụng dựa trên kỹ thuật trên, tiến hành kiểm thử song song với
quá trình xây dựng
Đánh giá và so sánh kết quả đạt được với mục tiêu ban đầu đưa ra. Điều
chỉnh và khác phục sự cố
Hoàn thiện ứng dụng, tiến hành khảo sát thu thập đánh giá của người dùng

18


Chương 2. CƠ SỞ LÝ THUYẾT
2.1.

ASP.NET Core


2.1.1. Giới thiệu
-

ASP.NET Core [1] là framwork đa nền tảng, hiệu năng cao, mã nguồn mở
[2] để xây dựng các ứng dụng kết nối internet hiện đại, dựa trên đám mây.
Với ASP.Net Core ta có thể:
+ Xây dựng ứng dụng và dịch vụ web, ứng dụng IoT, backend cho ứng
dụng di động
+ Sử dụng các cơng cụ phát triển u thích của bạn trên Windows,
Linux và macOS.
+ Triển khai tại chỗ hoặc trên đám mây.
+ Chạy được trên cả .NET Core hoặc .NET Framework.
2.1.2. Tại sao nên sử dụng ASP.NET Core [3]

-

-

Hàng triệu nhà phát triển đã và đang tiếp tục sử dụng ASP.NET 4.x để tạo ra
các ứng dụng web. ASP.NET Core là một thiết kế lại của ASP.NET 4.x. Với
những thay đổi về kiến trúc giúp cho framework gọn gàng hơn, module hóa
hơn.
ASP.NET Core đem lại nhiều lợi ích nhưng có thể kể đến một vài
lợi ích tiêu biểu như sau:
+ Cung cấp một giải pháp thống nhất để xây dựng giao diện người dùng
web và web API.
+ Kiến trúc cho khả năng kiểm tra [4].
+ Razor Pages [5] giúp mã hóa các kịch bản tập trung vào trang dễ dàng
hơn và hiệu quả hơn.
+ Có khả năng phát triển và chạy trên Windows, macOS và Linux [6].

+ Nguồn mở và tập trung vào cộng đồng.
+ Tích hợp hiện đại các framework client-side và quy trình phát triển.
+ Một hệ thống cấu hình dựa trên mơi trường, sẵn sàng cho đám mây.
+ Tích hợp tiêm phụ thuộc [7] (dependency injection).
+ Một đường ống yêu cầu HTTP nhẹ, hiệu suất cao và mô-đun [8].
+ Khả năng lưu trữ trên IIS, Nginx,, Docker hoặc tự lưu trữ trong quy
trình của riêng bạn [9]
+ Cơng cụ phát triển web đơn giản và hiện đại [10].

19


2.1.3. Áp dụng ASP.NET Core vào đề tài
-

ASP.NET Core là một nền tảng mới, hiện đại hơn, của Microsoft, có thể coi:
.NET Core nói chung và ASP.NET Core là một sự mở rộng của người tiền nhiệm
.NET. Sử dụng ASP.NET trong ứng dụng này đem lại một số lợi thế nhất định
như:
+ Hỗ trợ kiểu dữ liệu tĩnh rất mạnh mẽ, hạn chế tối đa lỗi không mong
muốn xuất hiện trong q trình phát triển.
+ Nhờ có kiểu dữ liệu tĩnh mà việc kết hợp với Angular trở nên dễ dàng
hơn. Khi mà Angular nhấn mạnh về kiểu dữ liệu, tính chính xác của
dữ liệu.
+ ASP.NET Core là đa nền tảng, điều này khiến ứng dụng dễ dàng phát
triển hơn khi mà có thể dễ dàng chạy trên các nền tảng khác mà khơng
cần thay đổi bất cứ gì trong mã nguồn.
2.2.

MongoDb


2.2.1. Giới thiệu
-

MongoDB [11] là một chương trình cơ sở dữ liệu mã nguồn mở được thiết
kế theo kiểu hướng đối tượng trong đó các bảng được cấu trúc một cách linh
hoạt cho phép các dữ liệu lưu trên bảng không cần phải tuân theo một dạng
cấu trúc nhất định nào. Chính do cấu trúc linh hoạt này nên MongoDB có thể
được dùng để lưu trữ các dữ liệu có cấu trúc phức tạp và đa dạng và khơng
cố định (hay còn gọi là Big Data).
2.2.2. Tại sao lại sử dụng MongoDb

-

MongoDB đem lại nhiều lợi ích nhưng có thể kể đến một vài lợi ích tiêu biểu
như sau:
+ Ít Schema hơn: dựa trên Document, trong đó một Collection giữ các
Document khác nhau. Số trường, nội dung và kích cỡ của Document
này có thể khác với Document khác
+ Cấu trúc một đối tượng rõ ràng
+ Khơng có cá join phức tạp
+ Khả năng truy vấn sâu hơn, hỗ trợ các truy vấn động trên các
Document bởi sử dụng một ngôn ngữ truy vấn dựa trên Document mà
mạnh mẽ như SQL.
+ MongoDb dễ dàng để mở rộng
+ Việc chuyển đổi/ánh xạ của các đối tượng ứng dụng đến các đối tượng
cơ sở dữ liệu là không cần thiết.
+ Sử dụng bộ nhớ nội tại để lưu giữ phần công việc, giúp truy cập dữ
liệu nhanh hơn.


20


2.2.3. Áp dụng MongoDb vào đề tài
-

MongoDb là một chương trình cơ sở dữ liệu dạng NoSQL mới khơng ràng
buộc cũng như quan hệ chặt chẽ như SQL nhưng hỗ trợ truy vấn mạnh mẽ
nên dễ dàng sử dụng, hiệu quả
MongoDb kết hợp cùng microservice giúp tăng nhanh tốc độ truy suất dữ
liệu cũng như mở rộng dự án.

2.3.

Microservice

2.3.1. Giới thiệu
-

Microservices [12] là một kỹ thuật phát triển phần mềm, một biến thể của
kiến trúc dịch vụ (SOA) [13], cấu trúc một ứng dụng như là một tập hợp các
dịch vụ được ghép lỏng lẻo. Trong kiến trúc microservices các dịch vụ được
xử lý tốt và giao tiếp rất nhẹ. Lợi ích của việc phân tách ứng dụng thành các
dịch vụ nhỏ hơn là nó cải thiện tính module. Điều này làm cho ứng dụng dễ
hiểu, dễ phát triển, thử nghiệm, bảo trì và .trở nên linh hoạt hơn. Nó phát
triển một cách độc lập với nhau để đảm bảo hệ thống vẫn hoạt động khi có
một dịch vụ nào đó bị hỏng. Cấu trúc microservice cho phép phân phối và
triển khai liên tục
2.3.2. Tại sao sử dụng microservice


-

Microservice được xây dựng bởi một hoặc nhiều các service nhỏ hơn ngay từ
đầu nên sẽ giúp cho chúng ta dễ dàng mở rộng và phát triển ứng dụng
Các service có thể triển khai một cách độc lập do đó dễ dàng xác định được
các service bất kỳ, hệ thống của chúng ta sẽ khơng bị ảnh hưởng do service
đó lỗi và do đó hệ thơng cũng khơng nhất thiết phải tạm ngừng hoạt động.
Một số lợi ích khác là kiến trúc microservice sẽ sắp xếp mọi thứ dưới dạng
bảng giúp bạn dễ dàng lựa chọn các công nghệ (ngôn ngữ lập trình, cơ sở dữ
liệu,…) phù hợp với các chức năng (service) được yêu cầu nhất thay vì
chúng ta bắt buộc phải thực hiện cách tiếp cận tiêu chuản, phải phù hợp với
tất cả.
2.3.3. Áp dụng microservice vào đề tài

2.4.

Domain Driven Design (DDD)

2.4.1. Giới thiệu
-

Domain Driven Design (DDD) [14] là một cách tiếp cận để phát triển những
phần mềm phức tạp thông qua sự kết nối chặt chẽ giữa việc triển khai ứng
dụng với sự phát triển của mơ hình kinh doanh.

21


-


Domain model là cách chúng ta hiểu biết về thế giới thực và những vấn đề
mà phần mềm chúng ta cần phải giải quyết. Là cách thiết kế kiến trúc ở mức
độ hệ thống chứ không phải mức độ class như MVC hay các design pattern
khác. Với mơ hình DDD, chúng ta phải đi từ domain, hay nói tổng quát là đi
từ nghiệp vụ của project sau đó mới đến phần design. Trong đó ứng dụng sẽ
được chia thành 4 layer như sau:

Sơ đồ 1: Sơ đồ mơ hình DDD
-

-

-

-

User Interface: Làm nhiệm vụ biểu diễn thông tin trực quan cho user và dịch
các thơng tin command (ở đây có thể hiểu là các sự kiện xảy ra trên giao diện
khi được trigger (nhấn nút trên các UI Input control) là sẽ được dịch thành
các command xử lý ở tầng dưới).
Application Layer: Tầng này được thiết kế khá mỏng, với ít login xử lý chỉ
để làm nhiệm vụ kết nối các Activity của Application và khơng chứa
Business Logic, nó khơng chứa các state của Business Object mà chỉ chứa
state của Application Task Progress. Chúng ta có thể hình dung phần này gần
giống như Controller trong mơ hình MVC.
Domain Layer: Đây là trái tim của ứng dụng (Business Software), các state
của Business Object đều nằm ở đây. Việc lưu trữ (persistence) các Business
Object và các state của nó sẽ được chuyển giao đến tầng Infrastructure ở
dưới. Trái tim của mơ hình này chính là phần Domain Layer, các nghiệp vụ
sẽ được mô tả tại đây và cấu trúc source code cũng theo tên nghiệp vụ chứ

không giống như MVC truyền thống.
Infrastructure: Đóng vai trị cung cấp thư viện cho các tầng khác nhau. Nó
cung cấp cơ chế giao tiếp giữa các Layer với nhau cũng như cung cấp các
chứng năng lưu trữ Business Object.

22


2.4.2. Tại sao sử dụng DDD
-

-

DDD có những ưu điểm để thích hợp cho việc xây dựng ứng dụng như:
+ Giải quyết các bài tốn có nghiệp vụ phức tạp
+ Tư duy mới mẻ về hệ thống
+ Phần mềm trở nên linh hoạt
+ Phần mềm phản ánh đúng tư duy của khách hàng.
+ Logic nghiệp vụ nằm ở một chỗ, dễ quản lý.
+ Mã nguồn tổ chức tốt, dễ test
+ Nhiều Design Pattern hữu ích
Tuy nhiên bên cạnh đó vẫn cịn mặt hạng chế đó là DDD rất khó học, khó
thành thạo, khó trong giao tiếp và chi phí lớn
2.4.3. Áp dụng DDD vào đề tài

-

Với các ưu điểm mà DDD mang lại cùng với độ phức tạp của dự án có nhiều
nghiệp vụ phức tạp sẽ khiến cho developer có cái nhìn tổng qt hơn về
source code hệ thống cũng như dễ dàng bảo trì và sửa chữa.

DDD là một trong những kiến trúc microservice rất mới và có sự kết hợp
chặt chẽ giữa nhu cầu người dùng và người phát triển khi mà các giao tiếp
đều được đặt vào một ngơn ngữ chung, do đó khi sản phẩm đến tay người
dùng sẽ dễ dàng đón nhận.

2.5.

Rabbit MQ

2.5.1. Giới thiệu
-

-

RabbitMQ [15] là một Message Broker mã nguồn mở, ban đầu được dùng
cho Advanced Message Queuing Protocol (AMQP), sau đó phát triển thành
Streaming Text Oriented Messaging Protocol (STOMP), Message Queuing
Telemetry Transport (MQTT), và những giao thức khác.
RabbitMQ được viết bằng Erlang, một ngơn ngữ khơng phổ biến nhưng nó
phù hợp với công việc của một Message Broker.
RabbitMQ và trong messaging nói chung sử dụng những thuật ngữ sau:
+ Producing có nghĩa đơn giản là gửi. Ứng dụng gửi message được gọi
là Producer.
+ Queue là một post-box nằm trong RabbitMQ. Message di chuyển từ
RabbitMq và ứng dụng của bạn nhưng chúng chỉ có thể lưu trong
queue. Queue được giới hạn trong memory và disk của host. Về bản
chất nó là một bộ nhớ đệm message với dữ liệu lớn. Nhiều Producer
có thể gửi message vào một Queue và message có thể được nhận bởi
nhiều Consumer từ một Queue.
+ Consuming có nghĩa như là nhận. Ứng dụng nhận message được gọi

là Consumer

23


2.5.2. Message Broker là gì?
-

Message Broker [16] (hay cịn gọi là integration broker hoặc interface
engine) là một module trung gian trung chuyển message từ người gửi đến
người nhận. Nó là một mơ hình kiến trúc (architectural pattern) để kiểm tra,
trung chuyển và điều hướng message; làm trung gian giữa các ứng dụng với
nhau, tối giản hóa giao tiếp giữa các ứng dụng đó và để tăng hiệu quả tối đa
việc tách ra các khối nhỏ hơn. Nhiệm vụ chính của Message Broker là tiếp
nhận các message từ các ứng dụng và thực hiện một thao tác nào đó.

24


Sơ đồ 2: Sơ đồ sequence Message Broker
-

Hiện tại có rất nhiều Message Broker có thể kể đến như là: Amazon Web
Service (AWS), Simple Queue Service (SQS), Apache Kafka, Apache
ActiveMQ. Nhưng phổ biến nhất đó là RabbitMQ.

25



×