Những khung công tác phụ thuộc C # /. NET nào đáng để xem xét? Và bạn có thể nói gì về sự phức tạp và tốc độ của chúng.
Những khung công tác phụ thuộc C # /. NET nào đáng để xem xét? Và bạn có thể nói gì về sự phức tạp và tốc độ của chúng.
Câu trả lời:
chỉnh sửa (không phải bởi tác giả): Có một danh sách toàn diện về các khung IoC có sẵn tại https://github.com/quozd/awclaw-dotnet/blob/master/README.md#ioc :
Câu trả lời gốc sau đây.
Tôi cho rằng tôi có thể hơi kén chọn ở đây nhưng điều quan trọng cần lưu ý là DI (Dependency Injection) là một mẫu lập trình và được hỗ trợ bởi, nhưng không yêu cầu, khung IoC (Inversion of Control). Các khung IoC chỉ làm cho DI dễ dàng hơn nhiều và chúng cung cấp một loạt các lợi ích khác trên và trên DI.
Điều đó đang được nói, tôi chắc chắn đó là những gì bạn đang hỏi. Về khung IoC; Tôi đã từng sử dụng Spring.Net và CastleWindsor rất nhiều, nhưng nỗi đau thực sự ở phía sau là tất cả những cấu hình XML phiền phức mà bạn phải viết! Bây giờ họ gần như đã di chuyển theo cách này, vì vậy tôi đã sử dụng StructMap trong năm ngoái hoặc lâu hơn, và vì nó đã chuyển sang một cấu hình trôi chảy bằng cách sử dụng các tướng được đánh máy mạnh và một sổ đăng ký, rào cản đau đớn của tôi khi sử dụng IoC đã giảm xuống dưới không! Bây giờ tôi nhận được một cú đá tuyệt đối khi biết rằng cấu hình IoC của tôi được kiểm tra tại thời gian biên dịch (phần lớn) và tôi không có gì ngoài niềm vui với StructMap và tốc độ của nó. Tôi sẽ không nói rằng những người khác chậm trong thời gian chạy, nhưng họ khó thiết lập hơn và sự thất vọng thường chiến thắng trong ngày.
Cập nhật
Tôi đã sử dụng Ninject trong dự án mới nhất của mình và nó là một niềm vui tuyệt đối khi sử dụng. Từ ngữ làm tôi thất vọng một chút ở đây, nhưng (như chúng tôi nói ở Anh) khuôn khổ này là 'Những chú chó'. Tôi rất muốn giới thiệu nó cho bất kỳ dự án lĩnh vực xanh nào mà bạn muốn lên và chạy nhanh. Tôi đã có tất cả những gì tôi cần từ một bộ screencasts tuyệt vời của Justin Etheredge. Tôi không thể thấy rằng Ninject phù hợp với retro vào mã hiện tại là một vấn đề, nhưng sau đó có thể nói tương tự về StructMap theo kinh nghiệm của tôi. Đó sẽ là một lựa chọn khó khăn trong tương lai giữa hai người đó, nhưng tôi muốn cạnh tranh hơn là trì trệ và có một số lượng cạnh tranh lành mạnh ngoài kia.
Các screencasts IoC khác cũng có thể được tìm thấy ở đây trên Dimitions .
Nó phụ thuộc vào những gì bạn đang tìm kiếm, vì mỗi người đều có ưu và nhược điểm của họ.
Spring.NET
là sự trưởng thành nhất khi nó ra khỏi Spring từ thế giới Java. Spring có một bộ thư viện khung rất phong phú giúp mở rộng nó để hỗ trợ Web, Windows, v.v.Castle Windsor
là một trong những nền tảng được sử dụng rộng rãi nhất trong nền tảng .NET và có hệ sinh thái lớn nhất, có khả năng cấu hình / mở rộng cao, có quản lý trọn đời tùy chỉnh, hỗ trợ AOP, có hỗ trợ NHibernate vốn có và là một công cụ tuyệt vời. Windsor là một phần của toàn bộ ngăn xếp bao gồm Monorail, Active Record, v.v ... Bản thân NHibernate xây dựng trên đỉnh của Windsor.Structure Map
có cấu hình hạt rất phong phú và tốt thông qua DSL bên trong.Autofac
là một kho chứa IoC của thời đại mới với tất cả các hỗ trợ lập trình chức năng vốn có của nó. Nó cũng có một cách tiếp cận khác nhau về quản lý suốt đời so với những người khác. Autofac vẫn còn rất mới, nhưng nó thúc đẩy những gì có thể với IoC.Ninject
Tôi đã nghe nói là xương trần nhiều hơn với một cách tiếp cận ít hơn (nghe không có kinh nghiệm).Unity
là: nó đến từ và được hỗ trợ bởi Microsoft (p & p). Unity có hiệu suất rất tốt, và tài liệu tuyệt vời. Nó cũng có cấu hình cao. Nó không có tất cả các tiếng chuông và tiếng huýt sáo của Lâu đài / Bản đồ cấu trúc.Vì vậy, tóm lại, nó thực sự phụ thuộc vào những gì quan trọng với bạn. Tôi sẽ đồng ý với những người khác đi và đánh giá và xem cái nào phù hợp. Điều tuyệt vời là bạn có một lựa chọn tốt về bánh rán thay vì chỉ có một viên thạch.
Tự động điền. https://github.com/autofac/Autofac Nó thực sự nhanh và khá tốt. Đây là một liên kết với các so sánh (được thực hiện sau khi Ninject khắc phục sự cố rò rỉ bộ nhớ).
http://www.codinginstotype.com/2008/05/ioc-container-benchmark-rerevisted.html
Ninject là tuyệt vời. Có vẻ như rất nhanh, nhưng tôi chưa thực hiện bất kỳ so sánh nào. Tôi biết Nate, tác giả, đã thực hiện một số so sánh giữa Ninject và các khung DI khác và đang tìm kiếm nhiều cách hơn để cải thiện tốc độ của Ninject.
Tôi đã nghe nhiều người tôi tôn trọng nói những điều hay về StructMap và CastleWindsor. Những người, trong tâm trí của tôi, là ba người lớn để xem xét ngay bây giờ.
Tôi sử dụng In phun đơn giản :
Simple In phun là một thư viện tiêm phụ thuộc dễ dàng, linh hoạt và nhanh chóng, sử dụng thực tiễn tốt nhất để hướng dẫn các giải pháp của bạn hướng tới hố thành công.
Tôi là một fan hâm mộ lớn của Castle. Tôi yêu các cơ sở mà nó cũng cung cấp ngoài câu chuyện IoC Container. Nó thực sự đơn giản khi sử dụng NHibernate, đăng nhập, AOP, v.v. Tôi cũng sử dụng Binsor để cấu hình với Boo và đã thực sự yêu Boo như một ngôn ngữ vì nó.
Tôi có thể giới thiệu Ninject. Nó cực kỳ nhanh và dễ sử dụng nhưng chỉ khi bạn không cần cấu hình XML, thì bạn mới nên sử dụng Windsor.
Tôi đã dành phần tốt hơn của một ngày vật lộn mà không thành công để có được ví dụ Spring.NET đơn giản nhất hoạt động. Không bao giờ có thể tìm ra làm thế nào để nó tìm thấy tập hợp của tôi từ tệp XML. Trong khoảng 2 giờ, mặt khác, tôi đã có thể khiến Ninject hoạt động, bao gồm thử nghiệm tích hợp với cả NUnit và MSTest.
Tôi đã sử dụng Spring.NET trong quá khứ và đã thành công lớn với nó. Tôi chưa bao giờ nhận thấy bất kỳ chi phí đáng kể nào với nó, mặc dù dự án chúng tôi sử dụng nó khá nặng nề. Chỉ mất một ít thời gian đọc qua tài liệu để thiết lập nó.
Điều tuyệt vời về C # là nó đang đi theo một con đường bị đánh bại bởi nhiều năm của các nhà phát triển Java trước nó. Vì vậy, lời khuyên của tôi, nói chung khi tìm kiếm các công cụ có tính chất này, là tìm kiếm câu trả lời Java vững chắc và xem có tồn tại một sự thích ứng .NET nào không.
Vì vậy, khi nói đến DI (và có rất nhiều lựa chọn ngoài kia, đây thực sự là một vấn đề của hương vị) là Spring.NET . Ngoài ra, luôn luôn khôn ngoan để nghiên cứu những người đằng sau các dự án. Tôi không có vấn đề gì khi đề xuất các sản phẩm SourceGear để kiểm soát nguồn (bên ngoài việc sử dụng chúng) vì tôi tôn trọng Eric chìm. Tôi đã thấy Mark Pollack nói và tôi có thể nói gì, anh chàng chỉ cần có nó.
Cuối cùng, có rất nhiều khung DI và cách tốt nhất của bạn là thực hiện một số dự án mẫu với một vài trong số chúng và đưa ra lựa chọn có giáo dục.
Chúc may mắn!
Tôi nghĩ rằng một nơi tốt để bắt đầu là với Ninject, nó mới và đã được tính đến rất nhiều điều chỉnh tốt và thực sự nhanh chóng. Nate, nhà phát triển, thực sự có một trang web tuyệt vời và hỗ trợ tuyệt vời.
Spring.Net khá vững chắc, nhưng tài liệu phải mất một thời gian để lội qua. Autofac là tốt và trong khi .Net 2.0 được hỗ trợ, bạn cần VS 2008 để biên dịch nó, nếu không thì sử dụng dòng lệnh để xây dựng ứng dụng của bạn.