2008-11-27 64 views
9

Các ví dụ tôi có thể tìm thấy sử dụng kiến ​​trúc hai lớp, trong đó các bộ điều khiển trực tiếp sử dụng các lớp lưu trữ trong lớp truy cập dữ liệu. Xem here hoặc here.Làm thế nào để sử dụng Autofac trong một ứng dụng web 3 lớp (ASP.NET MVC)?

Bạn sẽ đăng ký thành phần nào từ lớp truy cập dữ liệu nếu bạn có dịch vụ hoặc lớp logic nghiệp vụ sử dụng các thành phần đó? Lớp truy cập dữ liệu lý tưởng không nên được tham chiếu từ lớp giao diện người dùng, phải không? Vì vậy, Application_Start sẽ không phải là nơi thích hợp để làm điều đó.

Điều gì sẽ là cách tốt hơn?

Cảm ơn bạn!

+0

Xin lỗi tôi không có câu trả lời cho câu hỏi của bạn, nhưng liên kết đến ứng dụng thương mại MVC mà bạn cung cấp rất thông tin và sâu sắc, vì vậy cảm ơn. :) – Franck

Trả lời

7

Có điều gì đó cần biết về những triển khai bạn muốn sử dụng. Có thường 3 cách để thực hiện điều này:

  1. tại thời gian biên dịch đó là những gì Autofac sử dụng
  2. khi chạy từ tập tin cấu hình được xác định trước đó lâu đài Windsor có thể làm
  3. khi chạy với một configuartion dyanamic

Với Autofac bạn có một vài lựa chọn

  1. Nối mọi thứ lại với nhau trong Application_Start
  2. Cung cấp trách nhiệm cho một thành phần khác triển khai factory pattern và đăng ký các thành phần bắt buộc.

Đối với # 2 Tôi sẽ triển khai một cái gì đó giống như giao diện IContainer sao cho khung IoC của bạn được ghép lỏng lẻo với hệ thống của bạn. Sau đó, thực hiện truy cập dữ liệu của bạn sử dụng giao diện đó để đăng ký các thành phần cần thiết.

+0

OK, vì vậy trong trường hợp đầu tiên (mọi thứ trong Application_Start) có phải là một vấn đề mà ứng dụng web bây giờ phải có một tham chiếu trực tiếp đến việc lắp ráp lớp truy cập dữ liệu? –

+0

Nếu có Application_Start của bạn biết về lớp truy cập dữ liệu của bạn là một vấn đề bạn luôn có thể trừu tượng thực hiện IoC của bạn đằng sau một giao diện và di chuyển nó ở một nơi khác. Sau đó, quyết định của những gì DAL để đăng ký có thể được làm quên lãng ứng dụng web của bạn. –

+2

Trừ khi DAL của bạn đang ngồi sau một dịch vụ web, ứng dụng web của bạn sẽ cần truy cập vào bộ sưu tập DAL của bạn thông qua thư mục bin hoặc GAC, không? –

Các vấn đề liên quan