Tạo ứng dụng ASP.NET Core đầu tiên của bạn (phần 18)

Thêm và cấu hình các services (tiếp tục)

OrderTotalCalculator cần lối truy cập tới một thực thể của ShippingCostService và TaxCalculator. Một cách tiếp
cận bản địa đối với vấn đề này là sử dụng từ khóa new và tạo một thực thể của một service bất cứ khi nào bạn cần
nó. Không may mắn là, cách tiếp cận này cặp đôi chặt chẽ code của bạn tới thực thi cụ thể bạn đang sử dụng và có
thể đảo ngược tất cả thứ tốt bạn đã giành bằng cách module hóa các đặc tính tại nơi đầu tiên. Trong một vài trường
hợp, nó có thể phá vỡ SRP bằng cách làm bạn thực hiện code khởi tạo ngoài việc sử dụng service bạn đã tạo.
Một giải pháp cho vấn đề này làm nó là vấn đề của ai đó khác. Khi viết một service, bạn có thể khai báo các
dependencies của bạn và để class khác điền các dependencies đó cho bạn. Sau đó service của bạn có thể tập trung
vào chức năng cho cái nó được thiết kế thay vì cố gắng làm việc ra làm cách nào xây dựng các dependencies của nó.
Kĩ thuật này gọi là nguyên tắc dependency injection hay Inversion of Control (IoC), Một mô hình thiết kế công nhận
là tốt cái được sử dụng mở rộng. Điển hình thì, bạn sẽ đăng kí các dependencies của ứng dụng của bạn vào một
container, cái bạn có thể sử dụng để tạo bất cứ service nào. Bạn có thể sử dụng container để tạo cả các services
ứng dụng custom của bản thân bạn và các services khung sử dụng bởi ASP.NET Core. Bạn phải đăng kí mỗi service
với container trước khi sử dụng nó trong ứng dụng của bạn.
Chú ý Tôi mô tả nguyên tắc dependency inversion và IoC container sử dụng trong ASP.NET Core chi tiết trong các
học phần sau.
Trong một ứng dụng ASP.NET Core, đăng kí này được thực hiện bằng cách sử dụng đặc tính Services của
WebApplicationBuilder. Bất cứ khi nào bạn sử dụng một đặc tính ASP.NET Core mới trong ứng dụng của bạn, bạn
cần quay trở lại tới Program.cs và thêm các services cần thiết. Nhiệm vụ này không luôn khó như nó có vẻ, điển
hình yêu cầu chỉ một dòng code hay hai để cấu hình các ứng dụng của bạn.

Chia sẻ