/ / Czy Microsoft Prism nadaje się do opracowania modularnego serwera czasu rzeczywistego bez GUI? - c #, moduł, pojemnik jedności, pryzmat, pojemnik ioc

Czy program Microsoft Prism nadaje się do tworzenia modułowego serwera czasu rzeczywistego? - c #, moduł, kontener jedności, pryzmat, ioc-container

Pracuję nad aplikacją po stronie serwera, którapowinien dynamicznie ładować moduły podczas uruchamiania na podstawie tego, czy istnieją zespoły. Zrobiłem już wcześniej coś podobnego, ale tym razem jest to kod produkcyjny i chcę używać frameworków do modularyzacji i tworzenia instancji (używając kontenerów IoC). Początkowo uznałem, że Microsoft Prism (z Unity) jest odpowiednią strukturą do tego celu, ale jestem coraz bardziej zaniepokojony, kiedy wdrażam inicjalizację i ładowanie systemu. Serwer nie będzie miał własnego GUI i prawdopodobnie będzie działał jako okno usługa w późniejszym terminie. (W międzyczasie rozwijam go jako prostą aplikację konsolową.) Różni klienci (mniej więcej jedna aplikacja klienta na moduł) zostaną opracowani do współpracy z serwerem za pośrednictwem WCF.

Czy powinienem nawet używać Prism do takiej aplikacji, ponieważ wydaje się, że jest tak ukierunkowana na aplikacje obsługujące GUI? Przestałem kodować podczas korzystania z klasy podstawowej Microsoft.Practices.Prism.UnityExtensions.UnityBootstrapper co wymaga wdrożenia CreateShell() metoda. Spodziewałem się, że będzie się tak nazywać Run() lub coś podobnego. Naprawdę nie mam powłoki, a przynajmniej powłoki GUI. Czytam za dużo i czy warto używać Prism, nie martwiąc się, że ma on potencjalnie zbędną funkcjonalność GUI? Czy używam odpowiedniego narzędzia do praca?

Odpowiedzi:

2 dla odpowiedzi № 1

Myślę, że już znasz odpowiedź. Pryzmat jest przeznaczony do aplikacji klienckich. Nawet jeśli działa to w środowisku serwerowym, będzie wiele frameworków, które są po prostu przeszkodą. Chcesz użyć kontenera IoC i już do tego używasz Unity (Pryzmat domyślnie używa Unity ). Moja rada, porzuć Prism i zacznij okablować wszystko za pomocą Unity. Dynamiczne ładowanie zestawów jest bardzo łatwe. Nie potrzebujesz rozdętego frameworka tylko do ładowania zestawów.


3 dla odpowiedzi № 2

Jak stwierdzono w odpowiedzi Stevena, Prism jest zamierzonydla aplikacji klienckich. Unity to dobry wybór pojemnika do wstrzykiwania zależności, jednak uważam, że w twojej sytuacji prawdopodobnie lepiej byłoby skorzystać z Managed Extensibility Framework (MEF) albo Framework zarządzanych dodatków (MAF).

Jedność jest używana przede wszystkim wtedy, gdy mapowania typów są znane w czasie kompilacji, przed wersją 2.1 nie było gotowej obsługi dynamicznych rejestracji typów.

Managed Extensibility Framework idealnie nadaje się do dynamicznego odkrywania typów do wstrzykiwania zależności. Widzieć tutaj pod względem liczby opcji, które zapewnia dynamiczne ładowanie typów z zestawów wykonawczych.

Managed Addin Framework jest częścią.NET Framework od .NET 3.5, jedną z jego największych funkcji jest izolacja asemblera, zestawy mogą być ładowane do osobnych domen aplikacji, a nawet procesów, a następnie nadal używane. Jest to świetne dla dodatków innych firm, jeśli są one błędne i ulegają awarii , nie przyniosą ze sobą Twojej aplikacji.