Tôi đã làm việc với cả hai loại vùng chứa giữa IWindsorContainer
và IUnityContainer
trong dự án khác nhau cho dịch vụ và Giao diện ràng buộc. Tuy nhiên tôi không khá chắc chắn sự khác biệt là gì? Họ có các tính năng giống nhau không? Nếu có thì cần phải phát triển một cái gì khác trong trường hợp hiện tại. Hay họ có một số khác biệt? Nếu có, nó là cái gì? mục đích nào tôi sẽ sử dụng cái nào? Tôi đã có một số nhỏ documentation chống lại sự nhầm lẫn này, nhưng tôi đã không im lặng nắm bắt nó. Vì vậy, nếu bạn cho tôi biết nó thì tôi sẽ biết ơn. Đề cập đến điều đó, tôi đang sử dụng NHibernet
ánh xạ tại đây.Sự khác biệt giữa IWindsorContainer vs IUnityContainer là gì?
Trả lời
Tôi đã sử dụng cả hai thùng chứa và sự khác biệt lớn giữa chúng, qua nhiều năm sử dụng từng loại đã được UnityContainer được quản lý bởi một nhóm và vẫn đang được mở rộng. Các container Windsor không phải là rất lớn tại trở về lỗi thực sự. UnityContainer có tài liệu tuyệt vời và rất đơn giản để cài đặt bằng cách sử dụng nuget hoặc một số trình quản lý kho khác.
Đây là ý của tôi ... nếu bạn xem xét cách sử dụng mã của chúng, https://github.com/castleproject/Windsor/blob/master/docs/README.md, ví dụ như windsor rất bị làm mờ.
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Classes.FromThisAssembly()
.Where(Component.IsInSameNamespaceAs<King>())
.WithService.DefaultInterfaces()
.LifestyleTransient());
}
Nếu bạn xem xét sự thống nhất, https://github.com/unitycontainer/unity/blob/master/quickstarts/CS/EventBroker/Src/Stoplight/Program.cs, sẽ trở nên rõ ràng hơn những gì đang xảy ra bằng cách đăng ký theo cách khác. Các mã lỗi khi bạn đang xuống hố thỏ cũng sạch hơn nhiều với Unity.
IUnityContainer container = new UnityContainer()
.AddNewExtension<SimpleEventBrokerExtension>()
.RegisterType<ILogger, TraceLogger>()
.RegisterType<IStoplightTimer, RealTimeTimer>();
hãy kiểm tra liên kết sau. Điều này có thể giúp bạn https://visualstudiomagazine.com/articles/2014/09/25/refactor-5.aspx
- 1. Sự khác biệt giữa Helix vs Perforce là gì?
- 2. underscorejs - sự khác biệt giữa extendOwn vs extend là gì?
- 3. sự khác biệt giữa/* ... */và là gì/** ... */
- 4. @synthesize vs @dynamic, sự khác biệt là gì?
- 5. RxSwift - .subscribe vs .subscribeTiếp theo sự khác biệt là gì?
- 6. GWT VS Google Closure, sự khác biệt là gì?
- 7. Linq .Any VS .Exists - Sự khác biệt là gì?
- 8. AWS Lambda vs Heroku: sự khác biệt chính là gì?
- 9. Rscript vs. source: Sự khác biệt chính là gì?
- 10. MPI vs GPU vs Hadoop, sự khác biệt chính giữa ba song song này là gì?
- 11. Sự khác biệt giữa nhận và scanf là gì?
- 12. CATALINA_OPTS vs JAVA_OPTS - Sự khác biệt là gì?
- 13. Sự khác biệt giữa \ r và \ n là gì?
- 14. Sự khác biệt giữa tệp * .bat và * .cmd là gì?
- 15. Sự khác biệt giữa Page.User.Identity vs Request.LogonUserIdentity
- 16. Sự khác biệt giữa NSURLSessionDataTask vs NSURLSessionDownloadTask
- 17. Sự khác biệt giữa url vs urlRoot
- 18. $ dirty vs $ invalid: Sự khác biệt là gì?
- 19. sự khác biệt thực sự giữa lemmatization vs bắt nguồn là gì?
- 20. Sự khác biệt giữa Object.getPrototypeOf vs __proto__
- 21. Flash.discard làm gì? Sự khác biệt giữa flash.clear() là gì?
- 22. Jam vs Bower, sự khác biệt là gì?
- 23. JS.checked vs jquery attr ('checked'), sự khác biệt là gì?
- 24. Factory Girl vs. User.create - sự khác biệt là gì?
- 25. Microsoft.Data.Edm vs Microsoft.OData.Edm: sự khác biệt là gì?
- 26. javax.ws.rs.core.Cookie vs javax.ws.rs.core.NewCookie, sự khác biệt là gì?
- 27. mb_strpos vs strpos, sự khác biệt là gì?
- 28. git clone vs copy paste, sự khác biệt là gì?
- 29. getc() vs fgetc() - Sự khác biệt chính là gì?
- 30. Rails wrap_parameters vs include_root_in_json, sự khác biệt là gì?
Bản sao có thể có của [Container phun phụ thuộc? Nó làm gì?] (Http://stackoverflow.com/questions/8015101/dependency-injection-container-what-does-it-do) – NightOwl888
Kính gửi @ NightOwl888, tôi muốn biết sự khác biệt, và tôi sẽ sử dụng trong tình huống nào. Tôi nghĩ bạn không hiểu những gì tôi đã hỏi. Trên câu trả lời trùng lặp bạn cung cấp ở đó họ đã thảo luận chỉ 'tài liệu Windsor' không có gì khác về 'IUnityContainer' Tôi cũng tìm kiếm điều này. –
Bạn có thể sử dụng bất kỳ vùng chứa DI nào bạn muốn (hoặc không có vùng chứa DI nào cả) để triển khai mẫu Chèn phụ thuộc. Nhưng có thể sẽ là một sai lầm khi sử dụng nhiều hơn một ứng dụng trong cùng một ứng dụng. Để tìm hiểu về Dependency Injection, tôi đề nghị bạn đọc [Dependency Injection in .NET] (https://www.manning.com/books/dependency-injection-in-dot-net). Đây là một chủ đề quá rộng để được thảo luận theo một định dạng Q & A đơn giản. – NightOwl888