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:

http://blog.astrumfutura.com/archives/373-The-M-in-MVC-Why-Models-are-Misunderstood-and-Unappreciated.html

see The History of the MVC

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.

Leave a Reply