我想要實現插件式應用程序。我知道現在已經有幾種解決方案,但這只是對這個概念的證明,沒有其他。這個想法是讓應用程序的主應用程序在默認情況下幾乎沒有特色,然後讓插件相互瞭解,讓它們實現所有需要的功能。.NET中的插件式體系結構
幾個問題就出來了:
- 我想在運行時的插件來了解對方,通過我的申請。這並不意味着在代碼時他們無法引用其他插件的程序集,因此他們可以使用它的接口,只有插件功能初始化應該始終通過我的主應用程序。例如:如果我既加載了插件X,又加載了Y,並且Y想要使用X的功能,則應該通過我的應用程序使用它的功能來「註冊」它的興趣。我必須在我的應用程序中有一種「字典」,用於存儲所有已加載的插件。在註冊我的應用程序的興趣後,插件Y會獲得對X的引用,以便它可以使用它。這是一個好方法嗎?
- 當編碼使用X的插件Y時,我需要引用X的程序集,所以我可以對它的接口進行編程。這有版本控制的問題。如果我將我的插件Y編碼爲插件X的過時版本,該怎麼辦?我是否應該始終使用所有組件的「中心」位置,總是有組件的最新版本?
有沒有偶然的機會找到那些專門針對這些.NET設計的書?
感謝
編輯:我認爲人們漂離我做了2個問題了。我可以看一下MEF和#develop,但我想詳細解答我提出的問題。
我建議尋找MEF,這是全新的,但看起來很有希望。 – 2010-05-07 21:50:22
@馬特 - 想你應該把這個作爲一個答案 - 這正是我要說 – 2010-05-07 21:51:13
我已經聽到了MEF的,但是作爲OP說,我的想法是不使用已建成的框架,但落實它自己。它不需要非常複雜的東西。 – 2010-05-07 21:52:02