2009-10-20 15 views
14

Zajmuję się aplikacją komputerową .NET 3.5 C#. Powinien być rozszerzalny poprzez wtyczki.MEF vs Mono.AddIn

Czy są jakieś artykuły itp. Omawiające różnice między MEF i Mono.AddIn, aby pomóc mi podjąć świadomą decyzję?

A może masz jeszcze doświadczenie w obu tych frameworkach i możesz je komentować?

Dzięki Patrick

Odpowiedz

4

wierzę Hanselminutes Show #181 ma jakąś dyskusję o Mono.AddIns i co przynosi do stołu.

Podczas przeszukiwania sieci znalazłem również this discussion, która podkreśla różnicę w sposobie obsługi pamięci podręcznej katalogu przez te dwa środowiska.

+0

Dzięki. To początek ... –

1

Zbadałem oba i zdecydowałem się pójść z MEF, głównie dlatego, że zostanie wydany jako część .NET 4, więc automatycznie pojawi się więcej wsparcia, dyskusji i rozwoju wokół niego. Ponadto MEF wydawało się być w stanie zrobić wszystko, co było mi potrzebne, używając atrybutów bezpośrednio w kodzie, a Mono.AddIns wymagało pewnych plików metadanych, o ile dobrze pamiętam.

EDIT: Jeśli chcesz zobaczyć wynik moich wysiłków przy użyciu MEF zbudować rozszerzalny ramy aplikacji, mam otwarte pozyskiwane go i dał mu nazwę: SoapBox Core.

+0

Możesz także sterować Mono.Addins z atrybutów. Manifest XML jest konieczny tylko wtedy, gdy chcesz podłączyć dane/metadane lub użyć bardziej zaawansowanych funkcji. Możesz nawet mieszać i łączyć! –

+0

@mhutch: Wiem, ale były pewne funkcje, które były dostępne tylko w manifeście XML, a ja wolałem model atrybutów MEF. Ale to jest niewielkie, zgadzam się. –

18

[UWAGA: Pracuję na MonoDevelop, który wykorzystuje Mono.Addins, ale omówiono różnice między MEF i Mono.Addins intensywnie z Glenn blok z MEF zespołu ostatni tydzień]

MEF jest w oparciu o kod komponowania , chociaż podstawowe abstrakcje są bardzo elastyczne. Natomiast Mono.Addins opiera się na drzewie metadanych, w którym można podłączyć dane/metadane/kod do bogatego schematu definicji, dzięki czemu rozszerzenia mogą dodawać dane/metadane, a także kod.

Mono.Addins zapewnia system zarządzania dodatkami/pakowaniem/repozytorium/aktualizacji po wyjęciu z pudełka. W przypadku MEF w tym momencie musisz zbudować własny.

MEF ma nieco niższą barierę wejścia, a znacznie więcej prac projektowych poszło w jego użyteczność i podstawowe abstrakcje. Ponadto jest częścią .NET 4, więc będzie mieć znacznie większą społeczność użytkowników rozwijających się z/dla niego.

W tym miejscu, jeśli potrzebujesz podłączyć dane/metadane, a także kod i chcesz gotowy system pakowania, poleciłbym Mono.Addins, w przeciwnym razie poleciłbym MEF. Idąc dalej, prawdopodobnie funkcje Mono.Addins zostaną zaimplementowane w MEF, więc prawdopodobnie dojdzie do ścieżki migracji do MEF.

+0

Jaki jest status Mono.Addins od 2014 roku? Ostatnie zatwierdzenie w codeplex miało miejsce w 2012 roku, co oznacza, że ​​jest martwe lub bardzo stabilne :) – user3557327

+1

Aktywnie utrzymuje się na GitHub: https://github.com/mono/mono-addins –