2013-01-03 61 views
2

我目前在遊戲平臺應用程序中工作。我希望能夠方便地添加新的遊戲,但遊戲應該是符合特定的合同:插件體系結構.net maf or mef

  • 本場比賽必須有一些所需的方法
  • 他們必須接受所提供的一些事件主程序
  • 他們必須能夠一些數據發送回到程序
  • 這將是美好的,如果很容易爲外部開發者做遊戲的平臺,只是有知識Ø F中的界面

我讀到這樣MEF的一些問題VS MAF,起初我認爲MAF更適合我,但我不知道這一點。另外,我想我甚至可以製作一些自制系統,比如將遊戲編譯爲DLL並在運行時檢索它們。

MAF似乎不錯,因爲隔離的,但因爲我不是真的很少外接工作,和我讀,MAF重,缺乏速度,我有我應該用什麼疑點重重。

我應該嘗試MAF嗎?即使它可能很慢,很難開發,它真的適合我在做什麼嗎?

+0

僅當需要隔離和/或版本控制時才應考慮System.AddIn(MAF),並且只需將主機公開給加載項(Visual Studio和MS Office就是這種情況,兩者都使用System據我所知,加入)。另請注意,您可以通過將MEF與Autofac結合使用來進行版本控制(http://nblumhardt.com/2011/01/decorator-support-in-autofac-2-4/)。 –

回答

4

這可能不會是你的完整答案,但我會在MEF上發出響應,我有經驗(我沒有真正的MAF經驗)。 MEF有很多我認爲適合您需求的優勢。

MEF重量輕,使用起來非常簡單。它提供了一個依賴注入。

發現的東西非常容易使用。只需創建您的目錄,然後關閉並運行。

MEF使插件體系結構成爲真正的快照。我完全賣了它。

儘管MAF可能會提供隔離,但您必須使可遠程調用跨應用程序域,這很麻煩。爲了防止未處理的異常將您的主應用程序取出,您必須在自己的進程中創建加載項,這些加載項有其自身的侷限性。例如,如果您想在您的加載項中共享DLL,則它們需要與共享DLL或共享DLL需要位於GAC中的目錄處於同一目錄中。

+0

+1此外,如果您決定共享dll,則需要非常小心,因爲很可能會丟失System.AddIn(MAF)的版本控制功能。最好只有公共成員永遠不會改變的程序集(如.NET框架中的程序集)才能被主機和加載項共享。 –