Bạn đang sử dụng Khung mở rộng được quản lý như thế nào?


10

Tôi đã làm việc với MEF được khoảng 2 tuần. Tôi bắt đầu suy nghĩ về MEF dùng để làm gì, nghiên cứu để tìm ra cách sử dụng MEF và cuối cùng thực hiện Host với 3 mô-đun. Các hợp đồng đang được chứng minh là dễ nắm bắt và các mô-đun được quản lý dễ dàng.

Mặc dù MEF có một ứng dụng rất thực tế, tôi tự hỏi ở mức độ nào? Ý tôi là, mọi người sẽ viết lại các ứng dụng hiện có để mở rộng chứ?

Vâng, âm thanh đó, và là không thực tế. Nói một cách khoa trương:

  • MEF ảnh hưởng đến các xu hướng hiện tại trong lập trình như thế nào?

  • bạn đã bắt đầu tìm kiếm cơ hội sử dụng MEF chưa?

  • Bạn đã bắt đầu lên kế hoạch viết lại chính một ứng dụng hiện có có thể hưởng lợi từ khả năng mở rộng chưa?

Điều đó nói rằng, câu hỏi của tôi là:
làm thế nào để tôi biết khi nào tôi nên lập kế hoạch cho một dự án mới với khả năng mở rộng?
Làm thế nào để tôi biết nếu một dự án hiện tại cần phải được viết lại để mở rộng?

Có ai đang sử dụng MEF không?

Câu trả lời:


8

Có ai đang sử dụng MEF không?

Tôi đang làm việc trên một dự án Silverlight bằng cách sử dụng mẫu MVVM. Chúng tôi đã bắt đầu bằng cách kết nối tất cả các máy ảo với nhau khi cần thiết thông qua giao diện và tiêm phụ thuộc thủ công (có thể là hàm tạo hoặc thuộc tính tùy theo nhu cầu). Nó bắt đầu trở nên đau đớn và chúng tôi bắt đầu sử dụng MEF như là một khung tiêm phụ thuộc để xuất các dịch vụ nhất định được sử dụng trên các mô hình xem và nhập chúng vào các mô hình xem cần chúng. Hoạt động hoàn hảo và với rất ít mã.

Vâng, có một số người theo chủ nghĩa thuần túy sẽ nói rằng MEF không dành cho tiêm phụ thuộc và một khung tiêm phụ thuộc thực sự sẽ làm tốt hơn nhiều. Tuy nhiên, MEF được đưa thẳng vào .NET, đây là một điểm cộng lớn và nó đủ để đáp ứng nhu cầu của chúng tôi.

Làm thế nào để tôi biết khi nào tôi nên lập kế hoạch cho một dự án mới với khả năng mở rộng? Làm thế nào để tôi biết nếu một dự án hiện tại cần phải được viết lại để mở rộng?

IMO, bạn phải luôn tách biệt các mối quan tâm một cách thích hợp và sử dụng các giao diện để cho phép các mô-đun khác nhau thay đổi độc lập. Nếu bạn làm điều này đúng, thì khi bạn thấy cần một khả năng mở rộng, MEF sẽ dễ dàng thêm vào. Nhưng tôi sẽ không bắt đầu một dự án không có yêu cầu mở rộng và chỉ đưa MEF vào trong trường hợp. Tôi sẽ chờ đợi để có nhu cầu. Đối với các dự án hiện có, nếu có nhu cầu, tôi sẽ đánh giá nỗ lực của dự án để sử dụng MEF so với các giải pháp thay thế so với không làm gì cả và xem chiến thắng nào.


6

Mọi người mắc sai lầm và tôi nghĩ đó là do việc đặt tên ( Khung mở rộng được quản lý ) là giả định MEF chỉ thực tế cho khả năng mở rộng. MEF thực sự giải quyết ba điều quan trọng: khả năng mở rộng, khám phá và siêu dữ liệu. Hai cái cuối cùng rất mạnh ngay cả đối với một ứng dụng sẽ không bao giờ thấy một trình cắm hoặc tiện ích mở rộng nào.

Đây là một bài viết tôi đã viết về sức mạnh của nó để khám phá như một thùng chứa IOC: http://www.informit.com/articles/article.aspx?p=1635818

Tôi sử dụng MEF trong hầu hết các ứng dụng kinh doanh dành cho doanh nghiệp vì nó giúp xây dựng và duy trì các ứng dụng mô-đun trong Silverlight nhanh hơn và dễ dàng hơn.


Tôi đã đọc bài viết của bạn - ít nhất hai lần;)
Tôi chấp nhận

4

Hiện tại tôi đang sử dụng MEF trong một vài dự án kết hợp mẫu Kho lưu trữ.

Một là sử dụng các loại kho lưu trữ khác nhau trong khi thử nghiệm đơn vị, dự án còn lại đang sử dụng các kho lưu trữ cục bộ (thẳng đến DB), từ xa (WCF) và thử nghiệm.

Cả hai dự án đều có thể thay đổi các loại kho lưu trữ của chúng thông qua mã hoặc cấu hình và dựa trên các loại siêu dữ liệu / Lazy của MEF.

Đến nay, cả hai dự án đang chạy rất tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.