Widziałem artykuły omawiające te dwa podobne frameworki, ale większość z nich ma mniej więcej dwa lata. Zakładam, że oba projekty są teraz znacznie bardziej dojrzałe niż dwa lata temu, a sytuacja jest bardziej złożona.
Biorąc więc pod uwagę obecny stan każdej z bibliotek, miałem nadzieję, że ktoś dostarczy szczegółowego wyjaśnienia zalet i wad każdej z nich, co w chwili obecnej powinno być preferowane.
2 odpowiedzi
CCI
Plusy:
- Może zapewnić dokładniejszą kontrolę nad wydajnością
- Najnowsza wersja jest nieco bardziej dojrzała
Cons:
- Model obiektowy jest bardziej skomplikowany (i mylący, jeśli jesteś nowy w odbiciach IL/niskopoziomowych, tak jak ja)
Cecil (odnosi się do nowszej wersji git-hub)
Plusy:
- Ma prostszy model obiektowy, więc łatwiej będzie zacząć
Cons:
- Najnowsza wersja jest mniej dojrzała, więc dostępnych jest mniej próbek kodu
- API to praca w toku
- Nie będziesz mieć tak dużej kontroli nad buforowaniem nazw (dla wydajności)
Który bym wybrał
Analizując zalety i wady, wygląda na to, że wybrałbym CCI zamiast Cecila. Ale nie zrobiłbym tego.
Cecil jest dobrze prosperujący, ma łatwy projekt API, ma aktywne autorstwo (dobrze, 7,5 miesiąca temu, i nadal wydaje się, że teraz) i bezbolesne było debugowanie każdego napotkanego problemu.
Programowanie CCI było dość bolesne — projektowanie oparte na interfejsie jest za daleko. Kod jest trudny do debugowania. Niektóre rzeczy na pierwszy rzut oka wydają się kompletne, ale nie są lub nie obsługują więcej niż jednego przypadku użycia. Treści NameTable
sprawiły, że zakręciło mi się w głowie (więcej niż już było).
Cecil - bo dla mnie wsparcie społeczności jest lepsze niż CCI. Zawsze szybciej znajdowałem odpowiedzi na listach mailingowych/witrynach dla cecil.
Podobne pytania
Powiązane pytania
Nowe pytania
c#
C # (wymawiane „patrz ostro”) jest językiem programowania wysokiego poziomu, statycznie typowanym, wieloparadygmatowym opracowanym przez firmę Microsoft. Kod C # zwykle jest przeznaczony dla rodziny narzędzi Microsoft .NET i czasów wykonywania, do których należą między innymi .NET Framework, .NET Core i Xamarin. Użyj tego tagu w przypadku pytań dotyczących kodu napisanego w C # lub C # formalnej specyfikacji.