Ứng dụng của tôi bao gồm một số hội đồng back-end (bao gồm lớp kho dữ liệu Entity Framework) được chia sẻ bởi một số hội đồng front-end (bao gồm dịch vụ Windows và một ứng dụng web MVC3).Nơi để định vị mô-đun Ninject trong ứng dụng nhiều tầng
Sự hiểu biết của tôi về quy trình liên kết Ninject là mỗi assembly có chứa các kiểu tiêm cũng nên chứa một mô-đun Ninject xác định các ràng buộc mặc định cho các kiểu này. Tập các module được định nghĩa sau đó sẽ được nạp vào hạt nhân Ninject của các hội đồng tiêu thụ.
Tuy nhiên, tôi đang gặp sự cố, vì phạm vi ràng buộc bắt buộc không phải lúc nào cũng nhất quán. Ví dụ, dự án MVC của tôi cần phải liên kết với bối cảnh dữ liệu InRequestScope
, trong khi dịch vụ Windows liên kết với cùng một lớp InThreadScope
. Tôi có thể giải quyết vấn đề này bằng cách di chuyển tất cả các mô-đun vào các dự án front-end và do đó duy trì các bản sao riêng biệt của mỗi mô-đun cho mỗi kịch bản sử dụng, nhưng điều này có vẻ như hacky, vì nó sao chép nhiều nội dung mô-đun qua nhiều dự án .
Có cách nào hay nhất về nơi mô-đun phải được đặt trong ứng dụng nhiều tầng và cách tôi có thể điều chỉnh việc này với nhu cầu về sự khác biệt về ràng buộc giữa các dự án?
Rất cám ơn cho đề xuất của bạn,
Tim
cũng xem http://stackoverflow.com/questions/1699197/how-do-you-organise-your-ninject-modules (IIRC này Q là một số nhưng đây là điều tốt nhất tôi có bây giờ) –
Cảm ơn Ruben. Bạn nói đúng là có nhiều điểm chung giữa hai câu hỏi này. Tôi đặc biệt thích đề xuất của bạn về việc truyền các tham số thời gian chạy vào các mô-đun nằm trong các hội đồng hỗ trợ - rất linh hoạt. –
Hmm; đó là một số thời gian trước đây (không cố gắng để pimp câu trả lời của tôi trong bất kỳ cách nào). Tôi có thể có nghĩa đen có nghĩa là * đi qua các thông số * trở lại trong ngày - nói chung tôi sẽ cố gắng làm điều đó thông qua các giao diện càng nhiều càng tốt. Ngoài ra, đó là trước khi http://manning.com/seemann, mà làm giảm số lượng câu hỏi bạn sẽ tìm thấy khó hiểu trong kiến trúc DI đáng kể - def chạy mua nó không có câu hỏi. –