Architecture design, separation of projects. Am I "over thinking"?

Imagine the following scenario:

You need to create a system in which the rear end will be separated from the Front End, which is always important when programming, of course. But what if you want to completely change the back without changing the front end?

When creating a large website, for example, I would go with the following projects:

Data - processes all data connections, that is, files generated by LINQ and other partial overrides.

Interfaces This level is interesting, is it an overflow? The separation of interfaces is due to the fact that there can be many common interfaces in the business logic and at the data level, and instead of referring to the data layer from the front, you can refer to the interface layer and then have the business logic sending you the interface instead to know about the correct classes and structure of data objects in the data layer.

Business logic . It speaks for itself, the business logic for the application.

Front End - a web interface, a graphical interface or something else is needed, of course, code.

My question is really, is layer overflow and thinking? Perhaps the interface layer is unimportant? Suggestions?

+3
source share
1 answer

An interface layer is only a layer in the sense that you define it separately from everything else. The interface, however, must define the boundary of the service, so it will not be populated with code.

I don’t see how you are going to go through an interface without defining an interface going through an interface that overloads him, I think.

Start with a simple set of interfaces if you want to go through the design first, but be prepared to expand them if you find that you did not think about every opportunity in front.

So you have

  • Data + Data interface
  • Business logic + interface
  • Frontend + graphical user interface

Where each layer uses and encapsulates the previous, to some extent. Actually there is no separate layer for interfaces, or what would you insert between layers? An interface simply means the boundary between two things, so use it as such.

It is very tempting to generalize and generalize, but then you just finish developing a new programming language or paradigm. In most cases, this is not part of the brief.

Short description! Of course we forgot it. Start with this, define your interfaces and start coding the simplest use case. Thoughts will develop as you move.

+3
source

All Articles