2009-08-01 18 views
6

Pracuję nad cms i chciałem oferować niestandardowe rozszerzenia dla niektórych kont. Podobnie jak posiadanie wtyczki z niestandardowym kodem, który jest dostępny lub używany tylko przez to konto. Te niestandardowe rozszerzenia byłyby ściśle związane z potrzebami biznesowymi konta i być może jest mało prawdopodobne, że jakiekolwiek inne konta tego potrzebują, ale może. Czy istnieje sposób, aby to zrobić i załadować bez konieczności ponownego uruchamiania całej aplikacji, powodując w ten sposób przestój dla pozostałych kont?Architektura wtyczek dla szyn cms

Odpowiedz

2

chodzi o kodzie wtyczki per-klienta, można zapisać kod w modelu danych, a następnie eval() kod dynamicznie go wykonać. (Oczywiście, że chciałbyś przeprowadzić poważne sprawdzanie poprawności/szorowanie aktualizacji, aby upewnić się, że kod nie zawiera szkodliwych wywołań). Innym podejściem może być opracowanie niestandardowej biblioteki znaczników, podobnie jak to, co zbudowali programiści Radiant CMS ... a następnie pozwolić swoim użytkownikom "zaprogramować" swoje zachowanie za pomocą dostarczonych znaczników. Zapewnia to większą kontrolę i lepsze bezpieczeństwo kosztem mniejszej elastyczności.

Jeśli chodzi o kwestię przestojów, jeśli stosujesz nowoczesne podejście do wdrażania szyn, nie widzę, jak to powinno być problemem. Podejście eval() powyżej nie wymaga ponownego uruchomienia (chyba że twój niestandardowy kod wywołuje "include ..." w bibliotekach, które nie są zainstalowane w czasie ostatniego rozruchu - ale pobieranie tych bibliotek jest również "poza pasmem" "Problem, który musisz rozwiązać:

Pasażer podaje plik restart.txt, który można dotknąć, aby wymusić odświeżenie. Podobnie istnieją przepisy na kundla (jak na przykład patrz piła), które umożliwiają stopniowe ponowne uruchamianie stosu kundla Aby uniknąć przestojów, rozdzieliłbym te dwie kwestie osobno mentalnie, gdybym był tobą, ponieważ zależności między nimi nie są zbyt wielkie.Miej nadzieję, że to pomoże

+0

Myślę, że to całkiem niezłe rozwiązanie (nawet jeśli eval() jest dość przerażające), ponieważ to ja opracowywam kod, a nie użytkownicy, oczywiście, gdyby istniał masowy ap W takim razie mógłbym zainstalować go tak, jak zwykle i ograniczyć dostęp do niego. Konkretna instancja dotyczy dostosowania na konto, więc myślę, że to będzie najlepsze. – bwizzy

1

Zbudowałem cms i dodano obsługę wtyczki dla niego. Najlepszą rzeczą, jaką możesz zrobić, to mieć całą bazę danych, wtyczka istnieje dla każdego, technicznie, ale możesz jej użyć tylko wtedy, gdy ją "kupiłeś" lub w inny sposób ją włączyć. naprawdę tylko rekord db.

To byłoby 0 przestojów. :) Potem znowu nie mam pojęcia, jak wygląda reszta twojej instalacji. Sądzę, że twoje rozwiązanie będzie idealnie dopasowane do twojego projektu systemu cms.

0

jak długo będzie to czas przestoju? Chodzi mi o to, że przeprowadzanie migracji i innych rzeczy byłoby uciążliwe dla systemu, który pozwala każdemu drowowi lub harry przesłać wtyczkę. Musiałbyś sprawdzić, czy migracje zostały poprawnie skonfigurowane itd., Jeśli nie masz "ochoty" i po prostu pozwolić im zrobić coś "czystego" w js, to myślę, że to kwestia ponownego uruchomienia pasażera, która jest co 5 sekund?

Chciałbym sprawdzić inne "słynne" CMS, jak promienny, czy coś, aby zobaczyć, czy/jak to robią, osobiście. powodzenia.