2011-07-18 16 views
20

Widziałem artykuły omawiające te dwa podobne ramy, ale większość z nich ma już dwa lata. Zakładam, że oba projekty są teraz bardziej dojrzałe niż dwa lata temu, a sytuacja jest bardziej złożona.CCI vs. Mono.Cecil - zalety i wady

Tak więc biorąc pod uwagę obecne stany każdej z bibliotek, miałem nadzieję, że ktoś może przedstawić szczegółowe wyjaśnienie zalet i wad każdego z nich, a które powinny być preferowane w chwili obecnej.

+0

Nie wiem, dlaczego są 2 żądania zamknięcia. Pytanie jest całkowicie poprawne. – leppie

+0

Dlaczego głosy za "nie są konstruktywne"?Pytanie wymaga faktów i aktualnego statusu projektu, a nie "tego, który lubisz lepiej". Proszę nie być kasjerami SO;) – viraptor

+2

Jestem także ciekawy jak na to pytanie. Miła, szczegółowa odpowiedź porównująca te dwie rzeczy byłaby bardzo doceniona, więc zamierzam tu ustawić nagrodę. :-) – Noldorin

Odpowiedz

12

CCI

Plusy:

  • można uzyskać drobniejsze szczegółową kontrolę na wydajność
  • Najnowsza wersja jest nieco bardziej dojrzały

Wady:

  • Model przedmiot jest bardziej skomplikowana (i mylące, jeśli jesteś nowy odbicia IL/niskiego poziomu, jak ja)

Cecil (odnosząc się do the newer git-hub version)

Plusy:

  • Has prostszy model obiektowy więc będzie łatwiej zacząć

Wady:

  • najnowsza wersja jest mniej dojrzały, więc ma mniej próbki kodu dostępne
  • API jest to praca w toku
  • Nie będzie mieć większą kontrolę nad imienin buforowania (dla perf)

które wybrałbym

couting się plusy minusy /, to na pewno wygląda wybiorę CCI nad Cecil. Ale nie chciałbym.

Cecil jest dobrze zapowiadający się, ma łatwy interfejs API, ma aktywne autorstwo (dobrze, zrobił 7,5 miesięcy temu, and still seems to now) i był bezbolesny do debugowania w każdej napotkanej przeze mnie sprawie.

CCI było dość bolesne do kodowania - projekt oparty na interfejsie jest zajęty za daleko. Kod jest trudny do debugowania. Niektóre rzeczy wydają się na pierwszy rzut oka kompletne, ale nie są lub nie zajmują się więcej niż jednym przypadkiem użycia. The NameTable stuff sprawił, że kręci mi się w głowie (więcej, niż to już było).

+0

Nie pamiętam, ale myślę, że CCI ma lepsze wsparcie dla generowania kodu na wysokim poziomie. Również wsparcie dla Cecil było dobre/szybkie :) –

+0

Czy możesz podać jakiś bezpośredni dowód na niektóre z tych komentarzy? Ciekawi mnie też wydajność. Podejrzewam, że Cecil naprawdę włożył w to znacznie więcej pracy. Wydaje się, że jest bardziej wykorzystywany w projektach open source. jakieś pomysły? – Noldorin

+0

@Noldorin: To jest moje anegdotyczne doświadczenie z próbowania zarówno 7 i pół miesiąca temu. Dostałem półobrobiące rozwiązanie w CCI i porzuciłem je dla Cecila. Tak, od tamtej pory Cecil ma o wiele więcej pracy. Pamiętam, że moje najgorsze problemy dotyczyły: wykrywania * wszystkich * zależnych typów, określania typów podstawowych i generowania kodu. Mój projekt polegał na refleksji nad wykresem typu i wersjami oczyszczonych typów kodu, używając list zamiast tablic, typów null itp. CCI zapewniało automatyczny (ale niekompletny?) Przechodzenie między wzorami odwiedzającymi. Nie sądzę, żeby Cecil to zrobił. –

1

Cecil - ponieważ dla mnie wsparcie społeczności dla niego jest lepsze niż CCI. Zawsze znajdowałem odpowiedzi na listach mailingowych/stronach szybciej dla cecil.

Powiązane problemy