At work, a 3-layer-architecture is the go to whenever a web application is needed. I don't mind this, but many of the applications we start, do not seem to have an initial need for this. These applications are pretty much just a user interface to the database. This results in a ton of business logic that just sends the data from the data layer to the presentation layer. I have come up with an alternative, however I have not tried it yet. Normal 3-Layer-Architecture: (Arrows denote dependency)Updated design:Instead I can do this, allowing me to keep a layer of indirection, but by having it be only interfaces, the implementation cost (and chance of error) is lowered.Updated design, when business becomes relevant at a later stage:This would look similar to this:public class BusinessClass : IDataAccessInterface<string>{    public BusinessClass(IDataAccessInterface<string> dataRepository)    {        this.dataRepository = dataRepository;    }    public string Read()    {        var something = dataRepository.Read();        //Do something with something        return something;    }}And my DI would simply inject an implementation from the DataAccess implementation into my business class, and my business class into my presentation, which was already using the same interface.My question is:Are there drawbacks I am blind to?Do you use this approach (is it well spread)?Any other arguments I might bring with me to work?
An alternative to a 3-layer-architecture?
c#;design;layers