locked
Best way to approach modular development RRS feed

  • Question

  • User460266172 posted

    My application has to do with many areas and I wish to divide it into modules, but it's my very first time handling anything like this. I would appreciate any help as per tricks, tools, etc.

    Wednesday, February 20, 2013 3:54 AM

Answers

  • User1859182686 posted
    1. Plan ahead - think of the possible future needs and build your modules around it. This may mean breaking your application down into more granular function then you would normally for the first set of requirements.
    2. Reuse - for exampe if you end up building in access control and user permissions, do so in such a way that extending the available permissions is easy so future modules can leverage that effort.
    3. Interfaces - define interfaces and use them! Using interfaces opens the door to dependency injection and mocking. These techniques let you substitute in different module implementations as well as automate testing of those modules, without major architectural changes or rewrites.
    4. Seperation - Don't be scared off creating mutiple assemblies. I would create assemblies to hold you model and logic for each module. Also create seperate data access libraries and consider creating a service library for outsourcing all that controller code. As long as they are loosely coupled and logical and you stick to them, they won't cause you any harm.

     

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Wednesday, February 20, 2013 4:08 AM
  • User-2132746437 posted

    If you need a CMS tool  I would go with Sitefinity instead of DNN. Its easier to use, easier to create modules for, the admin portion is easier to use. I've built many sites (internal and external) using SiteFinity)

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Wednesday, February 20, 2013 7:51 AM

All replies

  • User1859182686 posted
    1. Plan ahead - think of the possible future needs and build your modules around it. This may mean breaking your application down into more granular function then you would normally for the first set of requirements.
    2. Reuse - for exampe if you end up building in access control and user permissions, do so in such a way that extending the available permissions is easy so future modules can leverage that effort.
    3. Interfaces - define interfaces and use them! Using interfaces opens the door to dependency injection and mocking. These techniques let you substitute in different module implementations as well as automate testing of those modules, without major architectural changes or rewrites.
    4. Seperation - Don't be scared off creating mutiple assemblies. I would create assemblies to hold you model and logic for each module. Also create seperate data access libraries and consider creating a service library for outsourcing all that controller code. As long as they are loosely coupled and logical and you stick to them, they won't cause you any harm.

     

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Wednesday, February 20, 2013 4:08 AM
  • User460266172 posted

    Thanks kidshaw. Very helpful. However, some folks around are advising me to use a CMS like DotNetNuke. They say it can greatly reduce the work I have to do. What do you say?

    Wednesday, February 20, 2013 4:37 AM
  • User-2132746437 posted

    If you need a CMS tool  I would go with Sitefinity instead of DNN. Its easier to use, easier to create modules for, the admin portion is easier to use. I've built many sites (internal and external) using SiteFinity)

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Wednesday, February 20, 2013 7:51 AM
  • User1859182686 posted

    I don't have experience of using third-party CMS tools like these. As I understand, they are more for engaging non-technical contributors to add content to your site.

    If that is in fact what you want - I've developed my own in the past but ultimately SharePoint was sufficient for my company's needs.

    If you are wanting modular software - such that you have a core set of features, but want to add whole units of functionality that enhance the core, I don't believe these tools are the way to go.

    I repeat, I haven't used them so there may be something I am missing, but it comes down to your meaning of modular.

    Wednesday, February 20, 2013 8:13 AM
  • User-2132746437 posted

    SharePoint can also be considered a "modular system" with the web parts. SharePoint can also be used by 'non technical contributors'. It comes down to what you really need the app to do for you.

    SharePoint is good, I also have SharePoint sites/apps out there using SharePoint.

    At the end of the day, it comes down to your business needs and requirements

    Wednesday, February 20, 2013 11:07 AM
  • User-37275327 posted

    If your application is internet/emcommerce oriented it is good to use a CMS, (DNN, SiteFinity, Kentico, nopCommerce)

    else better create your own.

    Wednesday, February 20, 2013 11:46 PM
  • User-2132746437 posted

    Does it have to be .NET based solution? If not, you can also look at Drupal or Drupal Commerce as well.

    Thursday, February 21, 2013 7:37 AM