views:

50

answers:

1

Hello I have been tasked with creating a fairly complex web application in php, it is to be a custom CMS that would be able to replicate the functionality and features provided by well known content management systems like WordPress, Joomla or Drupal. I am to try and integrate as much of the functionality that these well known and powerful systems provide into my application. And off course one other condition i am to comply is to build everything from scratch.

I am inclined to go for the mvc pattern design in building the main app. Tho i haven't used this design on projects of this scale before.

My question therefor is destined to those of you who have used mvc in large-scale complex applications. And i would like to know if this is in fact the right approach and what are the pitfalls that i might come across in a project of this scale. I would also like tho know if any of you that have created a fairly complex cms using a different approach and how would you structure such an application

Thank You!

+1  A: 

Personally, I'd vouch for a Model-View-Controller-type CMS above anything else (especially if you're the one developing both the CMS and projects based on it), but the complexity of the actual business separation might have no impact on your overall application design.

For instance...

  • Are you planning to use a RDBMS or any other kind of persistence? Is the usage of an ORM desired/necessary/over-complicated?
  • Will you use some kind of framework or third-party libraries/tools to help developing this CMS (from scratch is a fairly ambiguous word)
  • Does it need some kind of admin interface, modules or plugins perhaps?
  • Would pure-php templates/views/layouts suffice for your daily work or do you require a complex templating engine (Smarty, Dwoo, etc.)?
  • Would this CMS cover high-traffic sites, are different kinds of back-/front-end caches required?
  • Will you be handling secure data?
  • Would a potential feature involve manipulating images or other media?
  • Will you host this CMS yourself or will it sit on, but not limited to, Medium-Trust hosting?

To summarize, a MVC architecture is merely a baseline as to how you separate different concerns when creating new features (writing code) with Business Value - creating new forms, lists, workflows, navigational structures, aggregates, etc. However, the actual architecture of your Application (CMS) depends on how and who will be using it, secondary to the factor of your development team's size and experience.

Denis 'Alpheus' Čahuk