masel
31.05.2006, 09:48:01
Może ktoś z szanownych użytkowników budował aplikacje w oparciu o moduły
Potrzebuję założeń teoretycznych i jak to możliwe jakiś przykładów
Aplikacja, jaką projektuje opiera się na bazie danych
Problem to sprawa, jakie usługi powinny być w silniku a jakie w opcjonalnych modułach
Prph
31.05.2006, 10:06:44
Witam,
To zalezy o jakie moduly Ci chodzi. W sumie to nie ma jakiegos okreslonego podejscia do tej sprawy.
Piszac jadro, framework lub jak to nazwiemy, tworzymy dobra aplikacje modularna.
Jestem w trakcie pisania frameworka opartego na ideologii MVC. Kazdy, kto pisal frameworki MVC wie, ze calosc zbudowana jest z modulow. Akcje (czyli zdarzenia - np DodajNowosc, ZalogujUzytkownika) dziedzicza po klasie bazowej dla akcji, ktora sama juz w sobie udostepnia interfejs.
Klasy korzystajac ze zrodel danych (np baz danych) uzywaja tzw. Modeli (nazwa w terminologii MVC - klasa udostepniajaca dane). Model posiada swoj interfejst (najczesniej interfejsny dwoch innych modeli sa zupelnie rozne).
Przyklad: Model dla Nowosci. Moze zawierac takie metody, jak pobierzListe(), pobierzJeden($id) itp.
Akcja tworzy sobie model, wywyluje np pobierzListe(), a z tym rtobi co jej sie podoba.
Model z kolei potrzebuje dostepu do zrodla danych. Dlatego np model tez moze dziedziczyc po bazowej klasie (chociaz wiele osob twierdzi, ze nie powinno sie tego stosowac). Taka klasa bazowa moze udostepniac np. polaczenie z baza danych dla Modelu.
Baza danych z kolei moze byc czesto wykorzystywana w aplikacji. Mozna wiec pokusic sie o klase obslugujaca baze, udostepniajac metody typu query, update, insert, dzieki czemu mozna ulatwic konstruowanie dlugich zapytan do bazy (np dla update tworzyc tablice (pole, wartosc), przekazac ja do metody update, a ta juz sama ulozy zapytanie i wykona je w bazie).
Podsumowujac: Piszac modularna aplikacje zwyczajnie podziel ja na kawalki kodu - w programowaniu obiektowym wydaje sie to duzo latwiejsze. Aby zachowac spojnosc aplikacji - uzyj interfejsow i wymus aby poszczegolne czesci aplikacji byly zgodne z ustalonym interfejsem (np. aby zapewnic ze kazda baza danych posiada metode query).
Troche sie rozpisalem, ale mam nadzieje, ze chociaz troche pomoglem.
Adrian.
bigZbig
31.05.2006, 10:24:39
To co wspolne w silniku, a to co szczegolne w modulach. To jest ogolna zasada, problem tylko w tym, ze czasto trudono odroznic jedno od drugiego. Poza tym istnieje jeszcze jeden problem. Im bardziej modularna budowa tym wiecej zdublowanego kodu i trudnosc z zachowaniem integralnosci, ale z drugiej strony wieksza elastycznosc i latwosc uzycia danego modulu w innym projekcie. Trzeba zachowac rozsadek bo mozna przeciez do wyswietlenia newsow uzyc smarty, a do artykulow innego systemu szablonow. Mozna zbudowac taki framework aby umozliwial kozystanie w jednym miejscu z adodb a w innm z opd, ale lepiej przyjac jeden sposob, otwierac jedno polaczenie z baza danych zamiast kilku itd.
masel
31.05.2006, 10:50:00
Dzieki właśnie o to mi chodziło
Jest idea teraz czas zabrać się do pracy