Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3352764
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 18, 20262026-05-18T02:04:11+00:00 2026-05-18T02:04:11+00:00

We’re currently migrating our ASP Intranet to .NET and we started to develop this

  • 0

We’re currently migrating our ASP Intranet to .NET and we started to develop this Intranet in one ASP.NET website. This, however, raised some problems regarding Visual Studio (performance, compile-time, …).

Because our Intranet basically exists of modules, we want to seperate our project in subprojects in Visual Studio (each module is a subproject).
This raises also some problems because the modules have references to each other.
Module X uses Module Y and vice versa… (circular dependencies).

What’s the best way to develop such an Intranet?
I’ll will give an example because it’s difficult to explain.

We have a module to maintain our employees. Each employee has different documents (a contract, documents created by the employee, …).
All documents inside our Intranet our maintained by a document module.

The employee-module needs to reference the document-module.
What if in the future I need to reference the employee-module in the document-module?

What’s the best way to solve this?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-18T02:04:11+00:00Added an answer on May 18, 2026 at 2:04 am

    It sounds to me like you have two problems.

    First you need to break the business orientated functionality of the system down into cohesive parts; in terms of Object Orientated design there’s a few principles which you should be using to guide your thinking:

    • Common Reuse Principle
    • Common Closure Principle

    The idea is that things which are closely related, to the extent that ‘if one needs to be changed, they all are likely to need to be changed’.

    • Single Responsibility Principle

    Don’t try to have a component do to much.

    I think you also need to look at you dependency structure more closely – as soon as you start getting circular references it’s probably a sign that you haven’t broken the various “things” apart correctly. Maybe you need to understand the problem domain more? It’s a common problem – well, not so much a problem as simply a part of designing complex systems.

    Once you get this sorted out it will make the second part much easier: system architecture and design.

    Luckily there’s already a lot of existing material on plugins, try searching by tag, e.g:

    • https://stackoverflow.com/questions/tagged/plugins+.net
    • https://stackoverflow.com/questions/tagged/plugins+architecture

    Edit:

    Assets is defined in a different module than employees. But the Assets-class defines a property ‘AssignedTo’ which is of the type ‘Employee’. I’ve been breaking my head how to disconnect these two

    There two parts to this, and you might want to look at using both:

    • Using a Common Layer containing simple data structures that all parts of the system can share.
    • Using Interfaces.

    Common Layer / POCO’s

    POCO stands for “Plain Old CLR Objects”, the idea is that POCO’s are a simple data structures that you can use for exchanging information between layers – or in your case between modules that need to remain loosely Coupled. POCO’s don’t contain any business logic. Treat them like you’d treat the String or DateTime types.

    So rather than referencing each other, the Asset and Employee classes reference the POCO’s.

    The idea is to define these in a common assembly that the rest of your application / modules can reference. The assembly which defines these needs to be devoid of unwanted dependencies – which should be easy enough.

    Interfaces

    This is pretty much the same, but instead of referring to a concrete object (like a POCO) you refer to an interface. These interfaces would be defined in a similar fashion to the POCO’s described above (common assembly, no dependencies).

    You’d then use a Factory to go and load up the concrete object at runtime. This is basically Dependency Inversion.

    So rather than referencing each other, the Asset and Employee classes reference the interfaces, and concrete implementations are instantiated at runtime.

    This article might be of assistance for both of the options above: An Introduction to Dependency Inversion

    Edit:

    I’ve got the following method GetAsset( int assetID ); In this method, the property asset.AssignedTo (type IAssignable) is filled in. How can I assign this properly?

    This depends on where the logic sits, and how you want to architect things.

    If you have a Business Logic (BL) Layer – which is mainly a comprehensive Domain Model (DM) (of which both Asset and Employee were members), then it’s likely Assets and Members would know about each other, and when you did a call to populate the Asset you’d probably get the appropriate Employee data as well. In this case the BL / DM is asking for the data – not isolated Asset and Member classes.

    In this case your “modules” would be another layer that was built on top of the BL / DM described above.

    I variation on this is that inside GetAsset() you only get asset data, and atsome point after that you get the employee data separately. No matter how loosely you couple things there is going to have to be some point at which you define the connection between Asset and Employee, even if it’s just in data.

    This suggests some sort of Register Pattern, a place where “connections” are defined, and anytime you deal with a type which is ‘IAssignable’ you know you need to check the register for any possible assignments.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

No related questions found

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.