2008-10-07 24 views
21

Cách tiêu chuẩn cho phép và triển khai hệ thống plugin cho ứng dụng của bạn là gì?Mẫu thiết kế để triển khai plugin trong ứng dụng của bạn?

Trong ứng dụng cuối cùng của mình, tôi đã tạo một giao diện đơn giản cho tất cả các plugin mà chúng phải triển khai. Sau đó tôi tải tất cả các assembly trong thư mục apps và quăng ra bất kỳ assembly nào không thực hiện giao diện đó.

Một trong các phương thức trong giao diện là phương thức DoWork() định kỳ được gọi trên tất cả các assembly được nạp để thực hiện bất kỳ tác vụ nào mà plugin có thể có.

Cách "thích hợp" để thực hiện hệ thống plugin là gì? Bạn chỉ cần tạo một Giao diện cho các plugin? Bạn có nên định kỳ gọi một phương thức cụ thể trong tất cả các plugin không? Có cách nào tinh vi hơn không?


EDIT:

Cảm ơn bạn Matt Hamilton cho tham chiếu đến namespace System.Addin. Điều này rất có thể sẽ là cách tôi triển khai plugin của mình. Tuy nhiên, tôi vẫn tò mò về kiến ​​trúc plugin nói chung và sẽ không quan tâm đến một số nền tảng về cách tốt nhất mà chúng nên được thiết kế, ngụ ý .. cách bạn nên gọi cho chúng khi được tải, v.v.

Trả lời

9

Kiểm tra hệ thống. Thêm không gian tên theo this response vào một câu hỏi tương tự.

5

Glenn Block và Brad Abrams tại Microsoft gần đây đã phát hành Khung Khả năng mở rộng quản lý cung cấp một khuôn khổ để đối phó với chính xác những gì bạn đang nói về.

Tài liệu và tải xuống có sẵn here.

Glenn'sBrad's blog cũng là tài nguyên tuyệt vời cho MEF.

4

Từ góc nhìn mẫu thiết kế nghiêm ngặt, bạn có thể xem OSGi (đây là định hướng Java cao, nhưng được coi là hệ thống plugin/mô-đun rất tốt). Có thể là quá mức cần thiết cho những gì bạn đang cố gắng đạt được, nhưng có một số của những thứ thực sự tốt trong đó về cách xử lý các mô-đun tải và tự động trong khi đang chạy, v.v ...

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