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

Báo cáo phân tích tìm hiểu graphql hot chocolate xây dựng ticket

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 (2.01 MB, 46 trang )

TRƯỜNG ĐẠI HỌC ĐẠI NAM
KHOA CÔNG NGHỆ THÔNG TIN

THỰC TẬP TỐT NGHIỆP

TÊN ĐỀ TÀI:

TÌM HIỂU GRAPHQL HOT CHOCOLATE
XÂY DỰNG TICKET

Sinh viên viên thực hiện :

Nguyễn Hoàng Cầm

Giảng viên hướng dẫn :

Lê Chí Luận

Lớp:

CNTT12-01

Khóa:

2018-2022

Hệ:

Đại học chính quy

HÀ NỘI- NĂM2022




TRƯỜNG ĐẠI HỌC ĐẠI NAM
KHOA CÔNG NGHỆ THÔNG TIN

HỌ VÀ TÊN SINH VIÊN
NGUYỄN HỒNG CẦM

TÊN ĐỀ TÀI:

TÌM HIỂU GRAPHQL HOT CHOCOLATE XÂY DỰNG
TICKET
CHUYÊN NGHÀNH:

CÔNG NGHỆ THÔNG TIN

MÃ SỐ:

74.80.201

NGƯỜI HƯỚNG DẪN:
ThS:Lê Chí Luận

HÀ NỘI- NĂM2022


MỤC LỤC
Nội dung
LỜI MỞ ĐẦU...............................................................................................................0
LỜI CẢM ƠN...............................................................................................................1

CHƯƠNG 1: GIỚI THIỆU CHUNG.........................................................................2
1 .1 Giới thiệu về Công ty Cổ Phần Công Nghệ và Truyền Hình 4.0 Việt Nam. 2
1.2. Các kỹ năng mềm đã học được tại công ty:....................................................2
1.2.1.Bài học về sự tự tin và chủ động................................................................2
1.2.2.Nâng cao và hoàn thiện kỹ năng mềm.......................................................2
1.2.3Trải nghiệm trong môi trường làm việc thực tế........................................2
CHƯƠNG 2: TỔNG QUAN VỀ ĐỀ TÀI...................................................................1
2.1. Lý do chọn đề tài...............................................................................................1
2.2. Tổng quan về vấn đề nghiên cứu:....................................................................1
3.3. Mục đích nghiên cứu.........................................................................................1
4.4.Kết quả đạt được................................................................................................2
CHƯƠNG 3 : CƠ SỞ LÝ LUẬN................................................................................3
3.1.GraphQL là gì?......................................................................................................3
3.2. Những tính năng vượt trội của GraphQL.............................................................4
3.2.1.Graph có thể thay thế chó REST.....................................................................4
3.2.2 Tính năng về Defining schema and Type system.............................................4
3.2.3 Tính năng về Fetching data – Query...............................................................4
3.2.4 Tính năng về Mutations..................................................................................4
3.3 Những yếu tố chính tạo ra GraphQL.....................................................................5
3.3.1 Yếu tố Query................................................................................................5
3.3.2.Yếu tố Resolvers.............................................................................................6
3.3.3. Yếu tố Schema............................................................................................6
3.3.4 Hot chocolate...............................................................................................6
3.4.Cơ sở dữ liệu.......................................................................................................6


3.4.1 Khái niệm.....................................................................................................7
3.4.2 Các thành phần cơ bản trong SQL Server................................................7
3.4.3 Phân tích thiết kế hướng đối tượng...........................................................7
3.4.3 Ứng dụng và ngôn ngữ để phát triển đề tài..............................................9

CHƯƠNG 4 : PHÂN TÍCH HỆ THỐNG...............................................................12
4.1 Đặc tả u cầu...................................................................................................12
4.1.1 Mơ tả đề tài:...............................................................................................12
4.1.2 Mô tả về chức năng...................................................................................12
4.1.3 Các yêu cầu phi chức năng.......................................................................12
4.2 Phân tích thiết kế hệ thống..............................................................................12
4.2.1 Back-end.....................................................................................................12
4.2.2 Font-end.....................................................................................................12
4.3 Biều đồ use case................................................................................................13
4.3.1: Graphql hoạt động...................................................................................13
4.3.2: biểu đồ Use -case tổng quát.....................................................................15
4.3.3 Use case đăng nhập...................................................................................16
4.3.4: Use case Ticket.........................................................................................17
4.3.5 Use case Department(Phòng ban)............................................................18
4.4 biểu đồ tuần tự..................................................................................................18
4.4.1 Biểu đồ tuần tự chức năng đăng nhập.....................................................19
4.4.2 Biểu đồ tuần tự quản lý admin.................................................................19
4.5 Biểu đồ lớp........................................................................................................20
4.5.1 Danh sách các đối tượng...........................................................................20
4.5.2 Mơ hình các lớp đối tượng........................................................................21
4.6 Thiết kế cơ sở dữ liệu.......................................................................................21
4.6.1 Danh sách bảng.........................................................................................21
4.6.2 Bảng Use.....................................................................................................22
4.6.3 Bảng Ticket................................................................................................22
CHƯƠNG 5: DEMO..................................................................................................23


5.1.Giao diện Back end..........................................................................................23
5.1.1.Query..........................................................................................................23
5.1.2.Mutation.....................................................................................................25

5.2.Giao diện Font end...........................................................................................26
5.2.1: Login.........................................................................................................26
5.2.2: Ticket.........................................................................................................28
5.2.3:Bảng dữ liệu...............................................................................................29
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN................................................................30
TÀI LIỆU THAM KHẢO.........................................................................................31


DANH SÁCH BẢNG
Bảng 4.1.3 Yêu cầu chức năng.
Bảng 4.3.2: biểu đồ Use -case tổng quát
Bảng 4.3.3 Use case đăng nhập
Bảng 4.3.4: Use case Ticket
Bảng 4.3.5 Use case Department(Phòng ban)
Bảng 4.4.1 Biểu đồ tuần tự chức năng đăng nhập
Bảng 4.4.2 Biểu đồ tuần tự quản lý admin
Bảng 4.5.1 Danh sách các đối tượng
Bảng 4.6.1 Danh sách bảng Ticket
Bảng 4.6.2 Bảng Use
Bảng 4.6.3 Bảng Ticket


MỤC LỤC HÌNH Ả
Hình 4.1.1: Query .......................................................................................................13
Y
Hình 4.1.2: GraphQL Proxy .......................................................................................14
Hình 4.1.4: Mơ hình get dữ liệu ..................................................................................15
Hình 4.1.5: Truyền dữ liệu ..........................................................................................16
Hình 4.2.1: Tổng quát .................................................................................................16
Hình 4.2.2: Đăng nhập................................................................................................17

Hình 4.2.3 : Department .............................................................................................19
Hình 4.2.3: Ticket ........................................................................................................18
Hình 4.4.1 : Biểu đồ tuần tự đăng nhập .....................................................................19
Hình 4.4.2 : Biểu đồ tuần tự admin ............................................................................20
Hình 4.5.2 : Mơ hình các lớp đối tượng .....................................................................21
Hình 5.3.1 Login .........................................................................................................27
Hình 5.3.2 : Ticket .......................................................................................................28
Hình 5.3.3 Bảng dữ liệu ..............................................................................................29


LỜI MỞ ĐẦU
Ngày nay, với sự phát triển mạnh mẽ của khoa học công nghệ, Công nghệ Thông tin
là một trong những ngành có vị thế dẫn đầu và có vai trị rất lớn trong sự phát triển
chung đó. Các ứng dụng của công nghệ thông tin được áp dụng trong mọi lĩnh vực
nghiên cứu khoa học cũng như trong mọi lĩnh vực của đời sống. Là một phần của
Công nghệ Thơng tin, Cơng nghệ web đang có được sự phát triển mạnh mẽ và phổ
biến rất nhanh bởi những lợi ích mà nó mang lại cho cộng đồng là rất lớn.
Cùng với sự phát triển vượt bậc của khoa học kỹ thuật thì cơng nghệ thơng tin và
thương mại điện tử là một trong những lĩnh vực nổi trội, có nhiều đóng góp thiết thực
nhất cho nền kinh tế. Cơng nghệ thơng tin và thương mại điện tử có mặt trong hầu hết
các lĩnh vực của cuộc sống và trở thành một công cụ hỗ trợ rất đắc lực trong cơng tác
quản lý, kinh doanh.
Vì vậy em đã chọn đề tài: “ Tìm hiểu GraphQL Hot Choccolate xây dựng ticket” để
làm thực tập tốt nghiệp. Thực hiện đồ án là cơ hội để em áp dụng các phương pháp đã
học vào các công việc thực tiễn trợ giúp em có thêm kinh nghiệm phục vụ cho việc
làm sau khi ra trường


LỜI CẢM ƠN
Trong thời gian thực tập tại công ty đã giúp em học hỏi được thêm nhiều kiến thức mới

ngoài các kiến thức đã được giảng dạy trên trường từ đó em đã có thể kết hợp để nâng
cao kiến thức chun mơn của mình. Tuy rằng thời gian thực tập khơng dài nhưng trong
q trình thực tập của mình, em đã được tiếp thu nhiều kiến thức thực tế. Từ đó em nhận
thấy việc co sát thực tế là một điều vơ cùng quan trong – nó giúp sinh viên xây dựng nền
tảng lý thuyết được học ở trường vững chắc hơn. Trong quá trình thực tập, từ chỗ còn bở
ngỡ cho đến thiếu kinh nghiệm, em đã gặp phải rất nhiều khó khăn nhưng với sự giúp đỡ
tận tình của q thầy cơ khoa Cơng nghệ thơng tin và sự nhiệt tình của các anh chị trong
Cơng ty Cổ Phần Cơng Nghệ và Truyền Hình 4.0 Việt Nam đã giúp em có được những
kinh nghiệm quý báu để hồn thành tốt kì thực tập này cũng như viết lên bài báo cáo cuối
kỳ. Em xin chân thành cám ơn.
Lời cám ơn đầu tiên em xin gửi đến ban lãnh đạo cùng các phịng ban, các cơ chú, anh
chị trong Công ty Cổ Phần Công Nghệ và Truyền Hình 4.0 Việt Nam – đơn vị đã tiếp
nhận đã tận tình chỉ dạy, giúp đỡ em nhiệt tình và tạo mọi điều kiện thuận lợi cho em.
Em xin gửi lời cảm ơn chân thành nhất đến các thầy cô giáo Trường Đại Học Đại Nam,
các thầy cô giáo khoa Cơng Nghệ Thơng Tin - những người đã tận tình dạy dỗ, truyền đạt
các kiến thức quý báu và dìu dắt em trong quá trình học tập tại trường.
Đặc biệt, em xin cán ơn thầy xin gửi lời cảm ơn sâu sắc tới thầy Lê Chí Luận. Thầy đã
chỉ bảo và hướng dẫn tận tình cho em trong suốt quá trình thực tập để em có thể hồn
thành khố thực tập tốt nghiệp.
Vì thời gian và kiến thức cịn hạn hẹp nên bài báo cáo không thể tránh khỏi những thiếu
sót, rất mong sự góp ý của Cơng ty, q thầy cô và các bạn, để em rút kinh nghiệm và
hoàn thành tốt hơn.

Em xin chân thành cảm ơn


CHƯƠNG 1: GIỚI THIỆU CHUNG
1 .1 Giới thiệu về Công ty Cổ Phần Cơng Nghệ và Truyền Hình 4.0 Việt Nam

Địa Chỉ Trụ Sở: Số 16 Phố Kim Đồng, Phường Giáp Bát, Quận Hoàng Mai, Hà Nội

Mã Số Thuế: 0107840121
Người Đại Diện PL: Trương Quốc Sánh
Ngày Cấp:
Tên Công Ty Viết Tắt: TEK4TV .,JSC
Địa Chỉ Nhận Thơng Báo:
Mã Ngành Nghề Chính:
Tên Ngành Nghề Kinh Doanh Chính: Hoạt động dịch vụ cơng nghệ thông tin và dịch
vụ khác liên quan đến máy vi tính
Loại Hình Tổ Chức: Tổ chức kinh tế SXKD dịch vụ, hàng hoá
Lĩnh Vực Kinh Tế: Kinh tế tư nhân
Cơ Quan Thuế Quản Lý: Chi cục thuế Quận Hoàng Mai
1.2. Các kỹ năng mềm đã học được tại công ty:
1.2.1.Bài học về sự tự tin và chủ động
Chủ động là bài học lớn nhất và cũng là bài học đầu tiên mà em khi đi thực tập học
hỏi được. Chủ động làm quen với mọi người, chủ động tìm hiểu công việc tại nơi thực
tập, chủ động đề xuất và cùng làm việc với mọi người… tất cả đều giúp cho em hịa
nhập được nhanh hơn trong mơi trường mới.
Những bài học nhỏ nhưng tích lũy dần sau thời gian thực tập sẽ trở thành hành trang
quý báu để sinh viên vững vàng khi rời giảng đường Đại học để thực sự đến với nghề
nghiệp mình lựa chọn.
1.2.2.Nâng cao và hồn thiện kỹ năng mềm
Kỹ năng mềm, em có được để thêm tự tin khi ra trường và bắt đầu với những cơng
việc đầu tiên của mình. Đây là những kỹ năng tinh tế quan trọng, có thể dễ dàng phân
biệt. Đơn giản đó chỉ cần là cách giao tiếp, cách lắng nghe, cách di chuyển xung
quanh và thể hiện bản thân.
Thông qua các hoạt động giao tiếp, ứng xử, thuyết trình hay làm việc nhóm trong khi
thực tập công sở, em đã dần dần trau dồi và rèn luyện, hoàn thiện kỹ năng mềm bản
thân.



1.2.3Trải nghiệm trong môi trường làm việc thực tế
Từ năm nhất đến hết năm thứ ba đại học, phần lớn thời lượng học trên giảng đường là
thời gian em tiếp nhận, trau dồi kiền thức chuyên ngành.
Thời gian thực tập chính là cơ hội để em trực tiếp áp dụng những kiến thức trong nhà
trường vào môi trường làm việc thực tiễn. Một môi trường công sở sẽ rất khác khi
ngồi trên ghế giảng đường thu nhận kiến thức. Dù ở vị trí là thực tập sinh, sẽ phải
hồn thành công việc được giao phù hợp với năng lực và yêu cầu hoàn thành như một
nhân viên.
Những bài học nằm ngồi giáo trình, nằm ngồi những gì em từng suy nghĩ sẽ dạy,
giúp em trưởng thành hơn trong việc nhìn nhận, xem xét và giải quyết vấn đề. Được
làm việc trong môi trường thực tế, được trao cơ hội để áp dụng những kiến thức đã
học vào công việc…em đã nhìn thấy những lỗ hổng của bản thân để có thể tiếp tục
hoàn thiện. Đồng thời, với sự giúp đỡ của những người có kinh nghiệm tại nơi thực
tập, em đã có được những bài học để tránh được những sai sót trong q trình đi làm
thực tế sau này.
Kỳ thực tập là một cơ hội tuyệt vời để em bước ra từ những trang sách trên nhà
trường, tiếp cận với môi trường làm việc thực tế, là dịp để sinh viên áp dụng những lý
thuyết đã học để ứng dụng vào làm việc thực tiễn.
1.3 Giới thiệu về công việc
Công việc được phân chia và thực hiện dựa trên một chương trình đã được cơng ty
dựng sẵn dành riêng cho các thực tập sinh của công ty. Nội dung cụ thể của chương
trình kéo dài 1 tháng:
Làm quen với công việc, công ty và mọi người trong công ty.
Giới thiệu và làm quen với các framework mà công ty sử dụng
Tìm hiểu, ơn lại những kiến thức cơ bản về HTML, CSS, C#
Tìm hiểu, ơn lại kiến thức về GraphQL Hot Chocolate
Tìm hiểu và học về Jquery trong KnockoutJS
Nhận và làm project
Bảo vệ project, chấm điểm, đánh giá.




CHƯƠNG 2: TỔNG QUAN VỀ ĐỀ TÀI
2.1. Lý do chọn đề tài
Ngày nay Công nghệ thông tin đã phát triển với tốc độ nhanh chóng. Cơng nghệ tin
học đã được ứng dụng trong nhiều lĩnh vực như nghiên cứu khoa học, phát triển kinh
tế, quân sự và trong nhiều loại hình nghệ thuật khác nhau. Ở các nước tiên tiến, máy
tính đã được ứng dụng ở nhiều lĩnh vực nhằm phục vụ lợi ích cho con người. Việc
liên lạc tìm kiếm thơng tin khơng cịn bị cản trở.Thế giới trở lên xích lại gần nhau hơn
nhờ Cơng nghệ thơng tin.
Tất cả các nước đều đang cố gắng làm chủ kiến thức và tìm cách áp dụng thành tựu
của Cơng nghệ thông tin vào mọi ngành kinh tế – xã hội của nhà nước. Do vậy, việc
tìm kiếm thơng tin là một việc không thể thiếu của tất cả mọi người.
Với các lý do ấy thì phát triển Cơng nghệ thơng tin đã trở thành một ngành kinh tế
quan trọng , đặc biệt là Công nghệ phần mềm. Sự ra đời của các công cụ tạo ra các
sản phẩm công nghệ ngày càng được phát triển và hoàn thiện. Đặc biệt với sự hỗ trợ
mạnh mẽ của Microsoft, GraphQL và Hot Chocolate đang dần khẳng định vị trí của
mình với nhiều sản phẩm được tạo ra từ nó.
2.2. Tổng quan về vấn đề nghiên cứu:
Tìm hiểu về Graphql Hotchocolate:
GraphQL là một khái niệm tương đối mới của Facebook được dự tính sẽ là giải pháp
thay thế REST cho các API Web.
Hot Chocolate là một trong những cách triển khai hàng đầu của máy chủ GraphQL,
một điều quan trọng cần lưu ý khi chọn một khuôn khổ là việc triển khai của ta sẽ chỉ
tốt như khuôn khổ ta chọn. Khi đặc tả GraphQL tiến triển, ta muốn có một khn khổ
ln cập nhật những thay đổi … Hot Chocolate làm được điều đó.
3.3. Mục đích nghiên cứu
Đối tượng nghiên cứu:
GraphQL được phát triển để đáp ứng nhu cầu linh hoạt và hiệu quả hơn, nó giải quyết
nhiều thiếu sót và kém hiệu quả mà các nhà phát triển gặp phải khi tương tác với các

API REST.
Phạm vi nghiên cứu:


GraphQL sử dụng một hệ thống loại mạnh để xác định các khả năng của một API. Tất
cả các loại được hiển thị trong một API được viết ra trong một lược đồ bằng cách sử
dụng Ngôn ngữ Định nghĩa Lược đồ GraphQL (SDL). Lược đồ này đóng vai trị là
hợp đồng giữa máy khách và máy chủ để xác định cách máy khách có thể truy cập dữ
liệu.
4.4.Kết quả đạt được
Xây dựng được database có thể truy xuất dữ liệu
Back end: Sử dụng Graphql để sử lý dữ liệu 1 cách tối ưu nhất, truy xuất dữ liệu cần
tìm kiếm tốt hơnn cho người quản trị viên.
Font end: Sử dụng KnockouJS để gọi dữ liệu vào bảng, giao diện đăng nhập, thêm
ticket


CHƯƠNG 3 : CƠ SỞ LÝ LUẬN
3.1.GraphQL là gì?
“GraphQL” có thể hiểu chính là một cú pháp để thể hiện hay mô tả về cách để yêu
cầu lấy các thông tin, dữ liệu và thông thường sẽ được dùng để load các data từ một
server cho client nào đó. GraphQL bao gồm có 3 đặc điểm chính là:
1.Cho phép các client có thể xác định được một cách chính xác nhất về toàn bộ những
dữ liệu cần thiết.
2.GraphQL giúp cho việc tổng hợp được những dữ liệu quan trọng từ nhiều nguồn
cung cấp khác nhau một cách dễ dàng, nhanh chóng.
3.GraphQL sử dụng một type system để có thể mơ tả cụ thể về các dữ liệu, thông tin.
GraphQL là gì?
GraphQL bắt đầu xuất hiện từ ơng lơn Facebook, tuy nhiên đối với cả những app dù
đơn giản nhất đều có thể sẽ xảy ra vấn đề do sự hạn chế của REST APIs. Một ví dụ dễ

hiểu nhất như khi bạn muốn hiển thị một list posts nào đó và ở dưới mỗi post sẽ có
một list like, trong đó bao gồm cả tên của người sử dụng kèm theo avatar của họ thì
cách giải quyết nhanh chóng và dễ dàng nhất chính là làm sao để thay đổi được API
của posts đó để nó có thể bao gồm được “a like array” và chứa đựng các thông tin của
người dùng. Tuy nhiên nếu như làm theo cách đó và áp dụng với các app mobile thì
chắc chắn bạn sẽ thấy tốc độ của chúng là quá chậm và thậm chí là nếu như các posts
được lưu trữ ở một SQL Server hay Oracle database thì likes lại chỉ được lưu tại
Redis store.
Chính vì những vấn đề trên mà Facebook đã đưa ra được ý tưởng khá mới lạ trở thành
giải pháp cho những khúc mắc này, chính là sự ra đời của GraphQL. Thay vì việc phải
có q nhiều những endpoint khơng cần thiết thì tại sao lại không sử dụng duy nhất
một endpoint thông minh với những khả năng tiếp thu toàn bộ những Query phức tạp
và sau đó đưa ra output data cùng với các loại type theo yêu cầu của client? Thực tế
có thể thấy, GraphQL giống như một layer và nằm ở giữa của client và data source.
Sau khi đã tiếp nhận yêu cầu của client thì GraphQL sẽ tiến hành tìm kiếm các thông
tin từ các data source rồi đưa lại cho các client theo như format mà họ muốn và định
sẵn từ ban đầu.


3.2. Những tính năng vượt trội của GraphQL
3.2.1.Graph có thể thay thế chó REST
Có thể thấy, vấn đề mà REST hiện đang gặp phải chính là phản hồi các dữ liệu của nó
trả về q nhiều, có đơi khi là quá ít. Và đối với các hai trường hợp này thì đều sẽ ảnh
hưởng khá nhiều đến hiệu suất của các ứng dụng. Do đó, giải pháp tối ưu nhất đưa ra
ở đây chính là sử dụng GraphQL thay thế cho REST. GraphQL có thể cho phép việc
khai báo các thơng tin, dữ liệu ở những nơi mà client có thể xác định được một cách
chính xác nhất những điều mà họ cần từ một API. Đây được xem là một tính năng
vượt trội và hữu ích cũng như góp phần tăng hiệu suất của các ứng dụng.
GraphQL có thể thay thế cho REST
3.2.2 Tính năng về Defining schema and Type system

Hiện nay, GraphQL đã có riêng một hệ thống dành cho việc sử dụng để xác định các
schema của một API nhất định. Và tất cả những type của hệ thống khi được liệt kê
trong một API nhất định nào đó thì sẽ được viết cụ thể ở trong các schema và sẽ sử
dụng GraphQL Schema Definition Language để thực hiện toàn bộ những hoạt động,
thao tác cần thiết cho các ứng dụng.
Schema được áp dụng giống như một bản giao dịch cụ thể giữa client và các server để
từ đó GraphQL có thể xác định được các client và truy cập các thông tin, dữ liệu. Sau
khi thực hiện thì team frontend có thể mock data và kiểm tra kỹ lưỡng các component.
Đồng thời, team back – end cũng sẽ chuẩn bị các công việc, hoạt động cần thiết nhất
cho server. Như vậy, đây được xem là một tính năng vơ cùng hữu ích của GraphQL
đối với hệ thống xử lý dữ liệu và góp phần chạy các ứng dụng một cách nhanh chóng,
hiệu quả hơn.
3.2.3 Tính năng về Fetching data – Query
GraphQL có thể sử dụng để nạp các thông tin, dữ liệu khác với REST là chỉ có duy
nhất một single endpoint và hồn tồn phải phụ thuộc vào client để có thể xác định
được các dữ liệu quan trọng, cần thiết. Chính vì vậy, GraphQL phát triển và mang đến
một tính năng mới về Fetching data (hay còn gọi là Query) để khắc phục được những
hạn chế, đồng thời phát huy được những ưu điểm để phát triển toàn diện hơn hệ thống
hoạt động cho các ứng dụng hiện nay.
3.2.4 Tính năng về Mutations
GraphQL có tính năng giúp gửi các queries và được gọi là mutations. Những mutation
này bao gồm có 3 loại chính là UPDATE, DELETE và CREATE. Mutation cũng có
những cú pháp tương tự như Fetching Data, tuy nhiên lại luôn bắt đầu với một từ khóa
nhất định nào đó. Đây cũng là một tính năng khá hữu ích giúp cho hệ thống xử lý và


phân tích dữ liệu hoạt động hiệu quả và mang đến năng suất cao hơn cho các ứng
dụng khi đang chạy.
Tính năng về Subscription and Realtime updates
Trong các ứng dụng hiện nay đều có một yêu cầu khá quan trọng chính là realtime để

thực hiện chức năng kết nối đến các máy chủ và có được thơng tin cho các event một
cách nhanh chóng. Và trong những trường hợp đặc biệt này thì GraphQL sẽ mang đến
những khái niệm, thơng tin liên quan và tất cả được gọi là subscriptions. Điều đó
đồng nghĩa với việc khi một client subscriptions một event thì nó cũng sẽ bắt đầu giữ
các kết nối đến với server. Như vậy, bất cứ khi nào có sự kiện diễn ra thì server sẽ tự
động đẩy dữ liệu tương ứng đến với client. Khác hoàn toàn so với Query hay
Mutation, subscriptions sẽ đi theo kiểu “request – response – cycle và sẽ subscriptions
đại diện của từng luồng dữ liệu được đưa đến client.
3.3 Những yếu tố chính tạo ra GraphQL
3.3.1 Yếu tố Query
Tất cả những yêu cầu mà bạn đặt ra cho GraphQL được gọi là “Query” và khi tuyên
bố một “query” mới có sử dụng keyword “query”, đặt tên cho field đó là stuff. Điều
đặc biệt có thể thấy ở GraphQL chính là query được phép support cho các nested
fields trong toàn bộ hệ thống của ứng dụng. Do đó, các client khi đã đưa ra những yêu
cầu và tạo ra query sẽ không cần phải lo đến việc data đến từ các source nào cả mà chỉ
cần hỏi cũng như GraphQL server sẽ đảm nhiệm và lo hết toàn bộ mọi thứ.
Một điều cũng hết sức đáng lưu ý ở đây chính là các query field cịn có thể chỉ đến
các array và query field cịn có khả năng support cả các argument. Chính vì những
điều đó, nếu như bạn muốn được đưa ra một post riêng biệt nào đó cho mình thì đơn
giản là chỉ cần lựa chọn thêm các “id argument” cho các post field mà mình đã xác
định từ ban đầu là được.
Query – một trong những yếu tố tạo thành GraphQL
Và cuối cùng, nếu như bạn vẫn có ý muốn khiến cho các “id argument” được trở nên
đặc biệt và khác lạ hơn thì cũng có thể thay đổi và tạo ra một variable hoặc là tái sử
dụng chúng ở phía bên trong của query. Một trong những cách để thực hiện khá tốt
điều này chính là áp dụng “GitHub’s GraphQL API Explorer. Đó là việc bạn có thể
dễ dàng và nhanh chóng thử đặt tên cho bất kỳ một field nào đó ở phía dưới của
description, khi đó IDE sẽ có thể tự động cũng như gợi ý cho bạn những cái tên mới
của field đã có sẵn hay là đã được tạo ra từ chính GraphQL API trong hệ thống ứng
dụng.

3.3.2.Yếu tố Resolvers


Một yếu tố tuyệt đối không thể thiếu khi tạo ra GraphQL chính là Resolvers bởi thực
tế GraphQL chắc chắn sẽ khơng biết cần phải làm gì đối với query mà bạn đưa ra nếu
như khơng có resolver. Resolver giúp cho GraphQL có thể biết được địa điểm cũng
như cách để lấy các data cần thiết nhất cho các field của query mà bạn đã yêu cầu.
Mặc dù bạn đã đặt resolver ngay tại các query để có thể query cho các post nhanh
chóng, tuy nhiên, bạn vẫn có thể thoải mái sử dụng resolver trong sub – field như là
author field của post. Và một điều bạn cần phải hết sức quan tâm và lưu ý chính là
resolver sẽ tuyệt đối không bị giới hạn hay ảnh hưởng bởi tất cả những thông tin, dữ
liệu thu thập được, do đó rất có thể bạn sẽ muốn được thêm vào các commentscount
cho post type của mình để hồn thiện hệ thống ứng dụng hơn.
Một điều khá quan trọng ở đây chính là đối với GraphQL, API schema hay database
schema sẽ tách ra riêng biệt. Hiểu đơn giản chính là nó sẽ khơng có bất kỳ một author
hay commentscount nào ở trong database, tuy nhiên bạn vẫn có thể mơ phỏng được
chúng nhờ có resolver và cũng có thể viết bất kỳ code gì trong đó. Do vậy mà bạn có
thể sử dụng resolver để sửa những nội dung của database hay còn được gọi với cái tên
khác là mutation resolver.
3.3.3. Yếu tố Schema
Schema – yếu tố không thể thiếu để tạo thành GraphQL
Schema là một trong ba yếu tố quan trọng khơng thể thiếu đối với q trình tạo ra
GraphQL bởi toàn bộ những điều thú vị, cần thiết nhất đều phải nhờ vào hệ thống của
GraphQL’s typed schema. GraphQL sẽ sử dụng một hệ thống nằm trong strong type
để có thể định nghĩa được khả năng của API và tất cả những kiểu dữ liệu trong API
cũng sẽ được định nghĩa bởi một schema thông qua SDL của GraphQL. Do đó,
schema có vai trị quan trọng để quy ước những client và server để có thể xác định
được chính xác cách mà một client có thể truy cập vào các thơng tin, dữ liệu.
Khái niệm GraphQL là gì có lẽ sẽ khá phức tạp và khó hiểu đối với những người mới
tiếp xúc. Tuy nhiên, nếu bạn có thể kiên trì học hỏi, tìm hiểu thì chắc chắn sẽ nhận ra

được nhiều điều thú vị ẩn sâu bên trong. Hy vọng với những chia sẻ trên đây của
3.3.4 Hot chocolate
Hot Chocolate là một nền tảng GraphQL có thể giúp bạn xây dựng một lớp GraphQL
trên cơ sở hạ tầng hiện có và mới của bạn.
3.4.Cơ sở dữ liệu
Hệ thống sử dụng cơ sở dữ liệu SQL Server


3.4.1 Khái niệm
SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (Relational Database Management
System (RDBMS) ) sử dụng câu lệnh SQL (Transact-SQL) để trao đổi dữ liệu giữa máy
Client và máy cài SQL Server. Một RDBMS bao gồm databases, database engine và các
ứng dụng dùng để quản lý dữ liệu và các bộ phận khác nhau trong RDBMS.
3.4.2 Các thành phần cơ bản trong SQL Server
Database Engine: Đây là một engine có khả năng chứa dữ liệu ở các quy mơ dưới dạng
support và table. Ngồi ra, nó cịn có khả năng tự điều chỉnh ví dụ: trả lại tài nguyên cho
hệ điều hành khi một user log off và sử dụng thêm các tài nguyên của máy khi cần.
Integration Services: là tập hợp các đối tượng lập trình và các cơng cụ đồ họa cho việc
sao chép, di chuyển và chuyển đổi dữ liệu. Khi bạn làm việc trong một cơng ty lớn thì dữ
liệu được lưu trữ ở nhiều nơi khác nhau như được chứa trong: Oracle, SQL Server, DB2,
Microsoft Access,… và bạn chắc chắn sẽ có nhu cầu di chuyển dữ liệu giữa các server
này. Ngồi ra, bạn cịn muốn định dạng dữ liệu trước khi lưu vào database. Chắc chắn
Integration Services sẽ giúp bạn giải quyết được công việc này dễ dàng.
Analysis Services: Đây là một dịch vụ phân tích dữ liệu rất hay của Microsoft. Dữ liệu
khi được lưu trữ vào trong database mà bạn không thể lấy được những thông tin bổ ích
thì coi như khơng có ý nghĩa gì. Chính vì thế, cơng cụ này ra đời giúp bạn trong việc
phân tích dữ liệu một cách hiệu quả và dễ dàng bằng cách dùng kỹ thuật khai thác dữ liệu
– datamining và khái niệm hình khối nhiều chiều – multi dimendion cubes.
Notification Services: Dịch vụ thông báo này là nền tảng cho sự phát triển và triển khai
các ứng dụng soạn và gửi thơng báo. Ngồi ra, dịch vụ này cịn có chức năng gửi thơng

báo theo dịch thời đến hàng ngàn người dăng ký sử dụng trên nhiều loại thiết bị khác
nhau.
Reporting Services: là một công cụ tạo, quản lý và triển khai báo cáo bao gồm: server và
client. Ngồi ra, nó cịn là nền tảng cho việc phát triển và xây dựng các ứng dụng báo
cáo.
Full Text Search Service: là một thành phần đặc biệt trong việc truy vấn và đánh chỉ mục
dữ liệu văn bản không cấu trúc được lưu trữ trong các cơ sở dữ liệu SQL Server.+
Service Broker: là một mơi trường lập trình cho việc tạo ra các ứng dụng trong việc nhảy
qua các Instance.

3.4.3 Phân tích thiết kế hướng đối tượng
3.4.3.1Khái niệm


Phân tích thiết kế hướng đối tượng là sự tổng hợp giữa khái niệm xử lý và khái niệm dữ
liệu chung trong một cách tiếp cận, và một hệ thống là một tập hợp các đối tượng liên kết
nội; có nghĩa là việc xây dựng hệ thống chính là việc xác định các đối tượng đó bằng
cách cố gắng ánh xạ các đối tượng của thế giới thực thành đối tượng hệ thống, thiết kế và
xây dựng nó, và hệ thống hình thành chính là qua sự kết hợp của các đối tượng này.

3.4.3.2.Đặc điểm của phân tích hướng đối tượng
Lấy đối tượng làm trung tâm
Đối tượng = chức năng + dữ liệu
Hệ thống = tập hợp các đối tượng + quan hệ giữa các đối tượng
Cách tiếp cận hướng đối tượng là một lối tư duy theo cách ánh xạ các thành phần trong
bài toán vào các đối tượng ngoài đời thực. Với cách tiếp cận này, một hệ thống được chia
tương ứng thành các thành phần nhỏ gọi là các đối tượng, mỗi đối tượng bao gồm đẩy đủ
cả dữ liệu và hành động liên quan đến mỗi đối tượng đó

3.4.3.4 Các nguyên tắc cơ bản của phân tích hướng đối tượng

Tính bao đóng (encapsulation):
Che dấu các thuộc tính dữ liệu: nếu cần cho phép truy xuất 1 thuộc tính dữ liệu, ta tạo 2
phương thức get/set tương ứng để giám sát việc truy xuất và che dấu chi tiết hiện thực
bên trong ( thuộc tính private)
Che dấu chi tiết hiện thực các phương thức.
Che dấu các hàm và sự hiện thực của chúng.
Tính modul hóa (modularity):
Là các bài toán sẽ được phân chia thành những vấn đề nhỏ hơn, đơn giản và quản lý
được.
Tính phân cấp (hierarchy):
Là cấu trúc chung của một hệ thống hướng đối tượng là dạng phân cấp theo các mức độ
trừu tượng từ cao đến thấp.
Trừu tượng hóa (abstraction):
Các thực thể phần mềm được mơ hình hóa dưới dạng các đối tượng.


Các đối tượng được trừu tượng hóa ở mức cao hơn dựa trên thuộc tính và phương thức
mơ tả đối tượng để tạo thành các lớp.
Các lớp được trừu tượng hóa ở mức cao hơn nữa để tạo thành một sơ đồ các lớp được kế
thừa lẫn nhau. Trong phương pháp hướng đối tượng có thể tồn tại những lớp khơng có
đối tượng tương ứng, gọi là lớp trừu tượng.
Như vậy, nguyên tắc cơ bản để xây dựng các khái niệm trong hướng đối

3.4.3 Ứng dụng và ngôn ngữ để phát triển đề tài
3.4.3.1 Ứng dụng
Visual studio: Microsoft Visual Studio cịn được gọi là "Trình soạn thảo mã nhiều người
sử dụng nhất thế giới ", được dùng để lập trình C++ và C# là chính. Nó được sử dụng để
phát triển chương trình máy tính cho Microsoft Windows, cũng như các trang web, các
ứng dụng web và các dịch vụ web.Được phát triển bởi: Microsoft.
Được viết bằng: C++, C#.

Visual studio code: là một trình soạn thảo, biên tập code hồn tồn miễn phí dành được
Microsoft phát triển cho các lập trình viên và có mặt trên hầu hết các hệ điều hành phổ
biến như: Windows, Linux và macOS. Có thể nói rằng, Visual Studio Code là một sự kết
hợp độc đáo – đỉnh cao giữa IDE và Code Editor.
Visual Studio Code hỗ trợ nhiều ngơn ngữ lập trình như C/C++, C#, F#, Visual Basic,
HTML, CSS, JavaScript.

3.4.3.2 Ngôn ngữ và mô hình
HTML được tạm dịch là ngơn ngữ đánh dâu siêu văn bản, còn được viết tắt là Hypertext
Markup Language được sử dụng để xây dựng và cấu trúc lại các thành phần trong
Website.
Lịch sử của HTML: HTML được tạo ra bởi Tim Berners-Lee, một nhà vật lý học của
trung tâm nghiên cứu CERN ở Thụy Sĩ. Hiện nay, HTML đã trở thành một chuẩn
Internet được tổ chức W3C (World Wide Web Consortium) vận hành và phát triển. Bạn
có thể tự tìm kiếm tình trạng mới nhất của HTML tại bất kỳ thời điểm nào trên Website
của W3C. Phiên bản đầu tiên của HTML xuất hiện năm 1991, gồm 18 tag HTML. Phiên
bản HTML 4.01 được xuất bản năm 1999. Sau đó, các nhà phát triển đã thay thế HTML
bằng XHTML vào năm 2000. Đến năm 2014, HTML được nâng cấp lên chuẩn HTML5
với nhiều tag được thêm vào markup, mục đích là để xác định rõ nội dung thuộc loại là gì
(ví dụ như: <article>, <header>, <footer>,…).


Ưu điểm:
Có nhiều tài nguyên hỗ trợ với cộng đồng người dùng vơ cùng lớn
Có thể hoạt động mượt mà trên hầu hết mọi trình duyệt hiện nay Học HTML khá đơn
giản
Các markup sử dụng trong HTML thường ngắn gọn, có độ đồng nhất cao
Sử dụng mã nguồn mở, hồn tồn miễn phí
HTML là chuẩn web được vận hành bởi W3C
Dễ dàng để tích hợp với các loại ngơn ngữ backend (ví dụ như: PHP, Node.js,…)

Nhược điểm:
Chỉ được áp dụng chủ yếu cho web tĩnh. Nếu muốn tạo các tính năng động, lập trình viên
phải dùng thêm JavaScript hoặc ngơn ngữ backend của bên thứ 3 (ví dụ như: PHP)
Mỗi trang HTML cần được tạo riêng biệt, ngay có khi có nhiều yếu tố trùng lặp như
header, footer.
Khó để kiểm sốt cách đọc và hiển thị file HTML của trình duyệt (ví dụ, một số trình
duyệt cũ khơng render được tag mới. Do đó, dù trong HTML document có sử dụng các
tag này thì trình duyệt cũng khơng đọc được).
Một vài trình duyệt cịn chậm cập nhật để hỗ trợ tính năng mới của HTML
CSS: là chữ viết tắt của Cascading Style Sheets, nó là một ngơn ngữ được sử dụng để tìm
và định dạng lại các phần tử được tạo ra bởi các ngơn ngữ đánh dấu (HTML). Nói ngắn
gọn hơn là ngôn ngữ tạo phong cách cho trang web. Bạn có thể hiểu đơn giản rằng, nếu
HTML đóng vai trò định dạng các phần tử trên website như việc tạo ra các đoạn văn bản,
các tiêu đề, bảng,…thì CSS sẽ giúp chúng ta có thể thêm style vào các phần tử HTML đó
như đổi bố cục, màu sắc trang, đổi màu chữ, font chữ, thay đổi cấu trúc…
CSS được phát triển bởi W3C (World Wide Web Consortium) vào năm 1996, vì HTML
khơng được thiết kế để gắn tag để giúp định dạng trang web.
Bố cục và cấu trúc của CSS:
Bố cục CSS thường chủ yếu dựa vào hình hộp và mỗi hộp đều chiếm những khoảng
trống trên trang của bạn với các thuộc tính như:
Padding: Gồm khơng gian xung quanh nội dung (ví dụ: xung quanh đoạn văn bản).


Border: Là đường liền nằm ngay bên ngoài phần đệm.
Margin: Là khoảng cách xung quanh bên ngoài của phần tử.
Cấu trúc của CSS
Bộ chọn (Selector).
Khai báo (Declaration).
Thuộc tính (Properties).
Giá trị thuộc tính.

Các đặc điểm chính của CSS:
CSS có cấu trúc đơn giản và sử dụng các từ tiếng anh để đặt tên cho các thuộc tính.
Khi sử dụng có thể viết trực tiếp xen lẫn vào mã HTML hoặc tham chiếu từ một file css
riêng biệt.
Hiện nay CSS thường được viết riêng thành một tập tin với mở rộng là “.css”, do đó các
trang web có sử dụng CSS thì mã HTML sẽ trở nên ngắn gọn hơn.
Có thể sử dụng một tập tin CSS đó cho nhiều website tiết kiệm rất nhiều thời gian và
cơng sức.
Tính kế thừa của CSS sẽ giảm được số lượng dòng code mà vẫn đạt được yêu cầu.
Vì đối đối với CSS thì các trình duyệt hiểu theo kiểu riêng của nó nên việc trình bày một
nội dung trên các trình duyệt khác nhau là khơng thống nhất.
CSS cung cấp hàng trăm thuộc tính trình bày dành cho các đối tượng với sự sáng tạo cao
trong kết hợp các thuộc tính giúp mang lại hiệu quả.
JavaScript: là ngơn ngữ lập trình phổ biến nhất trên thế giới trong suốt 20 năm qua. Nó
cũng là một trong số 3 ngơn ngữ chính của lập trình web: HTML: Giúp bạn thêm nội
dung cho trang web. CSS: Định dạng thiết kế, bố cục, phong cách, canh lề của trang web.
JavaScript: Cải thiện cách hoạt động của trang web. JavaScript có thể học nhanh và dễ
dàng áp dụng cho nhiều mục đích khác nhau, từ việc cải thiện tính năng của website đến
việc chạy game và tạo phần mềm nền web. Hơn nữa, có hàng ngàn mẫu template
JavaScript và ứng dụng ngoài kia, nhờ vào sự cống hiến của cộng đồng, đặc biệt là
Github.



CHƯƠNG 4 : PHÂN TÍCH HỆ THỐNG
4.1 Đặc tả yêu cầu
4.1.1 Mô tả đề tài:
Xây dựng 1 Ticket đánh giá về 1 sản phẩm hoặc 1 bài viết nào đó, được xây
dựng dựa trên FrameWork xử lý dữ liệu back end GraphQL Hot Chocolate
Người dùng thực hiện gửi Ticket đánh giá về cho Admin duyệt và gửi về phòng

ban nào đó để xử lý u cầu
4.1.2 Mơ tả về chức năng
GraphQL Hot Chocolate
Quản lý toàn bộ dữ liệu từ admin cho đến các phòng ban, xử lý truy xuất dữ
liệu, thêm, sửa, xóa , tìm kiếm dữ liệu ngay trên GraphQL
4.1.3 Các yêu cầu phi chức năng
Bảng 4.1.3 Yêu cầu chức năng.
STT

Tên yêu cầu

Mô tả yêu cầu

1

Giao diện

Giao diện hệ thống phải dễ sử dụng, trực quan, thân thiện
với mọi người dùng.

2

Tốc độ xử lý

Hệ thống phải xử lý nhanh chóng và chính xác. Tốc độ tải
trang hợp lý đảm bảo theo hạ tầng, đầu tư triển khai và số
lượng người truy cập đồng thời.

3


Bảo mật

Tính bảo mật và độ an tồn cao

4

Tương thích

Tương thích với đa phần các trình duyệt web hiện tại.
Tương thích hầu hết các thiết bị

5

Thời gian vận
hành

Đảm bảo vận hành 24/7

4.2 Phân tích thiết kế hệ thống
Dựa vào mơ tả bài tốn , ta có thể xác định được các tác nhân chính của hệ thống như
sau:
4.2.1 Back-end
Query: dùng để thực hiện truy xuất dữ liệu trên GraphQL


×