principles of modular website architecture design
This is a collection of links to articles that may be of interest to those who are looking to build large websites or CMS frameworks that can accommodate modular design.
MVC
Zend Framework and one of its suggestions for file system layout:
http://framework.zend.com/manual/en/zend.controller.html#zend.controller.quickstart.go.directory
and a structure to incorporate modules that use the framework:
http://framework.zend.com/manual/en/zend.controller.modular.html
One of the best explanations of the role of the Model (separation of concerns and the direction of flow of information) in the MVC pattern:
http://mail.python.org/pipermail/python-list/2006-January/360901.html
Another nice explanation of the Model in the MVC pattern that highlights the problems caused when users of Frameworks misunderstand its role:
Domain Driven Design (DDD)
And here are some more (realistic) thoughts about the Model in the MVC (which i have, often, found to be the ‘bit that gets skipped over’ whenever I have read about MVC). Here Federico Cargnelutti describes how Domain-driven design separates the model layer “M” of MVC into an application, domain and infrastructure layer.
http://blog.fedecarg.com/2009/03/11/domain-driven-design-and-mvc-architectures/
and while we are on that topic…
http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html
Also the book PHP 5 Objects, Pattens, and Practice by Matt Zandstra, (Apress) - covers the Application Domain in great detail with many code examples.
Here are some words from the King of DDD, Eric Evans, that identify the responsibilities of a module.
Domain Driven Design Book - chapter 5 , Modules / Packages
Modular Architecture
This is a great article that explains some principles of modular design :
http://blog.fedecarg.com/2008/06/28/a-modular-approach-to-web-development/
Real World Practical Examples
Wordpress Plugins
With zillions of downloads and a wealth of plugins available its worth looking into how they do it.
http://codex.wordpress.org/Writing_a_Plugin
Drupal
Drupal is built on modular principals - here’s an overview that offers inspiration.
http://drupal.org/getting-started/before/overview
General Component Concepts
I thought it was also be interesting to look into the Component Object Model (COM).
It is a system for creating components that can interact - so it makes sense to learn from it.
Of particular interest is the IUnknown interface that is commonly inherited by COM’s . As far as I can deduce, it has methods that allow clients to ‘ask a COM of its capabitiliies’ (QueryInterface) and register/de-register themselves as an instance-user of the COM (AddRef and Release).
Feel free to suggest more good articles & links of interest
Use the comments form below.