2008-09-19 27 views

Trả lời

9

Phụ thuộc vào tình huống. Đối với các dự án nhỏ, nơi bạn cần một container đơn giản, tôi chọn Ninject. Tôi thích thực tế là nó nhỏ và gầy. Tôi không thích thuộc tính nhưng có nhiều cách xung quanh đó.

Đối với một giải pháp lớn, nơi bạn có thể cần nhiều hơn IoC đơn giản, tôi muốn đi với các công cụ lâu đài. Tính linh hoạt của Lot ở đó, bạn có thể sử dụng xml, các thuộc tính hoặc một DSL để cấu hình các công cụ, bạn có thể mở rộng IoC của bạn thành lãnh thổ AOP nếu bạn cần nó sau này.

Tôi chưa thử structuremap. Dường như nó có nhiều hơn IoC. Nhưng tôi không thể bình luận về nó. Tôi nghĩ rằng Ninject và Structuremap phục vụ các mục đích khác nhau nên rất khó để lựa chọn giữa hai mục đích mà không cần biết thêm một chút về ngữ cảnh. Tốt hơn thường là một khái niệm tương đối :-)

3

Tôi sử dụng StructureMap vì vậy tôi có thể nghĩ rằng đó là tốt nhất. Nhưng có lẽ trong tương lai tôi sẽ đi cho Unity vì đó là MS hỗ trợ, có nghĩa là tài liệu tốt hơn và ít phụ thuộc vào thiện chí của một người mặc dù người đó là rất thiện chí. Tất nhiên tôi sẽ không thay đổi khuôn khổ chỉ vì nó tốt đẹp. Miễn là một cái gì đó hoạt động tôi thậm chí không nâng cấp.

+2

Tôi đang gặp khó khăn khi tìm bất kỳ tài liệu nào cho Unity. Ai đó có thể cung cấp một liên kết? – StriplingWarrior

+0

Cá nhân tôi thấy Unity khó làm việc vì thiếu tài liệu (bao gồm tài liệu XML, từ bộ nhớ) và độ phức tạp cao. Tôi không nghĩ rằng lý do "được Microsoft hỗ trợ" là lý do hợp lý. – Sam

3

Không có cách nào tốt nhất. Hầu hết trong số họ làm 90% những gì bạn cần theo cách khá giống nhau. Trong những tình huống nhất định, người ta có thể linh hoạt hơn người khác.

Với lựa chọn tôi chọn Windsor, nếu không có gì khác nhưng tôi đã biết nó khá tốt. Nhưng tôi sẽ không kìm nén nếu tôi phải sử dụng Ninject hoặc StructureMap. Cả hai đều là khung tốt.

Tôi biết rằng hiện tại Ninject là ứng dụng duy nhất chạy trên khung Compact, vì vậy nếu đó là yêu cầu. thì Ninject là con đường để đi.

Tôi hơi sợ Spring.NET, chủ yếu là vì tôi không thích XML. Nhưng có lẽ nó không tệ như tôi nghĩ, đừng làm tôi bực mình :)

2

Tôi sẽ tự mình tiến hành quá trình này. Tôi khuyên bạn nên bắt đầu với ninject. Chỉ vì nó rất nhẹ và có mức nhập cảnh thực sự thấp. Bạn có thể thiết lập và chạy trong vài giờ.

Điều bạn sẽ thấy là bạn sẽ thiết kế hệ thống của mình với IoC và thiết kế đó sẽ phần lớn giống nhau bất kể khung IoC bạn sử dụng.

Nếu không có quá nhiều hoạt động lại hệ thống ống nước khung cơ bản, bạn sẽ có thể hoán đổi NInject cho một cái gì đó như StructureMap nếu bạn muốn.

Đặt cược tốt nhất của bạn là làm quen với một vấn đề và xem những vấn đề bạn tìm thấy và sau đó quyết định xem liệu giải pháp thay thế có phù hợp với nhu cầu của bạn tốt hơn không.

Các khuôn khổ trên mạng dường như đang trải qua giai đoạn động với các phiên bản mới được phát hành khắp nơi. Và MEF, đó là IoC và nhiều hơn nữa, có thể buộc thay đổi thêm về cảnh quan.

2

autofac là lựa chọn tốt cho các dự án nhỏ. Nếu bạn muốn tích hợp IoC + Hardcore với bất cứ điều gì bạn có thể tưởng tượng, tôi khuyên bạn nên Spring.NET

EDIT Bây giờ tôi nghĩ về nó, đá Autofac cho các dự án ở mọi quy mô, trong khi Spring.NET cảm thấy quá enterprisey.

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