Zarządzane ramy rozszerzalności — Managed Extensibility Framework

Zarządzane ramy rozszerzalności
Zarządzane ramy rozszerzalności logo.png
Deweloper(zy) Microsoft
Wersja stabilna
V1 w .NET Framework 4.0 / 12 kwietnia 2010 ; 11 lat temu ( 2010-04-12 )
Wersja zapoznawcza
Wersja 2 zapowiedź 5 / 19 grudnia 2011 ; 9 lat temu ( 19.12.2011 )
Magazyn github .com /MicrosoftArchive /mef
Napisane w Języki .NET
System operacyjny Okna
Platforma .NET Framework
Rodzaj Struktura aplikacji internetowych
Licencja Licencja MIT
Strona internetowa dokumenty .microsoft .com /en-us /dotnet /framework /mef /

Managed Extensibility Framework ( MEF ) to składnik .NET Framework 4.0, którego celem jest tworzenie lekkich, rozszerzalnych aplikacji. Ma na celu umożliwienie programistom aplikacji .NET wykrywanie i używanie rozszerzeń bez konieczności konfiguracji. Ma również na celu umożliwienie programistom rozszerzeń łatwej enkapsulacji kodu i unikania delikatnych twardych zależności. Ponadto ma na celu umożliwienie ponownego wykorzystania rozszerzeń w różnych aplikacjach. MEF został wprowadzony jako część .NET 4.0 i Silverlight 4 .

Przegląd

MEF ma na celu rozwiązanie problemu rozszerzalności środowiska uruchomieniowego. Bez MEF każda aplikacja, która chce obsługiwać model wtyczek, musi stworzyć własną infrastrukturę od podstaw. Wtyczki te często są specyficzne dla aplikacji i nie można ich ponownie używać w wielu implementacjach.

  • MEF ma na celu zapewnienie standardowego sposobu, w jaki aplikacja hosta może ujawnić się i korzystać z rozszerzeń zewnętrznych. Rozszerzenia ze swej natury mogą być ponownie wykorzystywane w różnych zastosowaniach. Jednak rozszerzenie można nadal zaimplementować w sposób specyficzny dla aplikacji. Same rozszerzenia mogą od siebie zależeć, a MEF ma na celu upewnienie się, że są one połączone we właściwej kolejności, oszczędzając programistom robienia tego ręcznie.
  • MEF oferuje zestaw podejść do odnajdywania aplikacji w celu zlokalizowania i załadowania dostępnych rozszerzeń.
  • MEF umożliwia tagowanie rozszerzeń za pomocą dodatkowych metadanych, co ma na celu ułatwienie rozbudowanych zapytań i filtrowania.

Projekt

Z grubsza rzecz biorąc, rdzeń MEF składa się z katalogu i CompositionContainer. Katalog odpowiada za wykrywanie rozszerzeń, a kontener koordynuje tworzenie i spełnia zależności.

  • Obywatel pierwszej klasy MEF to klasa ComposablePart. Komponentowa część oferuje jeden lub więcej eksportów, a także może zależeć od jednej lub więcej zewnętrznie świadczonych usług lub importu. Część komposowalna zarządza również instancją, która może być instancją obiektu danego typu (jest to w domyślnej implementacji MEF). MEF jest jednak rozszerzalny i można dostarczyć dodatkowe implementacje ComposablePart, o ile są one zgodne z umowami importu/eksportu.
  • Każdy eksport i import ma kontrakt. Kontrakty są pomostem między eksportem a importem. Kontrakt eksportowy może składać się z dalszych metadanych, których można użyć do filtrowania jego wykrywania. Na przykład może wskazywać konkretną możliwość oferowaną przez eksport.
  • Kontener MEF współdziała z katalogami, aby mieć dostęp do części składowych. Sam kontener rozwiązuje zależności części i udostępnia eksporty światu zewnętrznemu. Wystąpienia części komponowanych można dodawać bezpośrednio do kontenera.
  • ComposablePart zwrócony przez katalog prawdopodobnie będzie rozszerzeniem aplikacji. Może mieć importy (zależności) na składnikach oferowanych przez aplikację hosta i prawdopodobnie wyeksportuje inne.
  • Domyślna implementacja części składowej MEF używa metadanych opartych na atrybutach do deklarowania eksportów i importów. Dzięki temu MEF może określić, które części, importy i eksporty są dostępne poprzez odnajdywanie.

Bibliografia

Zewnętrzne linki