W ramach zakończenia serii wpisów związanych Managed Add-in Framework (MAF / System.AddIn) ([1], [2], [3], [4], [5]) chciałbym dodać jeszcze kilka słów w ramach podsumowania.
Na plus, czyli "MAF – daję +1"
Zacznijmy od pozytywów Managed Add-in Framework (MAF / System.AddIn):- Mamy możliwość uruchomienia pluginów w środowisku
izolowanym (inna AppDomain, inny proces) (patrz tu
i tu)
- Rozwiązany
jest problem z kompatybilnością aplikacja główna (host) –
wtyczka (Add-in).
- Mamy „lifetime management”, czyli nie musimy się martwić
o wyładowywanie wtyczek, adapterów, itp. . MAF zarządza czasem
życia sam, choć trzeba mu trochę pomóc utrzymując referencję
do ContractHandle. (patrz na MSDN: "Lifetime
Management")
- Dobra
dokumentacja w MSDN
- Jest częścią .NET 3.5 (nie trzeba nic dodatkowego
instalować, martwić się o deployment, referencje itp.)
Na minus, czyli "MAF – daję -1"
Przyjrzyjmy się też negatywnym (w moim mniemaniu) cech MAF-a:- Skomplikowane (przypomnijcie sobie ile zajmuje czasu
wykonanie
prostej aplikacji – przykładu). Warto jednak wiedzieć, że
są narzędzia które ten proces upraszczają, np. PipelineBuilder
(patrz: oryginalna wersja
PipelineBuilder'a na CodePlex w ramach projektu System.AddIn Tools
and Samples, inna
(ulepszona) wersja PipelineBuilder'a)
- Sztywna konstrukcja - musi byś określona struktura
katalogów (i nie można jej zmienić, (patrz też: "Rzut
okiem na Managed Add-in Framework (System.AddIn)" oraz
"MSDN:
Pipeline Development Requirements"). Pamiętajmy jednak,
że można zmienić lokalizację wtyczek (patrz AddInStore.FindAddIn
Method), a niektóre assembly można ze sobą łączyć (więcej
informacji we wspomnianym artykule: "MSDN:
Pipeline Development Requirements").
- Trudna diagnostyka – wystarczy, że jakieś assembly przez
przypadek trafi do niewłaściwego katalogu, a już może dany
fragment Pipeline'u nie działać, a informacje o tym będą
bardzo ubogie (choć można przeglądać ostrzeżenia pochodzące z
AddInStore.Rebuild
lub AddInStore.Update)
- W momencie budowania lub aktualizowania store'u
(pojemnika na pipeline + wtyczki) generowane są pewne pliki
(PipelineSegments.store, AddIns\AddIns.store), należy więc
pamiętać, że proces wywołujący wspomniane budowanie store'a
musi mieć uprawnienia do zapisu w lokalizacji, gdzie Pipeline
jest umieszczony (np. kartoteka aplikacji w Program Files)
A wy jakie widzicie inne wady i zalety? Wykorzystaliście lub znacie jakieś wykorzystanie MAF-a w ciekawym projekcie? Zapraszam do komentowania.
Super ciekawe informacje
OdpowiedzUsuńTen wpis jest bardzo ciekawy
OdpowiedzUsuń