fbpx
close

Middleware là gì? Ứng dụng của Middleware trong thực tế

Tác giả: TinoHost Ngày cập nhật: 13/10/2021 Chuyên mục: Webmasters
Disclosure
Website Wiki.tino.org được cung cấp bởi Tino Group. Truy cập và sử dụng website đồng nghĩa với việc bạn đồng ý với các điều khoản và điều kiện trong chính sách bảo mật - điều khoản sử dụng nội dung. Wiki.tino.org có thể thay đổi điều khoản sử dụng bất cứ lúc nào. Việc bạn tiếp tục sử dụng Wiki.tino.org sau khi thay đổi có nghĩa là bạn chấp nhận những thay đổi đó.
Why Trust Us
Các bài viết với hàm lượng tri thức cao tại wiki.tino.org được tạo ra bởi các chuyên viên Marketing vững chuyên môn và được kiểm duyệt nghiêm túc theo chính sách biên tập bởi đội ngũ biên tập viên dày dặn kinh nghiệm. Mọi nỗ lực của chúng tôi đều hướng đến mong muốn mang đến cho cộng đồng nguồn thông tin chất lượng, chính xác, khách quan, đồng thời tuân thủ các tiêu chuẩn cao nhất trong báo cáo và xuất bản.

Bạn có bao giờ thắc mắc “thứ gì” hay “cái gì” nằm giữa request và response hay không? Hay bạn có bao giờ đặt câu hỏi rằng có cơ chế nào kiểm tra các request HTTP trước chúng gửi vào ứng dụng của bạn? Nếu bạn đang thắc mắc, Middleware chính là câu trả lời bạn đang tìm kiếm. Vậy, Middleware là gì? Khi nào sử dụng Middleware nhé!

Tìm hiểu về Middleware

Middleware là gì?

Định nghĩa này khá dễ hiểu vì “cái tên nói lên tất cả”: Middleware tạm dịch là phần mềm trung gian, là một phần mềm trung gian giữa 2 phần mềm/ dịch vụ/ ứng dụng để chúng có thể giao tiếp với nhau một cách dễ dàng hơn.

Nếu bạn thường xuyên làm việc với các Proxy, bạn cũng có thể xem Middleware như những hoạt động biên dịch, accumulator dữ liệu hoặc là một cổng Proxy chuyển tiếp request vẫn ổn.

middleware-la-gi

Middleware có những lợi ích gì?

Trong phần định nghĩa, công việc của Middleware có vẻ khá đơn giản. Nhưng lợi ích mà Middleware mang lại thực sự rất lớn và tạo ra những tác động tích lên ứng dụng của bạn như:

  • Thu hẹp khoảng cách giữa ứng dụng và cơ sở hạ tầng phần cứng, cũng như các phần mềm cấp thấp. Từ đó, việc điều phối các phần của ứng dụng trở nên thuận lợi hơn, đồng thời đơn giản hoá các công việc tích hợp phần mềm
  • Hỗ trợ các nhà phát triển tốt hơn trong việc tránh gặp rắc rối do sử dụng các nền tảng cũ, cấp thấp quá sơ sài, những nền tảng này thường sẽ tạo ra rất nhiều lỗi.
  • Cung cấp các báo cáo, tóm tắt để nhà phát triển có thể sửa lỗi, gia tăng bảo mật, lưu trữ phiên bản và nâng cấp phần mềm để người dùng có trải nghiệm tốt nhất
  • Middleware giúp đơn giản hoá các nhu cầu phát triển đa nền tảng, hệ thống phân tán và nhúng trở nên đơn giản hơn.

Vì sao nên sử dụng Middleware?

Những công nghệ hỗ trợ giao tiếp đa nền tảng hay nhu cầu phát triển 1 ứng dụng nhưng có thể giao tiếp trên nhiều nền tảng đang trở nên ngày một cao.

Song song đó, rất nhiều nhà phát triển xây dựng ứng dụng/ phần mềm và cung cấp sản phẩm của họ để người dùng, nhà phát triển khác có thể “nhúng” vào trong sản phẩm dịch vụ của họ trở nên phổ biến hơn.

middleware-la-gi

Vì thế, vai trò cầu nối tương tác giữa người dùng với hệ thống, vai trò trung gian giữa request và response cùng như xử lý các loại logic của Middleware trở nên vô cùng hữu dụng và cần thiết.

Ứng dụng của Middleware trong thực tế

“Người phiên dịch” – Translator

Trong thực tế, có rất nhiều dạng data-interchange như JSON, XML hay Protobuf. Tuy nhiên, trong thời điểm hiện tại JSON là là dạng được sử dụng dùng nhiều nhất và trong hầu hết các trường hợp.

Ví dụ, chúng ta có 2 dịch vụ cần giao tiếp với nhau, chúng ta có thể tạo ra một Middleware sử dụng các thư viện chuyển đổi dữ liệu, dịch dữ liệu sang định dạng mà dịch vụ còn lại có thể hiểu được.

middleware-la-gi

Tích luỹ – nhân bản dữ liệu

Microservice là một dạng kiến trúc đang rất phổ biến trong các phần mềm hiện đại, có tính phức tạp cao.

Nếu bạn chưa biết về Microservice, bạn có thể hiểu đơn giản Microservice là một phần mềm/ ứng dụng được tạo nên từ rất nhiều ứng dụng, module dịch vụ nhỏ được phát triển tách biệt với nhau và sử dụng các phương pháp giao tiếp với nhau để tạo thành một ứng dụng lớn.

Ví dụ, bạn phát triển một dự án phần mềm thương mại điện tử, để các nguồn thông tin được phân bổ riêng biệt nhằm để có thể phân tích và nghiên cứu hành vi của khách hàng. Bạn có thể sử dụng các Microservice riêng biệt cho lưu trữ, truy xuất dữ liệu và một Microservice khác để xác thực, lưu trữ các thông tin về người dùng.

middleware-la-gi

Chúng ta sẽ có 2 trường hợp để xử lý vấn đề này bao gồm:

  • Accumulating Data
  • Duplicating Data

Accumulating Data

Bạn sử dụng một Middleware để gửi thông tin đến cả 2 server và yêu cầu chúng tìm kiếm thông tin trong cơ sở dữ liệu sản phẩm và cơ sở dữ liệu người dùng. Sau đó, tìm ra sản phẩm phù hợp với yêu cầu của người dùng và trả kết quả về cho người dùng.

Trong trường hợp này, nếu bạn có nhiều server, Microservice khác nhau, lượng dữ liệu sẽ tăng tuyến tính theo số lượng server, Microservice bạn có. Đồng nghĩa với việc thời gian xử lý sẽ lâu hơn.

Duplicating Data

Đối với phương pháp này, bạn sẽ lưu trữ dữ liệu tại cơ sở dữ liệu người dùng, cơ sở dữ liệu sản phẩm và thêm 1 cơ sở dữ liệu thứ 3 chứa cả 2 dữ liệu trên.

Điều này sẽ giúp người dùng có thể tìm kiếm dữ liệu trực tiếp và nhanh chóng hơn bao giờ hết. Tuy nhiên, giải pháp này rất hao tổn bộ nhớ nếu bạn có nhiều cơ sở dữ liệu khác nhau.

Như trong ảnh dưới đây, bạn sẽ thấy Middleware như sau dùng để phân bổ lưu trữ dữ liệu một cách hiệu quả hơn:

middleware-la-gi

Bảo mật API

Trong bất cứ front end nào của client đều cung có thể nhìn thấy các request được gửi đi trong bảng điều khiển của trình duyệt hoặc Proxy. Vì thế, khi người dùng đăng nhập, đăng ký, đăng xuất các địa chỉ xác thực trên server sẽ bị lộ.

Nếu bạn đã học về những kiến thức về địa chỉ IP backend, bạn có thể sử dụng các công cụ để tấn công vào server.

Vì thế, chúng ta sẽ sử dụng Middleware như một cánh cổng Proxy nhằm để ẩn URL xác thực của server. Lúc này, Middleware sẽ là “người” giao tiếp với người dùng và truyền yêu cầu của họ đến máy chủ xác thực sau đó gửi lại phản hồi cho người dùng.

middleware-la-gi

Bằng cách này, chúng ta có thể chặn gần như toàn bộ request đến server xác thực trừ những request của Middleware. Điều này sẽ khiến server xác thực của chúng ta trở nên an toàn hơn.

Hiển thị API công khai

Trong phần trước, chúng ta đã biết rằng Middleware có thể sử dụng để hạn chế truy cập vào các API của chúng ta.

Nhưng hiện tại bạn lại muốn chia sẻ, cấp quyền truy cập một cách hạn chế vào API thì sao?

Ví dụ, chúng ta là một nhóm kỹ sư phần mềm trong ngân hàng và ngân hàng đang lên kế hoạch để tổ chức một cuộc thi Hackathon? Trong trường hợp này, chúng ta sẽ phải cấp quyền truy cập API.

middleware-la-gi

Vì chúng ta là ngân hàng, nên, chúng ta không chia sẻ toàn bộ quyền truy cập vào các API do chúng liên quan trực tiếp đến dữ liệu người dùng và tài sản của họ. Vậy giải pháp là chúng ta sẽ cần phải chia sẻ API một cách có chọn lọc.

Trong trường hợp này, chúng ta có thể triển khai một Middleware chỉ hiển thị một số endpoint và chuyển hướng yêu cầu đến các API được cấp. Sau đó, chúng ta sẽ thực hiện cung cấp các API này đến các nhà phát triển tham gia vào Hackathon.

Sau quá trình tìm hiểu về Middleware là gì cũng như ứng dụng của Middleware trong thực tế ra sao, bạn cũng đã nắm rất nhiều kiến thức bổ ích rồi đúng không? Tino Group hi vọng rằng những kiến thức này có thể trở thành hành trang trong việc phát triển sự nghiệp lập trình của bạn. Cuối cùng, Tino Group chúc bạn luôn thành công trên con đường lập trình web đã chọn!

Bài viết có tham khảo nội dung từ nhiều nguồn: FreeCodeCamp, TopDev, Redhat, IBM,…

Những câu hỏi thường gặp về Middleware

Middleware trong Laravel là gì?

Middleware trong Laravel có chức năng tương tự với cơ chế cho phép người dùng có thể tham gia vào các luồng xử lý request trong ứng dụng được dựng bằng Laravel.

Cách tạo Middleware trong Laravel ra sao?

Để tạo một Middleware trong Laravel, bạn sử dụng cú pháp như sau:

  • php artisan make:Middleware [MiddlewareName]

Các loại Middleware trong ExpressJS là gì?

Trong ExpressJS, có 5 loại Middleware bao gồm:

  • Application-level Middleware
  • Router-level Middleware
  • Error-handling Middleware
  • Built-in Middleware
  • Third-party Middleware

Nên dùng phiên bản ExpressJS nào để làm việc với Middleware?

Tốt nhất, bạn nên sử dụng ExpressJS phiên bản 4.x trở lên. Vì từ phiên bản này, ExpressJS không còn phụ thuộc vào thư viện Connect nữa, hầu hết các hàm Middleware đều được tách thành những module riêng biệt khiến việc lập trình với ExpressJS trở nên thuận lợi hơn.

Hiện tại, chỉ còn duy nhất Middleware express.static vẫn chưa được tách ra thành module riêng biệt.

Chia sẻ một chút thông tin về bạn. Những thông tin này có thể được công khai.

Xem thêm bài viết

Bài viết liên quan

Mục lục

Xem nhiều

giá tốt, chất lượng cao mình rất hài lòng
chất lượng dịch vụ tốt lắm...á
chất lượng dịch vụ rất tốt.
giá tốt, chất lượng cao mình rất hài lòng
Dịch vụ chăm sóc khách hàng tốt
Dùng rất oke nha mọi người
Dịch vụ chăm sóc khách hàng tốt, mình rất hài lòng về dịch vụ của TINOHOST
Đã mua rất nhiều tên miền tại Tinohost. Chất lượng tốt
dịch vụ và chăm sóc khách hàng rất tốt , mình rất thích tinohost , mình đã sử dụng nhiều dịch vụ của tinohost rồi
tuyệt vời chăm sóc khách hàng quá tốt
dịch vụ và chăm sóc khách hàng rất tốt , mình rất thích tinohost , mình đã sử dụng nhiều dịch vụ của tinohost rồi
Quá tốt - Quá xuất sắc và tuyệt
Hỗ trợ nhiệt tình. dịch vụ chất lượng
Đội ngũ support rất nhiệt tình.
Sử dụng dịch vụ của bạn Tinohost 2 3 năm nay chưa khi nào phải thất vọng.
host dùng chất lượng, miền giá rẻ
dịch vụ hỗ trợ rất nhanh, tốc độ hosting tốt
Hộ trợ tốt, nhanh. Tuyệt vời 🥰
tuyệt vời, dịch vụ cực tốt và hỗ trợ siêu nhanh
Làm việc nhanh chóng, giá thành hợp lí.
Hosting rẻ và nhanh thích hợp cho học sinh sinh viên như mình
dịch vu tốt ! Sẽ sử dụng thưởng xuyên !
Mỗi lần cần gì, nhắn Tino là được hỗ trợ ngay. Nên một đứa không biết gì về web như mình cũng tạo được blog. Cơ bản mình chỉ lo viết, mọi thứ có anh IT của Tino lo hết.
Nhìn chung thì Tino xứng đáng là một trong những nhà cung cấp host giá rẻ #1 tại VN. Bên này support khá nhanh và nhiệt tình nên quá trình sử dụng diễn ra tương đối trơn tru.
Chất lượng quá ok so với mức giá. Các SME có thể tham khảo để dựng web nhé.
uy tín chất lượng chuẩn cho 5 sao
Dịch vụ nhanh chóng thanh toán tiện lợi
Dịch vụ nhanh chóng, giá cả hợp lý
Chất lượng phục vụ ok, support khá nhanh chóng và chất lượng gói lớn tốt, gói nhỏ cần tốt hơn.
Dịch vụ tốt, giá cả hợp lý👍
Rất hay, rất tốt, rất hữu ích
Hỗ trợ rất nhanh và nhiệt tình
Chất lượng phục vụ ok, support khá nhanh chóng và chất lượng gói lớn tốt, gói nhỏ cần tốt hơn.
dịch vụ tốt, thanh toán nhanh chống
Hài lòng dịch vụ của tinohost
Sau khi sử dụng dịch vụ của TinoHost. Mình thấy website load nhanh hơn hẳn so với sử dụng ở nhà cung cấp cũ. Giá cả do mình đc mua với giá sale 99% của TinoHost nên rất là rẻ. Gói mình mua là gòi Hosting Bussiness 20GB. Thông số cấu hình cao nên web load khá mượt
Chúc TinoHost phát triển!
domain rẻ, có nhiều gói hữu ích thích hợp cho sinh viên
Hài lòng về dịch vụ và tư vấn
Dịch vụ tốt . Support nhiệt tình
Chất lượng OK
Nhanh chóng
dịch vụ rất tốt
Nhân viên support nhanh, hỗ trợ nhiệt tình, giao dịch tự động nên khá tiện
Đã dùng nhiều dịch vụ tại Tinohost, chất lượng tốt, rất hài lòng ...😀
Sự dụng rất hài lòng với các dịch vụ của tinohost
Dịch vụ tốt, uy tín chất lượng
Tino dịch vụ quá tuyệt vời
Giá rẻ, dịch vụ tốt, hỗ trợ nhanh chóng
dịch vụ rất tốt rất tuyệt vời
Giá hợp lý cho người mới dùng
Mình thấy Tinohost có giao diện thân thiện, dễ đăng ký sử dụng cho người mới tập tành làm web như mình. Hosting hỗ trợ có nhiều lựa chọn về dung lượng và giá cả! Thanh toán qua momo thuận tiện. Recommended!
wed quá ok làm việc nhanh ngọn
Dịch vụ tốt. Khá hài lòng vì support nhiệt tình
Dịch vụ quá tuyệt vời danh cho các bạn
Xin cảm ơn đội ngủ kỹ thuật. Các bạn rất chuyên nghiệp và thân thiện. Tôi sẽ giới thiệu các bạn cho bạn bè của mình.
Dịch vụ hỗ trợ tốt, ổn định, thanh toán dễ dàng.
Mình từng dùng VPS bên Vietel IDC, hay gặp lỗi vặt và bảo trì liên tục. Nhưng Tino thì rất ok
dùng tốt, nhanh, dễ sử dụng
Giao diện đẹp mắt, dễ sử dụng
Đề nghị xem lại vấn đề phục vụ khách hàng (livchat)!
Good. Tốc độ cao. Tùy chỉnh nhiều trên shared hosting.
hosting ngon, giá luôn rẻ, tôi làm code nhưng rất thích sài host tino
Tino cung cấp host rất chuyên nghiệp. Đội ngũ kỹ thuật hỗ trợ rất tận tâm và nhiệt tình. Mình sẽ tiếp tục ủng hộ Tino 🥰.
Rất tuyệt vời🙆🙆🙆🙆🙆🙆🙆🙆🙆
Xét về tầm giá thì TinoHost rất đáng để mua và sử dụng lâu dài.
Dịch vụ chất lượng, ủng hộ 1 năm nay rồi
tuyệt vời quá đi,tuyệt vời quá đi
Tốc độ ổn định, tư vấn nhiệt tình
mới tham gia, mong mọi người hỗ trợ thêm
Tốc độ khá tốt với gói rẻ nhất 9k
Giao dịch nhanh,support nhanh và tận tình,chuyển miền nhanh,Hosting Ok
mua sản phẩm dịch vụ tinhot rất tốt tặng ad 5tr ** luon nè🥰🥰🥰
tinohost
một truong những nơi bán hosting rẻ, chất lượng dành cho anh em nào cần để làm web
mua tại : tinohost.com
mình đã mua 2 tên miền + hosting của Tino Host . quả nhiên hiệu quả SEO cải thiện đáng kể và chứng chỉ bảo mật HTTPS miễn phí của Tino Host cũng ko kém phần quang trọng cho việc SEO website của mình
Tino host là một trong nhà cung cấp tốt nhất mình từng sử dụng. Với ưu đãi khuyến mại nhiều, giá thành rẻ kèm theo đó là sự support tuyệt vời của các admin. Nếu ai chưa lựa chọn được nhà cung cấp cho bản thân mình thì Tinohost sẽ là câu trả lời tốt nhất.
dịch vụ tốt, đội ngũ support nhiệt tình, cảm ơn #tinohost
Uy tín, chất lượng, nhân viên hỗ trợ nhiệt tình
mua 2 domain tại tinohost dùng rất chất lượng
Đã mua 02 domain và hosting tại TinoHost, hài lòng cách tư vấn và chăm sóc khách hàng của TinoHost :)
Giá rẻ cấu hình mạnh, black friday là sự bùng nổ của Tino
Hay web bán tài nguyên rất ngon
dịch vụ tốt, mua luôn host chất lượng cao của công ty nhân dịp blackfriday, cảm ơn #tinohost
Dịch vụ rất tốt, nhân viên tận tình.
Hỗ trợ nhiệt tình nhất trong các nhà cung cấp mih từng dùng. Không những server mạnh, ưu đãi có 1 không 2 mà còn nhiều plugin pro bản quyền đính kèm nữa. Quyết định gắn bó "Lifetime" với tino 😁
Dịch vụ tốt hỗ trợ nhanh chóng
Thích cách tư vấn tận tình và nhanh gọn của Tino mỗi khi có vấn đề trục trặc. Hosting ổn định, giá rẻ tốt lắm nhé mọi người
mình có mua 2 tên msiền của tino, mình rât thích cách tư vấn và chăm sóc khách hàng tại đây. Ngoài ra giá domain khá rẻ, phù hợp cho mọi người. 5 sao
Dịch vụ tốt, support nhiệt tình
tinohost tuyệt vời giá cả hợp lý
domain mua rất rẻ :))))
tốt, chất lượng, hostingok
Hosting tốt, giá cả cạnh tranh
Tuyệt vời , Hosting quá ổn
Chất lượng lắm ạ. Domain mua rẻ nhất thị trường
Dịch vụ tốt và chất lượng
Chất lượng lắm ạ. Domain mua rẻ nhất thị trường
Tino Host dùng quá ngon đi !💥💥💥💥💥
Tôi đã mua domain và hosting của các nhà cung cấp khác rồi, nhưng thực sự thấy không tốt bằng Tino, ngoài ra còn hỗ trợ rất tốt. Cảm ơn tino nhiều!
Next Reviews
CÔNG TY CỔ PHẦN TẬP ĐOÀN TINO
Trụ sở chính: L17-11, Tầng 17, Tòa nhà Vincom Center, Số 72 Lê Thánh Tôn,  Phường Bến Nghé, Q. 1, TP. Hồ Chí Minh

Văn phòng kinh doanh: Số 42 Trần Phú, Phường 4, Quận 5, TP HCM
GPKD số 0315679836 do Sở KH và ĐT TP Hồ Chí Minh cấp
Hotline: 0364 333 333
Góp ý/Phản ánh dịch vụ: 0933 000 886