Autofac là gì

Trong ngữ điệu xây dựng phía đối tượng, IOC giỏi DI pattern là 1 trong những trong số những khái niệm quan trọng đặc biệt. Nó hạn chế lại sự dựa vào lẫn nhau thân các object. Nếu cai quản bằng phương pháp khởi tạo ra đối tượng người tiêu dùng thông thường, sẽ trở ngại khi project của chúng ta ngày càng lớn.

Bạn đang xem: Autofac là gì

*
Class dependencies và Mã Sản Phẩm complexity
Theo 1 định nghĩa trên trang asp.net:The Dependency Injection pattern is a particular implementation of Inversion of Control. Inversion of Control (IoC) means that objects do not create other objects on which they rely lớn bởi their work. Instead, they get the objects that they need from an outside source (for example, an xml configuration file).Dependency Injection (DI) means that this is done without the object intervention, usually by a framework component that passes constructor parameters và phối properties.Có thể hiểu:Inversion of Control (IoC) tất cả nghĩa rằng các object chưa phải từ bỏ nó tạo nên những objects cơ mà nó phụ thuộc vào.

Xem thêm: Các Tiêu Chuẩn Thiết Kế Trường Tiểu Học Đạt Chuẩn Quốc Gia 2019

Thay vào đó, nó sẽ sở hữu được rất nhiều objects nó đề xuất nhờ vào vào trong 1 bên sản phẩm công nghệ bố.Có không hề ít thư viện hỗ trợ về DI, ví như Structure Map, Spring.NET, Ninject, Autofac, Unity.Về biện pháp thực hiện Dependency Injection, bạn cũng có thể tìm hiểu thêm bài viết về Ninject tại đây.Hoặc xem thêm nội dung bài viết về Autofac ở chỗ này.Hôm nay, tôi đang khuyên bảo các bạn áp dụng module trong Autofac.

Xem thêm: Violympic - Đề Thi Toán Lớp 2 Từ Vòng 1 Đến Vòng 18

Tại sao bắt buộc áp dụng Module?

Trong project bé dại, chúng ta đăng ký sự phụ thuộc vào 1 class tuyệt nhất. Nhưng giả dụ đó là project to, được phân thành nhiều module, thì câu hỏi ĐK dependency trngơi nghỉ bắt buộc khó khăn. Trong trường thích hợp này, bạn nên thực hiện Autofac module.Autofac module chất nhận được chúng ta đăng ký những yếu tố không giống trong các lớp khác nhau. Và sau đó, bạn load bọn chúng tại một class duy nhất.

Sử dụng

Giả sử ứng dụng chia thành 2 module: Service và Autofac Example.Trong đó, module Service có 1 interface là IMessageRepository với lớp xúc tiến MessageRepository.Trong module Service, bạn tiến hành câu hỏi đăng kýpublic class DataModule: Module protected override void Load(ContainerBuilder builder) builder.RegisterType().As().InstancePerDependency(); base.Load(builder); Trong module Web, chúng ta ĐK đến toàn bộ controller:public class WebDependencyRegistration: Module protected override void Load(ContainerBuilder builder) if (builder == null) throw new ArgumentNullException(nameof(builder), "Argument builder can not be null."); //The line below tells autofac, when a controller is initialized, pass into lớn its constructor, the implementations of the required interfaces builder.RegisterControllers(Assembly.GetExecutingAssembly()); base.Load(builder); Kết hợp 2 module này trong tệp tin Startup:protected void Application_Start() AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); RegisterDependencies();private void RegisterDependencies() //Logic Layer Dependency var builder = new ContainerBuilder(); builder.RegisterModule(new DataModule()); builder.RegisterModule(new WebDependencyRegistration()); // OPTIONAL: Enable property injection inkhổng lồ action filters. builder.RegisterFilterProvider(); //set Autofac as default Dependency Resolver for application DependencyResolver.SetResolver(new AutofacDependencyResolver(builder.Build()));Thật sự thuận lợi đề nghị ko.Bạn rất có thể thiết lập ví dụ tại: MediaFire Mong rằng bạn sẽ mê thích và vận dụng giải pháp đó

Chuyên mục: Blogs