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

Báo cáo thực tập lập trình trang web với asp net, react js và graphql

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 (932.53 KB, 43 trang )

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

BÁO CÁO THỰC TẬP

LẬP TRÌNH TRANG WEB VỚI ASP. NET, REACT.JS
VÀ GRAPHQL
Cơng ty thực tập
KMS Technology
Người phụ trách
Võ Hồng Việt
Thực tập sinh
Đỗ Phi Long
TP. Hồ Chí Minh, tháng 12 năm 2022

Võ Hoàng Việt

Đỗ Phi Long


LỜI MỞ ĐẦU

Ngày nay, các trang web phát triển cực kỳ mạnh mẽ, khơng cịn là các trang web tĩnh
chứa thơng tin, văn bản như trước mà thay vào đó là rất nhiều tính năng độc đáo và hữu ích
được gói gọn trong nhiều thuật ngữ như web app, web service,… Nhờ sự thuận tiện và độc lập
với phần cứng của người dùng cuối, các trang web dần trở thành tiện ích khơng thể thiếu trong
đời sống con người ở thời đại 4.0 hiện nay. Đồng thời, nhiều công nghệ dùng để phát triển web
liên tục được cho ra mắt với tốc độ chóng mặt, song song với các thử thách phát sinh từ nhu cầu
người dùng và bảo mật thơng tin.
Để tạo ra một trang web có nhiều lượt sử dụng, đem đến sự tiện lợi và hữu ích cho người
dùng khơng cịn là một việc đơn giản. Có vô số vấn đề phát sinh và các thách thức liên tục được


đặt ra, cũng như vô số các công nghệ, thư viện, framework được tạo nên để giải quyết các thách
thức đó. Khối lượng kiến thức cần tiếp thu với một nhà phát triển web ngày càng dồi dào và sâu
rộng. Tuy nhiên, đây cũng là cơ hội để tiếp cận người dùng bằng các sản phẩm web được thiết
kế và xây dựng tốt, tỉ mỉ, đem lại nhiều ích lợi cho người sử dụng.
Vì các lý do trên nên sau 3 năm học tập và rèn luyện tại Trường, em muốn tham gia vào
một doanh nghiệp chuyên về lĩnh vực phát triển ứng dụng web, có đội ngũ kỹ sư nhiều kinh
nghiệm, với mong muốn được học hỏi các kiến thức và kinh nghiệm - đồng thời là cơ hội để
trau dồi kỹ năng và nhận ý kiến đóng góp - của những người đi trước trong lĩnh vực phát triển
web.

Võ Hoàng Việt

Đỗ Phi Long


LỜI CẢM ƠN

Trân trọng gửi lời cảm ơn KMS Technology Việt Nam đã tạo điều kiện cho em có cơ hội
được thực tập tại công ty.
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của các mentor, em đã học
được nhiều kiến thức và kinh nghiệm trong lĩnh vực phát triển web. Chân thành cảm ơn các anh
trong team Clearwave đã bỏ ra nhiều thời gian, cơng sức để hướng dẫn em hồn thành đợt thực
tập này.
Đặc biệt cảm ơn anh Võ Hoàng Việt đã dẫn dắt em và nhiệt tình chia sẻ với em khơng
chỉ về kiến thức chun mơn mà cịn về các quy trình làm việc, các kinh nghiệm trong ngành và
văn hóa ở cơng ty. Các ý kiến đóng góp và lời khuyên của anh Việt về các công việc mà em
thực hiện là những đóng góp đáng trân trọng giúp em tiếp tục phát triển về kiến thức, kỹ năng,
lẫn thái độ.
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều
kiện em làm bài báo cáo này.

Đỗ Phi Long
TP.HCM, ngày 25 tháng 12 năm 2022

Võ Hoàng Việt

Đỗ Phi Long


NHẬN XÉT CỦA KHOA

Võ Hoàng Việt

Đỗ Phi Long


MỤC LỤC
Chương 1: Giới thiệu công ty thực tập
1. Giới thiệu công ty KMS Technology

1
1

1.1. Về KMS Healthcare

1

1.2. Về KMS Solutions

2


2. Sản phẩm của công ty

2

Chương 2: Nội dung thực tập

4

1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong cơng ty

4

2. Nghiên cứu kỹ thuật

5

2.1. Tìm hiểu các tính năng nâng cao của C#

5

2.2. Tìm hiểu sâu về OOP

7

2.3. Tìm hiểu về Entity Framework Core

8

2.4. Tìm hiểu về ASP .NET Core MVC và làm trang web demo


11

2.5. Tìm hiểu về ASP .NET Core Web API

13

2.6. Tìm hiểu về React

15

2.7. Tìm hiểu về TDD

16

2.8. Tìm hiểu về GraphQL

18

3. Thực hiện project

21

4. Lịch làm việc

21

Chương 3: Chi tiết về project

27


1. Giới thiệu về Planning Poker

27

2. Thực hiện

30

3. Kế hoạch

30

Võ Hoàng Việt

Đỗ Phi Long


DANH MỤC HÌNH ẢNH

Hình 1.1 Logo KMS Technology

1

Hình 1.2 Logo KMS Healthcare

1

Hình 1.3 Logo KMS Solution

2


Hình 1.4 Kobiton logo

3

Hình 1.5 Katalon logo

3

Hình 1.6 Grove logo

3

Hình 1.7 Visily logo

3

Hình 1.8 Kaypay logo

3

Hình 2.1 Kế hoạch học tập và làm việc của kỳ thực tập

5

Hình 2.2 Target-typed new expression

6

Hình 2.3 Các entity class trong EF Core


9

Hình 2.4 Đọc dữ liệu thỏa điều kiện vào một collection entity

10

Hình 2.5 Mơ hình MVC

12

Hình 2.6 Chu kỳ thực hiện của TDD

17

Hình 2.7 Mơ hình hoạt động của GraphQL

19

Hình 3.1 Giao diện chính của Planning poker

28

Hình 3.1 Q trình chơi planning poker

29

Võ Hồng Việt

Đỗ Phi Long



1

Chương 1:

Giới thiệu cơng ty thực tập

Hình 1.1 Logo KMS Technology

1. Giới thiệu công ty KMS Technology
Được thành lập vào năm 2009, KMS Technology là công ty chuyên cung cấp các
dịch vụ phát triển sản phẩm phần mềm, tư vấn triển khai các giải pháp công nghệ và khởi
nghiệp. Sau hơn 12 năm hoạt động KMS đã xây dựng đội ngũ hơn 1000 nhân viên tại
Mỹ và Việt Nam, và phát hành 6 sản phẩm phần mềm trên thị trường thế giới.
KMS bao gồm:
● KMS Healthcare
● KMS Solutions
● Các công ty product
1.1.

Về KMS Healthcare
KMS Healthcare được thành lập để phát triển các giải pháp phần mềm phục vụ
cho ngành y tế, chăm sóc sức khỏe.

Hình 1.2 Logo KMS Healthcare

Võ Hồng Việt

Đỗ Phi Long



2

Các dịch vụ được cung cấp bởi KMS Healthcare tuân thủ theo các quy định về y
tế như HIPAA, ACA (Obamacare), FHIR,… Chúng bao gồm:
● Phát triển phần mềm, ứng dụng y tế trên nhiều nền tảng
● Kiểm thử phần mềm
● Tư vấn giải pháp phần mềm
● Phân tích dữ liệu y tế
1.2.

Về KMS Solutions
KMS Solutions tập trung vào các giải pháp phần mềm về tài chính và ngân hàng,
phục vụ thị trường trong khu vực Châu Á-Thái Bình Dương.

Hình 1.3 Logo KMS Solution
Các dịch vụ được cung cấp bởi KMS Solutions bao gồm:
● Tư vấn giải pháp phần mềm cho kinh doanh
● Phát triển phần mềm ngân hàng
● Phân tích dữ liệu
● Kiểm thử phần mềm

Võ Hồng Việt

Đỗ Phi Long


3


2. Sản phẩm của cơng ty
Trong q trình phát triển của công ty, KMS đã triển khai thành công nhiều sản
phẩm, phần lớn trong số đó chỉ được lưu hành và sử dụng trong nội bộ của đối tác khách
hàng. Một số sản phẩm được công bố rộng rãi bao gồm:
● Kobiton: Hệ thống kiểm thử các phần mềm di động, cung cấp tính năng kiểm thử
tự động hay thủ công trên các thiết bị di động thật và không sử dụng giả lập.

Hình 1.4 Kobiton logo
● Katalon: Một hệ thống kiểm thử sử dụng công nghệ AI giúp tạo các test case một
cách nhanh chóng và dễ dàng cho các trang web và mobile.

Hình 1.5 Katalon logo
● Grove: Hệ thống quản lý thông tin nhân sự một cách nhanh chóng và thuận tiện
cho cả nhân viên và cơng ty.

Hình 1.6 Grove logo
● Visily: Trang web thiết kế UI được tạo ra cho những người không phải là designer
áp dụng cơng nghệ AI.

Hình 1.7 Visily logo
● Kaypay: Hệ thống thanh tốn một cách đơn giản và thuận tiện.

Võ Hồng Việt

Đỗ Phi Long


4

Hình 1.8 Kaypay logo


Võ Hồng Việt

Đỗ Phi Long


5

Chương 2:

Nội dung thực tập

Đợt thực tập tại KMS Technology đã cho em thấy quá trình làm việc và phát triển phần
mềm ở môi trường chuyên nghiệp, bên cạnh việc giúp em học được thêm nhiều kiến thức về
phát triển ứng dụng web. Ngoải ra, em cũng có cơ hội cải thiện các kỹ năng mềm như giao
tiếp và thuyết trình.
Quá trình thực tập bắt đầu bằng việc củng cố, trau dồi kiến thức cho các thực tập sinh về
các chủ đề và công nghệ phổ biến, đây là quá trình tự học kết hợp với trao đổi cùng người
phụ trách (mentor) và các thành viên trong team.
Sau đó, thực tập sinh sẽ được giới thiệu với một project đang được phát triển, để thực
hiện trong suốt khoảng thời gian còn lại của kỳ thực tập. Thực tập sinh sẽ dành một khoảng
thời gian để đọc mã nguồn của project và tìm hiểu về các kiến thức, cơng nghệ được sử dụng
trong project. Sau khi đã hiểu mã nguồn và các công nghệ được sử dụng, thực tập sinh sẽ
chọn các ticket còn mở để thực hiện.
Các ticket em chọn trong q trình thực hiện project là các tính năng tích hợp với đám
mây, và refactor mã nguồn.

1. Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian : 1 ngày
Nội dung :

● Nhận thẻ nhân viên
● Nhận thiết bị cần sử dụng trong công việc như laptop, headset, thiết lập tài khoản
nhân viên
● Tham gia buổi hướng dẫn nhân viên mới: giới thiệu về công ty, cơ cấu tổ chức,
phổ biến quy định và nội quy, giới thiệu các công cụ làm việc và liên lạc, quy
trình và thơng tin liên lạc khi cần giúp đỡ.
● Hoàn tất các thủ tục giấy tờ và hợp đồng
● Gặp và giới thiệu với team kỹ sư
● Gặp và trao đổi với mentor về định hướng trong tương lai, kế hoạch trong kỳ thực
tập và lên kế hoạch cho các task tìm hiểu đầu tiên

Võ Hồng Việt

Đỗ Phi Long


6

2. Nghiên cứu kỹ thuật

Hình 2.1 Kế hoạch học tập và làm việc của kỳ thực tập
2.1.

Tìm hiểu các tính năng nâng cao của C#

Thời gian: 4 tuần
Nội dung: Tìm hiểu các tính năng mới trong các phiên bản gần đây của C#. Ngồi ra,
trong q trình thực hiện các task liên quan đến C#, em tìm hiểu thêm một số tính năng
nâng cao, có ảnh hưởng đến performance.
● Các tính năng nâng cao trong C#:

o LINQ: là các tính năng query và biến đổi dữ liệu từ một bộ dữ liệu (như
một collection, một bảng trong CSDL quan hệ,…) ngay trong mơi trường
C#. Nhờ có LINQ, các framework như Entity Framework và Entity
Framework Core có thể truy xuất dữ liệu trong các CSDL quan hệ một
cách thuận tiện.
o IEnumerable: IEnumerable là interface cơ sở cho các collection có thể
duyệt qua được trong C# bằng cách sử dụng Iterator pattern để duyệt qua
các phần tử trong collection thông qua các class thuộc interface
IEnumerator. Các thao tác LINQ có thể được thực hiện lên collection kế
thừa từ IEnumerable để query, biến đổi các phần tử.
o IQueryable: kế thừa từ interface IEnumerable, cung cấp khả năng tạo
expression tree để query dữ liệu từ các bộ dữ liệu ngoài bộ nhớ như các
CSDL. Expression tree cho phép IQueryable tạo nên các câu lệnh query
như lệnh SQL để thực hiện trên một CSDL quan hệ, nên các lệnh kết,
nhóm, hay điều kiện có thể được tích hợp thành một câu lệnh SQL hồn
chỉnh để thực thi trong hệ quản trị CSDL. Đây là cải tiến so với cách query
tất cả dữ liệu vào bộ nhớ rồi áp dụng các lệnh khác của IEnumerable, do
IEnumerable chỉ có thể duyệt trên dữ liệu có sẵn trong bộ nhớ.

Võ Hoàng Việt

Đỗ Phi Long


7
o IEnumerator: là interface chung có các class chứa hành vi duyệt collection
của IEnumerable. IEnumerator có nhiệm vụ quyết định cách duyệt qua
collection và khi IEnumerable cần được duyệt, nó sẽ trả về một
IEnumerator tương ứng với cách duyệt của collection.
● Một số tính năng của C# 9.0:

o Record type: kiểu dữ liệu reference type dùng để chứa dữ liệu bất biến, hỗ
trợ các tác vụ như so sánh giá trị (value equality), format string có sẵn, và
vẫn có hỗ trợ kế thừa
o with expression: toán tử giúp tạo ra một record mới từ record có sẵn ở vị
trí tốn hạng bên tay trái, với các giá trị được thay đổi nằm trong một đối
tượng anonymous object ở vị trí toán hạng bên tay phải
o Init only setters: một accessor của property dùng để khởi tạo giá trị cho
property mà không cần qua accessor set
o Top-level statement: file code entry point của chương trình khơng cần phải
có class Program và hàm Main mà thay vào đó code xử lý có thể nằm trực
tiếp bên ngồi
o Target-typed new expression: tốn tử new có thể bỏ khơng cần ghi cụ thể
kiểu của đối tượng đang được khởi tạo, trình biên dịch biết được kiểu muốn
khởi tạo dựa vào khai báo kiểu của đối tượng
o Covariant return types: các hàm override từ một hàm được kế thừa có thể
trả về kiểu dữ liệu được kế thừa từ kiểu trả về của hàm gốc. Tính năng này
giúp tăng sự linh hoạt của tính đa hình lên đáng kể, đặc biệt trong các
trường hợp sử dụng Factory pattern hoặc Prototype pattern

Võ Hoàng Việt

Đỗ Phi Long


8
Hình 2.2 Target-typed new expression
● Một số tính năng của C# 10:
o Record struct: Kiểu record cho các kiểu struct, hỗ trợ các tính năng như
các kiểu record class được giới thiệu trong C# 9.0
o Global using directive: từ khóa global cho phép chỉ thị using được áp dụng

lên tất cả các file code trong project
o Các cải tiến với lambda expression như: có thể được khai báo kiểu trả về,
có thể được áp dụng các attribute, kiểu của lambda expression (natural
type) có thể được biết bởi trình biên dịch
o Const string có thể được khởi tạo bằng một string được interpolate nếu như
các tham số cũng là const string
o Các kiểu record có thể sử dụng từ khóa sealed lên phương thức ToString để
ngăn không cho các kiểu kế thừa override phương thức này và ép chúng
phải sử dụng phương thức ToString được định nghĩa trong kiểu record cơ
sở
o Deconstruction có thể sử dụng biến đã có sẵn và khai báo biến mới cùng
lúc
Kết quả:
● Học được thêm nhiều tính năng mới và tiện dụng của C#, hiểu được cách hoạt
động của nhiều tính năng và đối tượng thơng dụng trong .NET
● Áp dụng một số trong các tính năng trên vào quá trình làm việc thường ngày
2.2.

Tìm hiểu sâu về OOP

Thời gian: 1 tuần
Nội dung: Tìm hiểu về các khái niệm nâng cao của mơ hình Lập trình hướng đối tượng
và các best practice khi phân tích, thiết kế và lập trình hướng đối tượng.

Võ Hồng Việt

Đỗ Phi Long


9

● SOLID: là một nhóm 5 nguyên tắc trong LTHĐT bao gồm (1) Single
responsibility principle, (2) Open-closed principle, (3) Liskov substitution
principle, (4) Interface segregation và (5) Dependency inversion. Các nguyên tắc
này được tạo nên để định hướng cho phát triển phần mềm bằng các ngơn ngữ
OOP, giúp phần mềm có thiết kế dễ bảo trì, mở rộng và tránh tình trạng trở nên
q phức tạp, khó hiểu hoặc khơng thể chỉnh sửa.
● Design pattern: là các bản mẫu thiết kế trình bày cách giải quyết của một số vấn
đề phổ biến trong thiết kế hướng đối tượng, được đúc kết sau nhiều lần thực hiện
giải quyết các vấn đề đó. Các pattern gốc thể hiện những vấn đề kinh điển được
bắt gặp từ lâu trong lịch sử hướng đối tượng.
● Dependency injection (DI): là một mẫu thiết kế giúp tách cơng việc khởi tạo và
quản lý vịng đời của một đối tượng ra khỏi các đối tượng khác phụ thuộc vào nó.
Thay vì để đối tượng lớn khởi tạo và quản lý các đối tượng mà nó phụ thuộc vào,
với DI ta sẽ để nhiệm vụ khởi tạo và quản lý các đối tượng đó ở một nơi khác, và
chỉ truyền chúng vào đối tượng lớn khi khởi tạo hoặc khi gọi một phương thức
nào của nó mà cần sử dụng đến một đối tượng khác. Pattern này dẫn đến một
pattern khác mở rộng hơn – đưa các công việc khởi tạo và quản lý các đối tượng
được phụ thuộc vào một class gọi là Dependency injection container, tạo nên một
framework mà các dependency của một đối tượng có thể được khởi tạo, quản lý,
và truyền cho nó khi cần mà bản thân đối tượng không cần biết các dependency đó
đến từ đâu.
Kết quả:
● Học được cách thiết kế hướng đối tượng hiệu quả, dễ bảo trì và mở rộng
● Hiểu được các vấn đề cơ bản thường gặp phải khi thiết kế hướng đối tượng
● Học được cách quản lý dependency trong các phần mềm, pattern này được sử
dụng nhiều để quản lý các đối tượng trong các framework phát triển web như
ASP .NET Core

Võ Hoàng Việt


Đỗ Phi Long


10
2.3.

Tìm hiểu về Entity Framework Core

Thời gian: 1 tuần
Nội dung: Tìm hiểu về EF Core – một object-relational mapper cung cấp khả năng tương
tác với CSDL quan hệ thông qua các đối tượng .NET và có hỗ trợ nhiều CSDL quan hệ.
Sau khi tìm hiểu, em có một buổi thuyết trình về EF Core với các thành viên trong team
bao gồm các mentor và các bạn intern khác.
EF Core là lớp trừu tượng hóa các tương tác thực tế giữa chương trình và CSDL quan hệ,
các CSDL khác nhau sẽ có cách tương tác khác nhau với chương trình, các package
provider cung cấp các tương tác thực tế này. Mỗi CSDL có một package provider như
MySQL Connector, PostgreSQL Provider, SQL Provider,…
● Entity class: các class .NET đại diện cho các table trong database, mỗi đối tượng
của một class đại diện cho một dòng trong table được đại diện bởi class đó. Mặc
định, tất cả property có get và set của entity class đều được dùng để tạo table
● DbSet: collection đại diện cho một table trong database, mỗi phần tử trong DbSet
là một đối tượng của entity class tương ứng

Hình 2.3 Các entity class trong EF Core
● Database context: đại diện cho một session giữa chương trình và database, ta có
thể dùng đối tượng này để query các entity cũng như chỉnh sửa chúng

Võ Hoàng Việt

Đỗ Phi Long



11
● Migration: là một công cụ để tạo và quản lý các phiên bản của database. Ta có thể
định nghĩa các entity class và mối quan hệ của chúng trong code và sử dụng tool
của EF Core để tạo và áp dụng các migration. Lịch sử các migration được EF
Core lưu lại và ta có thể quay trở lại migration trước đó hoặc áp dụng tất cả các
migration chưa được áp dụng và EF Core sẽ thay đổi cấu trúc database tương ứng
● Property: là các thuộc tính của dữ liệu của một table trong database, ta có thể áp
dụng các thuộc tính bằng cách đặt attribute cho các trường dữ liệu hoặc cấu hình
dữ liệu của table trong class Database context
● Query: Để đọc dữ liệu từ database, ta dùng các phương thức LINQ để query trên
các DbSet, EF Core sẽ tạo các câu lệnh SQL tương ứng và khi các phương thức
như ToList() hoặc Single() được gọi, EF Core sẽ gửi câu lệnh đến database để
thực thi và trả về kết quả. Kết quả của các lệnh đọc dữ liệu là một collection các
entity

Hình 2.4 Đọc dữ liệu thỏa điều kiện vào một collection entity
● Mutation: Để thêm hoặc xóa dữ liệu khỏi database, ta dùng các phương thức
LINQ như Add() và Remove() trên các DbSet với tham số là entity cần thêm hoặc
xóa. Để chỉnh sửa dữ liệu, ta thay đổi giá trị các thuộc tính của entity rồi gọi
DbContext.SaveChanges(). Các thay đổi thêm, xóa, sửa trên database chỉ được
thực thi sau khi gọi DbContext.SaveChanges()
● Aggregation: ta có thể dùng một số phương thức LINQ như Count, Sum, Average
trên các DbSet để thực hiện các phép kết xuất phổ biến

Võ Hoàng Việt

Đỗ Phi Long



12
● Các best practice khi làm việc với EF Core:
o Nên Select chỉ các trường dữ liệu cần sử dụng để tránh đọc dữ liệu của tồn
bộ dịng trong table, điều này đặc biệt đáng lưu ý khi cấu trúc table lớn,
chứa nhiều trường dữ liệu có kích cỡ lớn
o Giới hạn số lượng phần tử khi đọc để tránh đọc tồn bộ table, đặc biệt với
các table có nhiều dòng dữ liệu
o Nếu một đối tượng được đọc từ database cần tham chiếu đến các đối tượng
liên quan đến nó, ta nên đọc chúng trong cùng một lệnh với đối tượng gốc
để giảm số lần chương trình phải gửi lệnh đọc đến database
o Mặc định, EF Core theo dõi các đối tượng được đọc lên từ database để phát
hiện sự thay đổi của chúng, ta có thể bỏ theo dõi trên các đối tượng readonly bằng cách gọi AsNoTracking() trên DbSet trước khi gửi lệnh đến
database. Việc này sẽ tiết kiệm thời gian và bộ nhớ cần để xử lý theo dõi
trạng thái của entity
o Đối với các lệnh update cho nhiều dòng trong table hoặc update cả table, ta
nên tránh việc đọc các entity lên từ database rồi chỉnh sửa dữ liệu của
chúng. Việc này sẽ tốn cả thời gian và bộ nhớ để đọc toàn bộ dữ liệu trong
table, đồng thời EF Core cũng sẽ gửi đi một lệnh update cho mỗi entity
được thay đổi, dẫn đến tốn rất nhiều thời gian để gửi các lệnh. Thay vào đó,
ta có thể viết câu lệnh SQL để thực thi trực tiếp trên database bằng cách
truyền lệnh vào phương thức DbContext.ExecuteSqlRaw().
● Soạn slide và thuyết trình trước các thành viên trong team về EF Core, bài thuyết
trình nhận được đánh giá tốt và tạo được nhiều tương tác với các thành viên trong
team. Buổi thuyết trình chứa các nội dung như sau:
o Giới thiệu về EF Core và một số khái niệm trong EF Core
o Cách setup project để tích hợp EF Core
o Cách mơ hình hóa dữ liệu với EF Core
o Migration và quản lý schema


Võ Hoàng Việt

Đỗ Phi Long


13
o Các thao tác đọc, ghi dữ liệu trong EF Core
o Các thao tác kết xuất dữ liệu trong EF Core
o Disconnected mode: làm việc với các entity bên ngoài DbContext
o Các vấn đề liên quan đến performance cần lưu ý
Kết quả:
● Học được cách làm việc với EF Core, giúp giảm thời gian viết các thành phần và
lệnh truy xuất database đi đáng kể
● Biết cách cấu hình và tùy chỉnh các thiết lập của EF Core
● Hiểu được cách hoạt động của EF Core
2.4.

Tìm hiểu về ASP .NET Core MVC và làm trang web demo

Thời gian: 1 tuần
Nội dung: Tìm hiểu về ASP .NET Core MVC và thực hành bằng cách xây dựng ứng
dụng demo.
● MVC: là viết tắt của “Model-View-Controller”, là một mơ hình kiến trúc được sử
dụng phổ biến trong phát triển ứng dụng web, dù ban đầu được dùng cho các ứng
dụng giao diện đồ họa trên desktop. MVC có 3 thành phần, mỗi thành phần phụ
trách một công việc riêng:
o Model: Định nghĩa, xử lý, lưu trữ dữ liệu
o View: Giao diện, hiển thị dữ liệu từ Model
o Controller: Xử lý tương tác người dùng, điều khiển Model để phản hồi với
các tương tác

o Ngồi ra, ASP .NET Core MVC cịn sử dụng một thành phần gọi là
ViewModel, dùng để mơ hình hóa các dữ liệu được hiển thị trên một View
cụ thể, nên một ViewModel có thể dành cho một View hoặc cũng có thể

Võ Hồng Việt

Đỗ Phi Long


14
dành cho nhiều View trong một số trường hợp các View có dữ liệu giống
nhau. View có thể truy xuất dữ liệu được mơ hình hóa ở ViewModel bằng
CSHTML

Hình 2.5 Mơ hình MVC
● Razor: là một render engine và một markup syntax giúp chứa code .NET trong
file HTML, file View sử dụng Razor có kiểu .cshtml. Razor cho phép chạy các
lệnh C# trong file HTML, nhờ đó View có thể truy cập được dữ liệu ở
ViewModel hoặc ViewData, ViewBag,… Một trong số các ứng dụng hữu ích nhất
của tính năng này là khả năng hiển thị các danh sách các đối tượng dữ liệu, do
Razor có thể chạy một vịng lặp và điền thông tin của mỗi đối tượng vào một phần
tử của danh sách
● Các controller được map đến các path khác nhau của trang web để xử lý tương tác
ở các path đó. Controller có thể nhận vào ViewModel của View tương ứng ở path
và có thể trả về một View và truyền dữ liệu vào View đó, hoặc điều hướng tới một
Controller khác. Các phương thức của Controller được gọi là các action, mỗi
action xử lý một tương tác của người dùng với View. Cú pháp routing mặc định
của ứng dụng ASP .NET Core MVC là “[tên_miền]/[tên_controller]/[tên_action]”

Võ Hoàng Việt


Đỗ Phi Long



×