4

I am starting on a relatively large and ambitious ASP.NET MVC 3 project and just thinking about the best way to organize my code. The project is basically going to be a general management system that will be capable of supporting any type management system whether it be a blogging system, cms, reservation system, wikis, forums, project management system, etc…, each of them being just a separate 'module'. You can read more about it on my blog posted here : http://www.ryanzec.com/index.php/blog/details/8 (forgive me, the style of the site kinda sucks).

For those who don't want to read the long blog post the basic idea is that the core system itself is nothing more than a users system with an admin interface to manage the users system. Then you just add on module as you need them and the module I will be creating is a simple blog post to test it out before I move on to the big module which is a project management system.

Now I am just trying to think of the best way to structure this so that it is easy for users to add in there own modules but easy for me to update to core system without worrying about the user modifying the core code. I think the ideal way would be to have a number of core projects that user is specifically told not to modify otherwise the system may become unstable and future updates would not work. When the user wants to add in there own modules, they would just add in a new project (or multiple projects). The thing is I am not sure that it is even possible to use multiple projects all with their own controllers, razor view template, css, javascript, etc... in one web application. Ideally each module would have some of it own razor view templates, css, javascript, image files and also need access to some of the core razor view templates, css, javascript, image files which would is in a separate project.

It is possible to have 1 web application run off of controllers, razor view templates, css, javascript, image files that are store in multiple projects?

Is there a better was to structure this to allow the user to easily add in module with having to modify the core code?

6
  • 2
    I agree with @qes. You have plenty of ambition, and that's good; but you should take an agile approach and deliver one feature at a time. Don't promise a Swiss-army knife before you've even furnished a small blade.
    – Jim G.
    Apr 4, 2011 at 22:29
  • Another CMS? Check other open source CMSs.
    – Gulshan
    Apr 5, 2011 at 4:32
  • @jim - That is exactly how I am going to approach it. While I have a lot of idea of what I want to do, I am going to build it small piece by small piece.
    – ryanzec
    May 6, 2011 at 16:08
  • @Gulshan - First, this is not only going to be a CMS. Secondly, I am not a fan of any of the open source CMSs out there right now.
    – ryanzec
    May 6, 2011 at 16:10
  • so how'd this turn out for you? (I keep getting sporadic upvotes bringing me back here ;-) Oct 12, 2011 at 23:01

2 Answers 2

6

I am starting on a relatively large and ambitious ASP.NET MVC 3 project and just thinking about the best way to organize my code. The project is basically going to be a general management system that will be capable of supporting any type management system whether it be a blogging system, cms, reservation system, wikis, forums, project management system, etc…

Ambitious is an understatement, and from reading your linked blog post, it seems like you've focused more on what hip cool technologies you are going to use than exactly what it is your super-app is really going to do...

That said, the best thing I think you can do is carefully study Orchard's source code. It has achieved a high degree of modularity and is built on MVC3.

2
  • Thanks for the link. While some of the things I listed are pretty new (RavenDB, HTML5, CSS3) a lot of the things have been around in one form or another for a while now (REST, jQuery, TDD, MVC). I also know exactly what this app is and that is the foundation for any web application I want to build in the future. When I go to build my project management system, this code will be the start point. If I want to build a CMS, URL shortener, forum system, or whatever web application, this code will be the start point.
    – ryanzec
    Mar 16, 2011 at 11:12
  • 1
    5 months later I get an accept ... so .. how'd the project go? Aug 16, 2011 at 19:05
0

Wow...this was not an attempt to fund-raise, but I guess my post was deleted. My suggestion was (as someone who's checked out RavenDB): Check out MongoDB is you want speed....it's also free as opposed to Raven. The Newtonsoft.json (JSON.NET) library now lets you serialize objects to BSON so after you have your service setup it's as easy as grabbing objects out of a collection.

I also was going to link you to my site for an open source project I'm working on, but apparently people are super vigilant about that here...guess I have to understand, it's not my website.

1
  • While I am not ruling out the possibility of trying out other document databases, RavenDB so far has been very nice. Also to the point about pricing, the pricing itself is not that bad and I will be able to get a free server to start off with.
    – ryanzec
    Apr 6, 2011 at 19:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.