http://www.ilias.de/ios/docs/i3_layer-arch.png
I read that it's based on a multitier architecture, something like this
http://en.wikipedia.org/wiki/Multitier_architecture
Is it right? Where can I found other info or where can I start to read sure things about moodle system architecture? I've found this link
http://docs.moodle.org/en/Developer_documentation
and I've read all in this page, but nothing in this page can help me. I hope you can do it!
Thanks, bye.
OK enough cynicism. This is a frequenly asked question, so here is an answer:
My vocabulary comes from Patterns of Enterprise Application Architecture, by Martin Fowler. (A good read, despite the above cynicism.)
Moodle uses a Transction Script architecture with Page Controllers because it is simple, and makes plugging in new funcitonality trivial. This is backed up by extensive libraries to provide consistent functionality between different pages - many Moodle-specific libraries, which are built on top ot the already very rich PHP and 3rd party libraries.
We use Template View, because PHP is a templating language. The Moodle libraries weblib, tablelib and formslib use Two Step View for rendering more complicated content into the template.
Moodle can be configured to use either Server Session State or Database Session State for persistence between requests.
In most cases, Moodle does not abstract the structure of the database with a layer of code beyond the trivial Record Set, which in Moodle is implemented in dmllib. (However it does have a database abstraction layer to abstract the differences in SQL syntax and functionality between different relational databse engines, and to simplify the application code.) We find that direct access to the database gives the best performace in most cases. However, in a few or the more recent, more sophisticated, areas of the code (for example Roles and Capabilites system, and the new Gradebook) we are starting to see patters like Table Data Mapper and Row Data Mapper. This is an advantage of a loosely coupled Transction Script archtecture, you can make the most appropriate design decisions in each module.
When will people learn that this is an almost entirely meaningless question? The only reason most people want to know words like 'multitier architecture' is to put into flashy powerpoint presentations to impress gullible CIOs who don't understand the technology they are buying. (Or becuase they are students, and their teacher expects them to use such words in thier homework.)
200% in agreement. Actually, I did an extensive analysis of Ilias, ATutor and Moodle (back in those days...), and was initially very impressed with the neat pictures Ilias has.
But part of the analysis was to find a bug ,fix it and post the patch in the 3 LMSs -- in order to understand how it is to work with each codebase.
The Ilias3 codebase had the nicer picture, and was by far the worst to figure out. Spaghetti classes inheriting willy nilly. A simple enough security bug (fail to escape backticks in uploaded filename leading to execution) and I could not figure out where the upload was being handled.
Can't recommend that code. In fact, experience is that if there's a nice picture, its so that people don't look at the code
to greg: his definition is too short to write in a thesis...don't u think?
I'd like to say only that a forum means HELP and not DEBATE on question before help, your answer can block a newbie to ask for new question...this isn't my case, I'm not blocked, but your attitude isn't right to me.
Anyway, thanks for your help and next time...with a newbie...be less aggressive
next time...with a newbie...be less aggressive
And next time, with an assignment, do your own research.
This should be a FAQ we can point to without getting to annoyed: if you are doing an assignment, don't ask for us to answer your questions. Go and research. And ask some interesting questions if needed, after trying a few things...